예스스팟 수식 관련 문의드립니다.
주문을 낸 이후, 5분간 체결이 되지 않았을때,
그 주문을 취소하는 수식이 필요합니다.
개념적으로는,
Main_OnOrderResponse 함수호출이 되고 난후
타이머에서 취소를 설정해야할 것 같다는 생각까지는 드는데..확실치 않아서요..
수식 작성을 부탁드리겠습니다.
감사합니다.
답변 1
예스스탁
예스스탁 답변
2019-12-17 17:31:13
안녕하세요
예스스탁입니다.
주문취소는 주문번호가 있어야 하므로
주문 후 주문응답이 발생하면 주문번호를 적고 5분(300초) 타이머를 셋팅한 후에
해당 타이머가 동작할때 취소하게 하시면 됩니다.
주문응답이 들어올때 해당 주문응답이
현재 스팟수식에서 발생한 주문인지는 아이디로 확인하셔야 합니다.
흐름은 아래와 같습니다
var BID,BNUM;
//주문이 발생하는 이벤트(예시로 OnStart로 지정했습니다)
function Main_OnStart()
{
//매수주문 후 주문아이디는 BID변수에 저장
BID = Account1.OrderBuy(sItemCode, nCount, dPrice, nPriceKind)
}
//주문응답 발생
function Main_OnOrderResponse(OrderResponse)
{
//주문응답의 아이디가 BID로 저장한 주문아이디와 같으면
if (OrderResponse.orderID == BID)
{
//BNUM변수에 주문번호 저장
BNUM = OrderResponse.orderNum;
//동시에 1번 타이머를 300초로 설정(1000이 1초)
Main.SetTimer(1, 300000);
}
}
function Main_OnTimer(nEventID)
{
//1번 타이머 동작
if (nEventID == 1)
{
//1번 타이머 종료
Main.KillTimer(1);
//BNUM으로 저정한 주문번호의 미체결 객체 셋팅
Account1.SetUnfill(BNUM);
//미체결 수량이 있으면
if (Account1.Unfill.count > 0)
{
//해당 주문은 취소
Account1.OrderCancel(BNUM);
}
}
}
즐거운 하루되세요
> ywesry 님이 쓴 글입니다.
> 제목 : 수식 문의 드립니다.
> 예스스팟 수식 관련 문의드립니다.
주문을 낸 이후, 5분간 체결이 되지 않았을때,
그 주문을 취소하는 수식이 필요합니다.
개념적으로는,
Main_OnOrderResponse 함수호출이 되고 난후
타이머에서 취소를 설정해야할 것 같다는 생각까지는 드는데..확실치 않아서요..
수식 작성을 부탁드리겠습니다.
감사합니다.