예스스탁
예스스탁 답변
2025-04-07 15:34:25.0
안녕하세요
예스스탁입니다.
1
계좌함수 중에 주문번호등으로 미체결객체를 셋팅하는 함수가 있습니다.
주문후 주문응답이 들어오면 주문번호 저장해서 해당 주문번호로 3초뒤 미체결 확인해서
정정하거나 취소후 시장가로 주문내게 구현하시면 됩니다.
아래 가이드 수식내용 참고하시기 바랍니다.
var S,OrderCode;
var BEID,BENm,BECNT,BECID;
var BXID,BXNm,BXCNT,BXCID;
var SEID,SENm,SECNT,SECID;
var SXID,SXNm,SXCNT,SXCID;
function Main_OnStart()
{
Main.MessageList("Start");
OrderCode = Main.GetOrderCode(C1.GetCode(1));
}
function C1_OnRiseSignal(Signal)
{
if (Signal.signalKind == 1)
{
BEID = Account1.OrderBuy(OrderCode,1,Signal.price,2);
Main.SetTimer(1, 3000);
BECNT = 0;
Main.MessageList("매수진입주문");
}
if ( Signal.signalKind == 2)
{
BXID = Account1.OrderSell(OrderCode,1,Signal.price,2);
Main.SetTimer(2, 3000);
BXCNT = 0;
Main.MessageList("매수청산주문");
}
if (Signal.signalKind == 3)
{
SEID = Account1.OrderSell(OrderCode,1,Signal.price,2);
Main.SetTimer(3, 3000);
SECNT = 0;
Main.MessageList("매도진입주문");
}
if ( Signal.signalKind == 4)
{
SXID = Account1.OrderBuy(OrderCode,1,Signal.price,2);
Main.SetTimer(4, 3000);
SXCNT = 0;
Main.MessageList("매도청산주문");
}
}
function Main_OnOrderResponse(OrderResponse)
{
if (OrderResponse.orderID == BEID)
{
BENM = OrderResponse.orderNum;
}
if (OrderResponse.orderID == BXID)
{
BXNM = OrderResponse.orderNum;
}
if (OrderResponse.orderID == SEID)
{
SENM = OrderResponse.orderNum;
}
if (OrderResponse.orderID == SXID)
{
SXNM = OrderResponse.orderNum;
}
if (OrderResponse.orderID == BECID)
{
Account1.OrderBuy(OrderCode,1,0,1);
Main.MessageList("매수진입 시장가주문");
}
if (OrderResponse.orderID == BXCID)
{
Account1.OrderSell(OrderCode,1,0,1);
Main.MessageList("매도청산 시장가주문");
}
if (OrderResponse.orderID == SECID)
{
Account1.OrderSell(OrderCode,1,0,1);
Main.MessageList("매도진입 시장가주문");
}
if (OrderResponse.orderID == SXCID)
{
Account1.OrderBuy(OrderCode,1,0,1);
Main.MessageList("매도청산 시장가주문");
}
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
Account1.SetUnfillOrderNumber(BENM)
BECNT = BECNT+1;
if (BECNT == 1)
{
var RePrice = MarketData1.current - MarketData1.GetTickSize()*1;
if (Account1.Unfill.count > 0)
{
if (RePrice != Account1.Unfill.price)
{
BEID = Account1.OrderReplacePrice(BENM,Account1.Unfill.count, RePrice);
Main.MessageList("매수진입 정정주문");
}
}
else
{
Main.KillTimer(1);
}
}
if (BECNT == 2)
{
if (Account1.Unfill.count > 0)
{
BECID = Account1.OrderCancel(BENM);
Main.MessageList("매수진입 취소주문");
}
Main.KillTimer(1);
}
}
if (nEventID == 2)
{
Account1.SetUnfillOrderNumber(BXNM);
BXCNT = BXCNT+1;
if (BXCNT == 1)
{
var RePrice = MarketData1.current + MarketData1.GetTickSize()*1;
if (Account1.Unfill.count > 0)
{
if (RePrice != Account1.Unfill.price)
{
BXID = Account1.OrderReplacePrice(BXNM,Account1.Unfill.count, RePrice);
Main.MessageList("매수청산 정정주문");
}
}
else
{
Main.KillTimer(2);
}
}
if (BXCNT == 2)
{
if (Account1.Unfill.count > 0)
{
BXCID = Account1.OrderCancel(BXNM);
Main.MessageList("매수청산 취소주문");
}
Main.KillTimer(2);
}
}
if (nEventID == 3)
{
Account1.SetUnfillOrderNumber(SENM);
SECNT = SECNT+1;
if (SECNT == 1)
{
var RePrice = MarketData1.current + MarketData1.GetTickSize()*1;
if (Account1.Unfill.count > 0)
{
if (RePrice != Account1.Unfill.price)
{
SEID = Account1.OrderReplacePrice(SENM,Account1.Unfill.count, RePrice);
Main.MessageList("매도진입 정정주문");
}
}
else
{
Main.KillTimer(3);
}
}
if (SECNT == 2)
{
if (Account1.Unfill.count > 0)
{
SECID = Account1.OrderCancel(SENM);
Main.MessageList("매도진입 취소주문");
}
Main.KillTimer(3);
}
}
if (nEventID == 4)
{
Account1.SetUnfillOrderNumber(SXNM);
SXCNT = SXCNT+1;
if (SXCNT == 1)
{
var RePrice = MarketData1.current - MarketData1.GetTickSize()*1;
if (Account1.Unfill.count > 0)
{
if (RePrice != Account1.Unfill.price)
{
SXID = Account1.OrderReplacePrice(SXNM,Account1.Unfill.count, RePrice);
Main.MessageList("매수청산 정정주문");
}
}
else
{
Main.KillTimer(4);
}
}
if (SXCNT == 2)
{
if (Account1.Unfill.count > 0)
{
SXCID = Account1.OrderCancel(SXNM);
Main.MessageList("매도청산 취소주문");
}
Main.KillTimer(4);
}
}
}
2
지정가를 바로 시장가로 정정이 가능하지 않습니다.
취소후 시장가로 주문내게 작성하셔야 합니다.
즐거운 하루되세요
> 율담 님이 쓴 글입니다.
> 제목 : 수식 문의드립니다.
> 답변 미리 감사드립니다. 질문답변 대기가 오래걸리네요.
주문변경 구현이 안됩니다.
나스닥에서 매수진입시,
지정가(신호가) 진입 주문후, 3초후 미체결시 신호가-3틱, 3초후 미체결시 시장가로 부탁합니다.
예스스팟이 미체결물량을 인식하는지 궁금하네요.
최초 지정가 진입 주문시.. 어떠한이유로 주문이 안나갔을경우.. 3초후 신호가-3틱으로 지정가 주문이 다시 나가게 되는건가요.
지정가 주문후 이주문을 취소하고.. 다시 주문을 내는것인지.. 아님 주문변경 로직인지 궁금하네요.