안녕하세요
예스스탁입니다.
아래 내용을 참고하시기 바랍니다.
진입주문시 반대포지션 청산 주문이 체결이 안되어 있으면
대기하다가 청산주문 전량체결이 되면 주문이 집행됩니다.
var OC,MK;
var BID,BXID,SID,SXID;
var BXnum,SXnum,BXfill,SXfill;
var BV,SV,BuyWait,SellWait;
function Main_OnStart()
{
OC = Main.GetOrderCode(Chart1.GetCode(1));
Main.ReqMarketData(OC);
//스팟 시작시는 직전 청산주문이 없으므로
// 체결여부 체크변수는 true
BXfill = true;
SXfill = true;
}
function Main_OnRcvMarketData(MarketData)
{
if (MarketData.code == OC)
{
MK = MarketData;
}
}
function Chart1_OnRiseSignal(Signal)
{
if (Signal.signalKind == 1)
{
BV = Signal.count;
//매도청산주문 체결상태이면 바로 주문
if (SXfill == true)
{
BID = Account1.OrderBuy(OC, BV, MK.Ask(3),0);
BuyWait = false;
}
else
{
//미체결상태이면 대기
BuyWait = true;
}
}
if (Signal.signalKind == 2)
{
BXID = Account1.OrderSell(OC, 1, MK.Bid(3),0);
BXfill = false;
}
if (Signal.signalKind == 3)
{
SV = Signal.count;
//매수청산주문 체결상태
if (BXfill == true)
{
SID = Account1.OrderSell(OC, SV, MK.Bid(3),0);
SellWait = false;
}
else
{
//미체결상태이면 대기
SellWait = true;
}
}
if (Signal.signalKind == 4)
{
SXID = Account1.OrderBuy(OC, 1, MK.Ask(3),0);
SXfill = false;
}
}
function Main_OnOrderResponse(OrderResponse)
{
if (OrderResponse.orderID == BXID)
{
BXnum = OrderResponse.orderNum;
}
if (OrderResponse.orderID == SXID)
{
SXnum = OrderResponse.orderNum;
}
}
function Main_OnNotifyFill(NotifyFill)
{
if (NotifyFill.orderNum == BXnum)
{
Account1.SetUnfill(BXnum);
if (Account1.Unfill.count == 0)
{
BXfill = true;
if (SellWait == true)
{
SID = Account1.OrderSell(OC, SV, MK.Bid(3),0);
SellWait = false;
}
}
}
if (NotifyFill.orderNum == SXnum)
{
Account1.SetUnfill(SXnum);
if (Account1.Unfill.count == 0)
{
SXfill = true;
if (BuyWait == true)
{
BID = Account1.OrderBuy(OC, BV, MK.Ask(3),0);
BuyWait = false;
}
}
}
}
즐거운 하루되세요