예스스탁
예스스탁 답변
2018-08-01 15:40:44
안녕하세요
예스스탁입니다.
관리메뉴의 환경설정에서
예스스팟 옵션데이터(옵션객체) 사용여부에 사용으로 선택되어 있어야
옵션객체에 데이터가 제공됩니다.
기본설정은 부하를 줄이기 위해 미사용으로 객체에 데이터가 제공되지 않습니다.
즐거운 하루되세요
> feelkdn 님이 쓴 글입니다.
> 제목 : 문의드립니다
> 안녕하세요
현재 예스스팟을 사용하여 시험주문을 넣어보고있습니다.
아래와 같은 코드로 주문을 넣고있는데
옵션종목 매도면 GetBidByCode 를 사용하고 옵션종목 매수면 GetAskByCode를 사용하고있습니다
예)
var BxCallPrice = Option1.GetBidByCode(buycallcode,5);
var BxPutPrice = Option1.GetAskByCode(buyputcode,5);
Account1.OrderSell(buyputcode, putQuantity, BuyPutPrice, 1);
첨부파일에도 보시면 아시겠지만 주문가격이 모두 0.00으로 표기되고있고 주문상태는 오류발생으로 표기되고있습니다.
다른 곳에서는 주문상태는 시험적용으로 되어있는데 주문가격은 0.00으로 표기가 되고있습니다.
저함수를 써서 주문을 넣었는데 왜 주문상태에서는 0.00으로 표기되는지 궁금합니다
var Start
var buycallcode
var buyputcode
var sellcallcode
var sellputcode
var UNum; var LNum;
var CallCode; var CallPrice;
var PutCode; var PutPrice;
var CC; var PP;
var callQuantity; var putQuantity;
var buyQuantity = 3000000;
var sellQuantity = 1;
function Main_OnStart()
{
Main.MessageLog("시작");
Start = 1;
}
function Chart1_OnRiseSignal(Signal)
{
Main.MessageLog("신호완성/" + Signal.signalKind);
//매수진입
if(Signal.signalKind ==1)
{
UNum = Option1.uppersATM;
LNum = Option1.lowersATM;
CallPrice = new Array(UNum + LNum + 1);
CallCode = new Array(UNum + LNum + 1);
PutPrice = new Array(UNum + LNum + 1);
PutCode = new Array(UNum + LNum + 1);
for(var i = -LNum; i <= UNum; i++)
{
if(Option1.GetCurrent(0,i) <= 2.0)
{
CallPrice[i+LNum] = Option1.GetCurrent(0, i);
CallCode[i+LNum] = Option1.GetATMCallRecent(i);
}
else
{
CallPrice[i+LNum] = -1;
CallCode[i+LNum] = -1;
}
}
for (var ii = -UNum; ii <= LNum; ii++)
{
if (Option1.GetCurrent(1, ii) <= 2.5)
{
PutPrice[ii+UNum] = Option1.GetCurrent(1, ii);
PutCode[ii+UNum] = Option1.GetATMPutRecent(ii);
}
else
{
PutPrice[ii+UNum] = -1;
PutCode[ii+UNum] = -1;
}
}
CC = -1;
buycallcode = -1;
for (var iii = -LNum; iii <= UNum; iii++)
{
if (CallPrice[iii+LNum] > CC)
{
CC = CallPrice[iii+LNum];
buycallcode = CallCode[iii+LNum]
}
}
PP = -1;
buyputcode = -1;
for (var iiii = -UNum; iiii <= LNum; iiii++)
{
if (PutPrice[iiii+UNum] > PP)
{
PP = PutPrice[iiii+UNum];
buyputcode = PutCode[iiii+UNum];
}
}
Start = 1;
var BuyCallPrice = Option1.GetAskByCode(buycallcode,5);
callQuantity = Math.round(buyQuantity / BuyCallPrice / 250000);
Account1.OrderBuy(buycallcode, callQuantity, BuyCallPrice, 1);
var BuyPutPrice = Option1.GetBidByCode(buyputcode,5);
putQuantity = sellQuantity;
Account1.OrderSell(buyputcode, putQuantity, BuyPutPrice, 1);
Main.MessageLog("선물매수");
}
//매수청산
if(Start == 1 && Signal.signalKind == 2)
{
var BxCallPrice = Option1.GetBidByCode(buycallcode,5);
var BxPutPrice = Option1.GetAskByCode(buyputcode,5);
Account1.OrderSell(buycallcode, callQuantity, BxCallPrice, 1);
Account1.OrderBuy(buyputcode, putQuantity, BxPutPrice, 1);
Main.MessageLog("선물매수청산");
}
//매도진입
if(Signal.signalKind ==3)
{
UNum = Option1.uppersATM;
LNum = Option1.lowersATM;
CallPrice = new Array(UNum + LNum + 1);
CallCode = new Array(UNum + LNum + 1);
PutPrice = new Array(UNum + LNum + 1);
PutCode = new Array(UNum + LNum + 1);
for(var i = -LNum; i <= UNum; i++)
{
if(Option1.GetCurrent(0,i) <= 2.0)
{
CallPrice[i+LNum] = Option1.GetCurrent(0, i);
CallCode[i+LNum] = Option1.GetATMCallRecent(i);
}
else
{
CallPrice[i+LNum] = -1;
CallCode[i+LNum] = -1;
}
}
for (var ii = -UNum; ii <= LNum; ii++)
{
if (Option1.GetCurrent(1, ii) <= 2.5)
{
PutPrice[ii+UNum] = Option1.GetCurrent(1, ii);
PutCode[ii+UNum] = Option1.GetATMPutRecent(ii);
}
else
{
PutPrice[ii+UNum] = -1;
PutCode[ii+UNum] = -1;
}
}
CC = -1;
buycallcode = -1;
for (var iii = -LNum; iii <= UNum; iii++)
{
if (CallPrice[iii+LNum] > CC)
{
CC = CallPrice[iii+LNum];
buycallcode = CallCode[iii+LNum]
}
}
PP = -1;
buyputcode = -1;
for (var iiii = -UNum; iiii <= LNum; iiii++)
{
if (PutPrice[iiii+UNum] > PP)
{
PP = PutPrice[iiii+UNum];
buyputcode = PutCode[iiii+UNum];
}
}
Start = 1;
var BuyCallPrice = Option1.GetBidByCode(buycallcode,5);
callQuantity = sellQuantity;
Account1.OrderSell(buycallcode, callQuantity, BuyCallPrice, 1);
var BuyPutPrice = Option1.GetAskByCode(buyputcode,5);
putQuantity = Math.round(buyQuantity / BuyPutPrice / 250000);
Account1.OrderBuy(buyputcode, putQuantity, BuyPutPrice, 1);
Main.MessageLog("선물매도");
}
//매도청산
if(Start == 1 && Signal.signalKind == 4)
{
var BxCallPrice = Option1.GetAskByCode(buycallcode, 5);
Account1.OrderBuy(buycallcode, callQuantity, BxCallPrice, 1);
var BxPutPrice = Option1.GetBidByCode(buyputcode,5);
Account1.OrderSell(buyputcode, putQuantity, BxPutPrice, 1);
Main.MessageLog("선물매도청산");
}
}