커뮤니티

수식 문의 드립니다.

프로필 이미지
ywesry
2019-12-17 17:07:01
180
글번호 134465
답변완료
예스스팟 수식 관련 문의드립니다. 주문을 낸 이후, 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 함수호출이 되고 난후 타이머에서 취소를 설정해야할 것 같다는 생각까지는 드는데..확실치 않아서요.. 수식 작성을 부탁드리겠습니다. 감사합니다.