커뮤니티

YesSpot질문

프로필 이미지
히말라야
2013-07-10 01:06:22
219
글번호 208039
답변완료
예스 스팟에 나와있는 시간정정 주문을 선물로 주문을 내는 샘플로 변경한 예제 입니다. 1. 아래의 코딩에서 ID를 부여한후 미체결을 인지하는 코딩은 if(OrderResponse.orderID == ID) 로 보여지는데, 레퍼런스에서 보면 해당코딩은 ID에서 부여한 스팟고유의 번호와 응답에서 받은 고유 번호가 같은 주문 인지를 판단하는 로직으로 보여집니다. 스팟 설명부분에 C.주문응답 이벤트가 발생하면 타이머가 설정이 되고 지정한 60초가 경과한 후 미체결 이면 정정주문을 해야 합니다. 정정주문에 대한 주문응답을 받으면 다시 타이머가 작동되고60초 후에 다시 정정주문을 발생합니다. ==> 주문이 발생한후 해당주문이 체결되었는지, 미체결되었는지 구분하는 코딩셈플을 알고 싶습니다. (제가 이해가 짧은것인지...ㅠ.ㅠ) 2. Unfill 객체를 가지고 특정종목을 매수/매도 주문을 냈을때 , 특정종목의 체결 미체결 여부를 알 수 있는 샘플 코딩 부탁드리겠습니다. // < 시간 정정 주문> // 종목객체: Futures(연결선물) // 계좌객체: A1 var ID; // 전역변수의 선언 var Number; var timerCnt=0; // 전략이 예스스팟 전략에 실행될때 ==> 최초 실행시 넣어주어야할 값이나 계산이 있을 때 사용 function Main_OnStart() { // 시작과 동시에 선물매수5호가에 주문을 냄 ID=A1.OrderBuy(Futures.code, 1, Futures.Bid(5)-0.25, 0); Main.MessageLog(" 주문ID " + ID); Main.MessageLog(" 주무종목 " + Futures.code); Main.MessageLog(" 1차주문가격 " + Futures.Bid(5)-0.25); } //주문에 관한 응답을 받으면 function Main_OnOrderResponse(OrderResponse) { if(OrderResponse.orderID == ID) { Number = OrderResponse.orderNum; Main.SetTimer(1,10000); // 10초 동안 타이머를 작동시킴 //LOG Main.MessageLog(" 주문ID " + ID + " 주문번호 " + OrderResponse.orderNum + " 주문가격 " + OrderResponse.orderPrice ); } } function Main_OnTimer(nEventID) { if(nEventID == 1) { ID=A1.OrderReplace(Number,1, Futures.Bid(4)-0.25); Main.KillTimer(1); } // 타이머가 작동한 횟수 timerCnt +=1; Main.MessageLog(" Timer 작동회수 " + timerCnt ); } // 주문이 체결되면 타이머 중지 function Main_OnNotifyFill(NotifyFill) { if(NotifyFill.orderNum == Number) Main.KillTimer(1); }
예스트레이더 (iM증권)
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2013-07-10 14:33:54

안녕하세요? 예스스팟 문의는 예스스팟Q&A게시판을 이용해 주시길 부탁드립니다. 감사합니다. > 히말라야 님이 쓴 글입니다. > 제목 : YesSpot질문 > 예스 스팟에 나와있는 시간정정 주문을 선물로 주문을 내는 샘플로 변경한 예제 입니다. 1. 아래의 코딩에서 ID를 부여한후 미체결을 인지하는 코딩은 if(OrderResponse.orderID == ID) 로 보여지는데, 레퍼런스에서 보면 해당코딩은 ID에서 부여한 스팟고유의 번호와 응답에서 받은 고유 번호가 같은 주문 인지를 판단하는 로직으로 보여집니다. 스팟 설명부분에 C.주문응답 이벤트가 발생하면 타이머가 설정이 되고 지정한 60초가 경과한 후 미체결 이면 정정주문을 해야 합니다. 정정주문에 대한 주문응답을 받으면 다시 타이머가 작동되고60초 후에 다시 정정주문을 발생합니다. ==> 주문이 발생한후 해당주문이 체결되었는지, 미체결되었는지 구분하는 코딩셈플을 알고 싶습니다. (제가 이해가 짧은것인지...ㅠ.ㅠ) 2. Unfill 객체를 가지고 특정종목을 매수/매도 주문을 냈을때 , 특정종목의 체결 미체결 여부를 알 수 있는 샘플 코딩 부탁드리겠습니다. // < 시간 정정 주문> // 종목객체: Futures(연결선물) // 계좌객체: A1 var ID; // 전역변수의 선언 var Number; var timerCnt=0; // 전략이 예스스팟 전략에 실행될때 ==> 최초 실행시 넣어주어야할 값이나 계산이 있을 때 사용 function Main_OnStart() { // 시작과 동시에 선물매수5호가에 주문을 냄 ID=A1.OrderBuy(Futures.code, 1, Futures.Bid(5)-0.25, 0); Main.MessageLog(" 주문ID " + ID); Main.MessageLog(" 주무종목 " + Futures.code); Main.MessageLog(" 1차주문가격 " + Futures.Bid(5)-0.25); } //주문에 관한 응답을 받으면 function Main_OnOrderResponse(OrderResponse) { if(OrderResponse.orderID == ID) { Number = OrderResponse.orderNum; Main.SetTimer(1,10000); // 10초 동안 타이머를 작동시킴 //LOG Main.MessageLog(" 주문ID " + ID + " 주문번호 " + OrderResponse.orderNum + " 주문가격 " + OrderResponse.orderPrice ); } } function Main_OnTimer(nEventID) { if(nEventID == 1) { ID=A1.OrderReplace(Number,1, Futures.Bid(4)-0.25); Main.KillTimer(1); } // 타이머가 작동한 횟수 timerCnt +=1; Main.MessageLog(" Timer 작동회수 " + timerCnt ); } // 주문이 체결되면 타이머 중지 function Main_OnNotifyFill(NotifyFill) { if(NotifyFill.orderNum == Number) Main.KillTimer(1); }