안녕하세요
예스트레이더스를 가지고 해외선물용 거래 시스템을 만들어 테스트 중인데 이상한 현상이 있어 문의 드립니다.
제가 겪은 현상은, 매매신호가 발생해야 함에도 불구하고 매매신호가 발생하지 않은 현상인데, 차트를 Refresh를 해도 동일하게 매매신호가 발생하지 않습니다.
현재 틱차트를 감안하여 로직을 짠거라, 틱 차트에서만 발생하는 오류인지 분봉에서도 발생하는 오류인지는 모르겠습니다. 참고로, 다른 Q&A를 보다보니, 틱봉은 데이터의 누락으로 Refresh 과정에서 매매신호가 변경될 수 있다는 점은 이미 인지하고 있습니다. 하지만 Refresh를 했음에도 매매신호 누락이 지속되는 것은 조금 이해가 되지 않습니다.
더 이상한건, 틱 기준을 +-1 혹은 물론 그 이상/이하로 줬을 때, 비슷한 위치에서 매매신호가 뜨지만 제가 Default로 세팅해 놓은 틱 기준으로 돌아가면 유독 매매신호가 뜨지 않습니다.
예) 기본 사용 틱 기준: 720틱
719틱, 721틱 등으로 값을 변경할 시 로직에 맞춰 정상적으로 매매신호 발생. 그러나 다시 720틱으로 세팅하면 매매신호가 발생하지 않음
첨부파일을 함께 송부 드립니다.
1) 720틱 기준 (매매신호 미발생)
2) 719틱 기준 (매매신호 발생)
3) 721틱 기준 (매매신호 발생)
eFriend Global YesTrader (한국투자증권)
답변 2
예스스탁
예스스탁 답변
2019-02-07 17:04:26
안녕하세요? 예스스탁입니다.
재적용 했을 때 신호가 바뀌는 현상이 아니라, 재적용 해도 신호가 나와야 된다고 판단되는 위치에서 신호가 나오지 않는 현상이기 때문에 messagelog로 전략식에서 사용한 지표값이나 조건의 만족 여부를 출력해 보는 방법으로 원인을 찾을 수 있을것 같습니다.
messagelog함수 사용과 관련하여 궁금한 내용 있으시면 예스스탁(02-3453-1060:프로그램사용법Q&A담당자)으로 연락을 주시면 자세히 설명드리도록 하겠습니다.
감사합니다.
> 퍄노재즈 님이 쓴 글입니다.
> 제목 : 주문 미발생 현상
> 안녕하세요
예스트레이더스를 가지고 해외선물용 거래 시스템을 만들어 테스트 중인데 이상한 현상이 있어 문의 드립니다.
제가 겪은 현상은, 매매신호가 발생해야 함에도 불구하고 매매신호가 발생하지 않은 현상인데, 차트를 Refresh를 해도 동일하게 매매신호가 발생하지 않습니다.
현재 틱차트를 감안하여 로직을 짠거라, 틱 차트에서만 발생하는 오류인지 분봉에서도 발생하는 오류인지는 모르겠습니다. 참고로, 다른 Q&A를 보다보니, 틱봉은 데이터의 누락으로 Refresh 과정에서 매매신호가 변경될 수 있다는 점은 이미 인지하고 있습니다. 하지만 Refresh를 했음에도 매매신호 누락이 지속되는 것은 조금 이해가 되지 않습니다.
더 이상한건, 틱 기준을 +-1 혹은 물론 그 이상/이하로 줬을 때, 비슷한 위치에서 매매신호가 뜨지만 제가 Default로 세팅해 놓은 틱 기준으로 돌아가면 유독 매매신호가 뜨지 않습니다.
예) 기본 사용 틱 기준: 720틱
719틱, 721틱 등으로 값을 변경할 시 로직에 맞춰 정상적으로 매매신호 발생. 그러나 다시 720틱으로 세팅하면 매매신호가 발생하지 않음
첨부파일을 함께 송부 드립니다.
1) 720틱 기준 (매매신호 미발생)
2) 719틱 기준 (매매신호 발생)
3) 721틱 기준 (매매신호 발생)
안녕하세요
말씀 주신 가이드대로 디버깅을 해보았는데요. 데이터 값 자체는 제가 걸어좋은 진입조건에 부합하는 것으로 파악이 되었습니다. 다만 이상한 점이 있는데요. 간략히 정리하면,
2월 4일 23:58:29 - Condition 불만족
2월 5일 00:00:00 - Condition 만족
2월 5일 00:00:00 - Condition 만족
2월 5일 00:00:02 - Condition 만족
참고로, 저의 주문은 Condition == True and Condition[1] == False 일 경우 주문이 발생토록 되어 있습니다.
따라서, 원래 의도대로라면 False에서 True로 바뀐 다음 봉에 진입주문이 발생하였어야 합니다. 그러나, 당시 자정이 되면서 순간 거래량이 폭발을 하면서 00:00:00 시간에 두 개의 봉이 동시에 작성이 되었습니다.
그래서 확실치는 않으나 나름의 추론을 해보면...
1) 예스트레이더스는 틱 차트에서 단순히 봉의 완성이 아니라 시간의 차이 또한 진입신호 발생 시점을 결정하는데 사용하고 있고
2) 앞선 동일 시점에서 두 개의 기록이 관측됨으로써 시스템이 혼동을 하여,
3) 그 다음 관측 시간인 00:00:02에서 봤을 때 앞의 두 개의 틱 봉이 모두 True라고 인지
4) 따라서 Condition == True and Condition[1] == True 상태가 되어 진입이 되지 않은 것은 아닌지...
그냥 머릿속 소설이라 맞을지는 모르겠습니다.
그런데 위의 추론에서 한 가지 맹점은, 첫 글에서 원래 테스트하던 720차트가 아닌 719틱과 721틱 차트에서는 정상적으로 신호가 발생한다고 했는데요.
이 두 가지 경우도 막상 디버깅을 해보면, 00:00:00에 두 개의 틱봉이 동시에 발생합니다. 이 경우에도 나름의 소설(^^;;)을 써 보면, 디버깅 상에서는 00:00:00 으로 표기가 되나 서버레벨에서는 그 이하 소수점 단위로 시간을 측정하면서 뭔가 우연찮게 차이를 발생시킨 것은 아닐까 싶긴 한데.. 예를 들면 다음 측정 시간에서는 동일 시점에 발생한 두 개의 봉을 하나로 인식 했다던지.. 이것도 그냥 머릿속 가설이라 잘은 모르겠네요.
시스템이 운용되는 로직에 대해서는 훨씬 더 이해가 깊으실테니 의심가는 원인이 있다면 답변 부탁 드립니다.
참고하실 수 있도록 디버깅 결과에 대한 캡쳐를 보내 드립니다.
그리고 본 건에 대한 Condition 조건은 아래와 같습니다.
MACDV <= MACDS
stok <= stod
DP <= DM
DM <= DMIv
DM >= 23
DMIv >= 23
DMIv >= DMIv[1]
mmt <= mmtsig
C <= MID