커뮤니티
예스스팟 Q&A
답변완료
OrderResponse 질문입니다.
주문응답 후, OrderResponse에서 주문 성공 여부를 확인을 하려고 합니다.
동시호가 상태에서 주문하는 경우 때문에, 체결통보(NotifyFill) 에선 확인이 불가능합니다.
주문이 성공적으로 성공한 경우 확인방법이나,
성공했을경우의 OrderResponse.error 값이 어떻게 되나요?
2014-04-06
1036
글번호 222914
답변완료
선물과 등가옵션으로...
안녕하세요
1. 선물 시초가나 예상가를 기준으로 당일의 등가 콜풋옵션을 확장챠트로 만들고 싶습니다.
전의 질문란에 올려져 있는 것을 참조로 만들어 보았는데..
콜과 풋의 등가옵션이 그날그날 바뀌지 않겨 조회 처음부터 연결이 되어 있네요.
위의 그림은 오늘(4.3)의 시초가 기준,
2월 28일은 선물 시초가 257.8인 257.5 양옵션의 기준이 되어야 하는데...
시뮬레이션 항목의 시가기준 ATM을 만들고 싶습니다
해결방법을 좀 알려주세요
감사합니다.
옵션객체
종목객체.MarketData1
var Start;
var CallATM; var PutATM;
var OrderCode;
var MarketData1;
//스팟 시작시에
function Main_OnStart()
{
Start = 0;
OrderCode = Main.GetOrderCode(MarketData1.code);
//날자 및 시계계산
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
//코스피200선물에 가장 가까운 콜/풋 종목 선정
var var1 = MarketData1.current;//expectedPrice
var var2 = parseInt(var1/10)*10;
var var3 = var1%10;
var ATM = -1;
if (var3 >= 8.75)
ATM = var2+10;
else if (var3 < 8.75 && var3 >= 6.25)
ATM = var2+7.5;
else if (var3 < 6.25 && var3 >= 3.75)
ATM = var2+5.0;
else if (var3 < 3.75 && var3 >= 1.25)
ATM = var2+2.5;
else
ATM = var2+0.0;
if (Start == 0 && HHMMSS >= 090000)
{
var UNum = Option.uppersATM;
var LNum = Option.lowersATM;
CallATM = -1;
for (var i = -LNum; i <= UNum; i++)
{
if (Option.GetExercisePrice(0, i) == ATM)
CallATM = Option.GetATMCallRecent(i);
}
PutATM = -1;
for (var i = -UNum; i <= LNum; i++)
{
if (Option.GetExercisePrice(1, i) == ATM)
PutATM = Option.GetATMPutRecent(i);
}
Main.MessageList("콜ATM",CallATM ,"풋ATM",PutATM);
//확장 차트객체 요청
var ChartSet3 = new ReqChartItem("00000000",60, CHART_PERIOD_TICK, 5000, CHART_REQCOUNT_BAR, false, false);
//시스템 설정
var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,1, 10000000,1, // 자산
0.003, 0.003,CALCMETHOD_PERCENT, // 진입/청산 수수료
0.05, 0.05,CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
1000, //1000, // 최대진입수량
10); // 최대진입횟수
var SystemSet3 = new SystemInfo("OpFuture",YL_TYPE_NORMAL,null,TradeSet,null);
//참조데이터 추가
var R11 = new ReqChartItem(CallATM, 60, CHART_PERIOD_TICK, 5000, CHART_REQCOUNT_BAR, false, false);
var R12 = new ReqChartItem(PutATM, 60, CHART_PERIOD_TICK, 5000, CHART_REQCOUNT_BAR, false, false);
var ReferDataSet3 = new Array(R11,R12);
//지정한 설정으로 챠트 생성을 요청
Main.ReqChartEx(ChartSet3,SystemSet3,null,ReferDataSet3);
}
}
//요청한 차트객체 생성이 완료되면
function Main_OnRcvChartEx(ChartEx)
{
if ( ChartEx.GetCode(1) == OrderCode.code)
{
ChartEx3 = ChartEx;
Start = 1;
}
}
2014-04-05
1059
글번호 222913
답변완료
질문요..
종목 객체 를 연결선물로 지정하고 function Main_OnUpd-ateMarket(sItemCode, lUp-dateID)
bidamount 를 메세지로그 하니 주식만 가능하다고 하는군요.
선물 호가 잔량을 로그로 보려면 어떻게 해야하나요... 1호가 2호가 이렇게 나누어서 보고싶습니다.
2014-04-03
924
글번호 222910
nadogaja 님에 의해서 삭제되었습니다.
2014-04-03
0
글번호 222908
nadogaja 님에 의해서 삭제되었습니다.
2014-04-03
5
글번호 222907
마루아빠 님에 의해서 삭제되었습니다.
2014-04-02
4
글번호 222906
마루아빠 님에 의해서 삭제되었습니다.
2014-04-02
0
글번호 222905
답변완료
지금 예스 스팟 옵션 객체가 사용이 되나요?
Option.GetATMCallRecent
Option.GetCurrent
함수를 사용해서 불러와도 공백 데이터가 오네요.
현재 사용 가능한가요?
2014-04-02
614
글번호 222904
확장챠트에서 시스템 설정에 문제가 있는지...
수고하십니다.
1. 지난번의 답변 감사합니다
3.시험가동에선 주문가격이 1.-2147483648 으로 이상하게 나오고 체결가격은 실체결에서만
나오는 건지 궁금합니다.
5. 예스랭기지 시스템에서의 한두종류의 신호와 수량을 스팟에서 이용하고 싶은데,
가능한 방법은 있는지요?
점검좀 부탁드립니다
감사합니다
var Start;
var UNum; var LNum;
var CallCode; var CallPrice;
var PutCode; var PutPrice;
var CC; var PP;
var CallOrderCode; var PutOrderCode;
var vol1;var vol3;
var vol2;var vol4;
var CallStart;
var PutStart;
var ChartEx1 = null;
var ChartEx2 = null;
function Main_OnStart()
{
Start = 0;
vol1 = 0;
vol2 = 0;
CallStart = 0;
PutStart = 0;
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
//9시 5분에
if (Start == 0 && HHMMSS >= 085500)// && HHMMSS >= 90030
{
Start = 1;
UNum = Option.uppersATM;
LNum = Option.lowersATM;
CallCode = new Array(UNum+LNum+1);
PutCode = new Array(UNum+LNum+1);
CallPrice = new Array(UNum+LNum+1);
PutPrice = new Array(UNum+LNum+1);
for (var i = -LNum; i <= UNum; i++)
{
CallPrice[i+LNum] = Math.abs(Option.GetExpectedPrice(0, i)-2.3);
CallCode[i+LNum] = Option.GetATMCallRecent(i);
}
CC = 99999999;
// CallOrderCode = -1;
for (var i = -LNum; i <= UNum; i++)
{
if (CallPrice[i+LNum] < CC)
{
CC = CallPrice[i+LNum];
CallOrderCode = CallCode[i+LNum];
}
if (CallOrderCode == CallCode[i+LNum])
{
CallOrderCode1 = CallCode[i+LNum-1];
CallOrderCode2 = CallCode[i+LNum+1];
CallOrderCode3 = CallCode[i+LNum+2];
}
}
for (var ii = -UNum; ii <= LNum; ii++)
{
PutPrice[ii+UNum] = Math.abs(Option.GetExpectedPrice(1, ii)-2.3);
PutCode[ii+UNum] = Option.GetATMPutRecent(ii);
}
PP = 99999999;
// PutOrderCode = -1;
for (var ii = -UNum; ii < LNum; ii++)
{
if (PutPrice[ii+UNum] <= PP)
{
PP = PutPrice[ii+UNum];
PutOrderCode = PutCode[ii+UNum];
}
if (PutOrderCode == PutCode[ii+UNum])
{
PutOrderCode1 = PutCode[ii+UNum-1];
PutOrderCode2 = PutCode[ii+UNum+1];
PutOrderCode3 = PutCode[ii+UNum+2];
PutOrderCode4 = PutCode[ii+UNum+3];
}
}
Main.MessageList("콜",CallOrderCode ,"풋",PutOrderCode);
//확장 차트객체 요청
var ChartSet1 = new ReqChartItem(CallOrderCode,60, CHART_PERIOD_TICK, 1200, CHART_REQCOUNT_BAR, false, false);
var ChartSet2 = new ReqChartItem(PutOrderCode,60, CHART_PERIOD_TICK, 1200, CHART_REQCOUNT_BAR, false, false);
//시스템 설정
var TradeSet = new SystemTradeInfo(TRADE_FIXCAPITAL,1, 10000000,1, // 자산
0.07, 0.07,CALCMETHOD_PERCENT, // 진입/청산 수수료
0.01, 0.01,CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부
1000, //1000, // 최대진입수량
10); // 최대진입횟수
var StopSet = new SystemStopInfo(new StopEndOfDay(150300));
var SystemSet1 = new SystemInfo("OpCall",YL_TYPE_NORMAL,null,TradeSet,null);
//참조데이터 추가
var R11 = new ReqChartItem(PutOrderCode, 60, CHART_PERIOD_TICK, 1000, CHART_REQCOUNT_BAR, false, false);
var R12 = new ReqChartItem(PutOrderCode1, 20, CHART_PERIOD_TICK, 1200, CHART_REQCOUNT_BAR, false, false);
var R13 = new ReqChartItem(PutOrderCode2, 60, CHART_PERIOD_TICK, 800, CHART_REQCOUNT_BAR, false, false);
var R14 = new ReqChartItem(CallOrderCode1, 20, CHART_PERIOD_TICK, 1000, CHART_REQCOUNT_BAR, false, false);
var R15 = new ReqChartItem(CallOrderCode2, 60, CHART_PERIOD_TICK, 800, CHART_REQCOUNT_BAR, false, false);
var R16 = new ReqChartItem("00000000", 60, CHART_PERIOD_TICK, 1500, CHART_REQCOUNT_BAR, false, false);
var R17 = new ReqChartItem(PutOrderCode3, 60, CHART_PERIOD_TICK, 600, CHART_REQCOUNT_BAR, false, false);
var R18 = new ReqChartItem(PutOrderCode4, 60, CHART_PERIOD_TICK, 600, CHART_REQCOUNT_BAR, false, false);
var R19 = new ReqChartItem(CallOrderCode3, 60, CHART_PERIOD_TICK, 600, CHART_REQCOUNT_BAR, false, false);
//var R20 = new ReqChartItem("EI735", 60, CHART_PERIOD_TICK, 1000, CHART_REQCOUNT_BAR, false, false);
var ReferDataSet1 = new Array(R11,R12,R13,R14,R15,R16,R17,R18,R19);
//지정한 설정으로 챠트 생성을 요청
Main.ReqChartEx(ChartSet1,SystemSet1,null,ReferDataSet1);
}
}
//요청한 차트객체 생성이 완료되면
function Main_OnRcvChartEx(ChartEx)
{
if ( ChartEx.GetCode(1) == CallOrderCode)
{
ChartEx1 = ChartEx;
CallStart = 1;
Main.MessageList("C코드",ChartEx1.GetCode(1));
}
}
//확장차트에서 신호나오면 주문
function Main_OnRiseSignal(ChartEx1, Signal)
{
//콜차트
if (CallStart == 1 && ChartEx1.GetCode(1) == CallOrderCode)
{
if (Signal.signalKind == 1)
{
vol1 = Math.abs(Signal.count);
Account1.OrderBuy(Signal.code,vol1,Option.GetAskByCode(Signal.code,0),0);
Main.MessageList("콜매수 : ", CallOrderCode);
}
if (Signal.signalKind == 2)
{
vol2 = Math.abs(Signal.count);
//PutOrderCode 종목 잔고 셋팅
Account1.SetBalanceItem(Main.GetOrderCode(CallOrderCode), 0);
//잔고수량이 0이상이고 매수포지션이면
if(Account1.Balance.count >= vol2 && Account1.Balance.code == Main.GetOrderCode(CallOrderCode)
&& Account1.Balance.position == 2)
{
//잔고수량과 진입수량 중 작은 값으로 청산실행
// Account1.OrderSell(Main.GetOrderCode(CallOrderCode), Math.max(Account1.Balance.count,vol2),Option.GetBidByCode(Main.GetOrderCode(CallOrderCode), 0), 0);
Account1.OrderSell(Signal.code,vol2,Option.GetBidByCode(Signal.code,0),0);
}
if(Account1.Balance.count < vol2 && Account1.Balance.position == 2)
{
//잔고수량과 진입수량 중 작은 값으로 청산실행
Account1.OrderSell(Main.GetOrderCode(CallOrderCode), Math.min(Account1.Balance.count,vol2),Option.GetBidByCode(CallOrderCode, 0), 0);
}
}
}
}
2014-04-05
731
글번호 222901
답변완료
문의드립니다.
항상 답변감사합니다.
예스스팟식부탁드립니다.
시스템신호에 따라서 옵션매수,매도 1계약씩 체결되도록 하고싶습니다.
시스템은 리버스 매수매도신호만 있는 시스템입니다.
복합차트로 주간과야간 매매신호가 발생합니다.
조건 시스템신호에 따라
매수신호시 옵션 가격 1~1.5 가격중 큰가격 콜옵션매수1계약(풋옵션매수종목은 청산)
매도신호시 옵션 가격 1~1.5 가격중 큰가격 풋옵션매수1계약(콜옵션매수종목은 청산)
당월물 옵션매수는 당월물옵션 시작일부터 그달 말일까지는 당월물옵션만거래
차월물 옵션매수는 옵션만기가 있는달 1일부터 옵션만기시까지는 차월물옵션만거래.
야간장에는 야간선물시간과 야간옵션시간차이가 나는데요... 이때 선물 매수매도신호가나왔다면 야간종료시에 매수신호가 나온건..옵션으로 매수가 안될경우
그담날 시초에 옵션매수가 되도록 부탁드립니다. 즉 옵션거래가 가능한 시간에 매수신호시에
매수가 진입되도록 하였으면 좋겠습니다.
2014-04-01
583
글번호 222898