커뮤니티

2784질문에 이어..

프로필 이미지
온고지신
2004-11-29 20:50:52
1347
글번호 5884

첨부 이미지

var5와 var8은 매일 첫봉에서 계산되어 지는 지지저항 값이므로 하루 동안은 변치않는 값입니다.(수식도 문제없으며, messagelog로도 확인된 사항) 따라서 하루 중에는 해당 if문의 true/false는 첫봉부터 마지막봉(133000봉)까지 true 또는 false를 동일하게 갖습니다. 즉, 매도신호가 나왔다는 것은 매수신호도 계속 동작될 수 있다는 뜻입니다. 문제가 되던 그 날의 경우(그날 외에도 신호가 이상한 날은 계속 관찰되었습니다) 매수stop이 동작되는 저항선을 오전에 돌파하였다가 오후에는 다시 매도stop이 동작되는 지지선을 돌파하여 매수->매수청산->매도가 되는 것이 맞습니다.(지지저항값을 손으로 검산해봐도 매수신호가 나와야 하는 경우가 맞음) 그리고 setstopendofday()에 의해 매일의 종가에 포지션을 털고 가므로 전일의 포지션은 익일의 신호에 전혀 영향을 주지 않도록 하였으므로, 이전의 신호와의 상관성은 전혀 없습니다. 그런데...코드에서 다른 부분은 하나도 안건드리고 단지 sell과 buy의 위치만 서로 바꾸었는데 신호의 위치에 변화가 온다는 것은 이해할 수 없는 상황입니다. 가까운 예로, 11월26일에도 다음과 같은 문제가 발생하였습니다. 다른 코드는 그대로 두고 ... if (var5-var8) < dayclose(1)*grant and time < 133000 then begin buy("le", atstop, var4, 1); sell("se", atstop, var9, 1); end ... 로 하여 실행한 경우 그림1과 같이 신호가 발생합니다. 이 코드에서 단지 buy와 sell의 위치를 바꾸어 아래와 같이 실행하면 ... if (var5-var8) < dayclose(1)*grant and time < 133000 then begin buy("le", atstop, var4, 1); sell("se", atstop, var9, 1); end ... 이젠 그 결과는 그림2에서처럼 buy만 실행되고 sell은 실행되지 않는 어처구니 없는 상황이 나옵니다. ( 그림3에서 처럼 buy를 위에 놓건, sell을 위에 놓건 if문 안으로는 잘 들어가고 있음을 확인했습니다. 테스트용 코드는 아래와 같습니다. 즉, 조건식의 값을 if문 안에서 출력하고 날짜와 시간을 모두 출력한 것입니다. cond = (var5-var8) < dayclose(1)*grant and time < 133000; if cond then begin messagelog("%.0f %6.0f %.0f", date, time, cond); buy("le", atstop, var4, 1); sell("se", atstop, var9, 1); end ) 진입식은 이 외엔 없습니다. 굳이 제 코드가 다 필요는 없을 것 같습니다만(자체적으로 이러한 문제를 찾아내지 못한다면 제 코드를 드린다고 해도 코드만 노출될 뿐 해결은 안될 것 같습니다만) 굳이 그래도 코드를 원하신다면, 메일로 문의드리고자 합니다. 메일 주소를 알려주시기 바랍니다. 저에게 메일로 코드를 원하시기 전에 내부적으로 데이용으로 단순한 CBO전략부터 작성하셔서 돌려보시기 바랍니다.
시스템
답변 0