답변완료
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);
}
2013-07-10
218
글번호 208039
예스트레이더 (iM증권)
답변완료
주문관련 질문
주문체결 확률을 높이고 슬리피지를 적게 하는 방법을 알고 싶습니다.
저는 삼성전자 선물을 시스템으로 매매하려고 하는데
삼성전자 선물은 그림과 같이 거래량이 적고 호가창이 벌어져있는 경우가 많습니다.
제가 원하는 주문은
09:00 봉이 완성되고 09:01 봉의 시가에 진입하는 것입니다.
If 090000 <= sTime && sTime <= 092000 Then {
Sell("S1", AtStop,O,1); 또는
Sell("S1", Atmarket,DEF,1);
두 주문방법은 결과가 같나요? 같지 않다면 어느 방법이 주문체결과 슬리피지 저감에 좋은가요?
매매가격은 진입, 청산 모두 시장가로 해놓았는데 호가창이 벌어지는 종목의 주문 체결 확률을 높이고 슬리피지를 적게 하려면 시스템 수식의 주문식과 시스템 설정의 매매가격을 어떻게
설정하면 좋을까요?
2013-07-07
474
글번호 208028
기타
답변완료
모의 접속불가
모의에서 발생한 2가지 문제를 말씀드리겠습니다.
1) 오늘 아침부터 새로운 프로그램 다운받더니
거래정보를 로드중입니다. 메세지가 평소보다 길더니
모의투자접속 버튼이 Disable되는 현상 발생되어 접속이 불가합니다.
(지난번에는 휴일날 신청하여 안된다는 답변이 있었습니다만...)
2) 지난번 2013-06-23일자 문의드린 성능보고서 오류문제를 재문의드립니다.
추가로, 같은 현상이 매일 반복되는 문제이며
예를들면, 오늘기준으로 실행이 되었던 것들이 성능보고서에도 잘 나타나는데
몇일지나서 성능보고서 앞쪽에 표현되게되면, 그땐 주문실행이 안된것으로 나옵니다.
(항상 4일간의 자료가 표현이 안되는 문제입니다.)
참고로, 지금도 마찬가지이지만 3.1부터서도
구간의 첫 일자는 주문실행이 올바르지 못했습니다.
첫 하루라서 무시하고 넘어간 것인데...
(프로그래머 경력이 좀 되는 사용자입니다.)
[문의내용]
시뮬말고 시험적용시
일요일 현재 2013.06.03~2013.06.21 구간의 분석을 할 수 있는거로 나오는데여...
건수 5000개 지정으로 되어있고여,
디버그해보면, 매수/매도 주문실행은 되는데
성능보고서 거래내역 탭에는 3,4,5,7 4일간의 주문자료가 없고
기간분석 탭에도 물론 해당일자 4개가 집계 값이 0으로 되어있습니다.
참고로 동일한 프로그램을 시뮬에서 적용할 시에는
같은 일자구간 적용시(건수 5000개) 첫 1일만 집계가 되지않습니다.
다른 분덜은 안그런데 저만 그런 현상이라면,
어떤 부분의 가능성이 있을지 조언바랍니다.
[답변내용]
앞구간의 특정일자에 신호는 나오는데, 이 신호에 대한 매매 결과가 성능보고서에 표시되지 않는다는 의미인지?
=> 프로그램 디버그에서 주문실행(Sell Buy등)이 되는데 즉, 주문명령 앞/뒤로 디버그가 표시된다는 의미
전략실행차트와 시뮬레이션 차트에서 동일한 기간을 놓고 테스트 하셨는데 두 개의 성능보고서 결과가 다르다는 것인지
정확하지 않아서 일반적인 내용으로 답변을 드리겠습니다.
=> 예 동일한 일자구간입니다.
먼저 차트에 신호는 발생되는데 성능보고서 상에서 집계가 되지 않는다면
프로그램의 오류이므로 다시한번 글을 올려주시기 바랍니다.
두 번째로 전략실행차트의 결과와 시뮬레이션 차트의 결과가 서로 다르다면
시작시점과 종료시점이 모두 동일한지, 수정주가나 갭보정 등의 데이터 적용이 모두 동일한지 확인해 보시기 바랍니다.
데이터 적용을 서로 다르게 했기 때문에 발생되는 현상으로 생각됩니다.
=>모든 조건(수정주가나 갭보정, 수수료,슬리피지 등) 동일합니다.
2013-07-06
223
글번호 208027
예스트레이더 (iM증권)