커뮤니티

분봉에서 당일 봉만 계산한 수식

프로필 이미지
기사단장
2020-04-01 23:51:46
1315
글번호 137450
답변완료

첨부 이미지

안녕하세요 고생이 많으십니다. 분봉을 이용한 매매시스템을 만들려고하는데, 분봉 중 당일 생성되는 봉만을 고려하여 지표를 활용하여 시스템을 짜고 싶습니다. 그러나 단순이 ma(C,5)를 활용하면, 전일 발생한 신호때문에 당일 시초에 매매가 이루어지는 문제가 있습니다. 전일의 분봉 및 신호를 무시하도록 시스템을 짜고 시뮬레이션 할 수 있는 방법이 있을까요? 오류가 발생한 화면 "첨부파일" 참고 부탁드립니다. 첨부파일 예시1) 5일(5분) 이동평균선이 Demark 기준선을 Crossup할 시 매수하는 로직임. 7/3일 당일은 신호가 발생하지 않지만, 전일 높은 장마감 가격에 의해 5일 이평선이 7/3일 생성된 Demark 기준선을 (7/2 종가 또는 7/3일 시가에) Crossup하게되므로 전일 장마감시 발생한 신호에 의해 7/3일 장개시와 함깨 매수신호가 발생하는 오류. 첨부파일 예시2) 마찬가지로 당일 높은 갭상승에 의해서 5일 이평선이 영향을 받아 Crossup을 만들어내는 오류입니다. 당일 봉의 추이로만 보면 Crossdown이 나와야 하나 전일 봉이 고려되어 Crossup이 나오게되는 오류가 생기는 문제입니다. 문제되는 부분만 코드 발췌하였으니 참조 부탁드립니다. ==================================================================== if stime > 193000 and marketposition== 0 and crossup(ma(C,5),value3) and //value3은 Demark 기준선임 count < N Then // N은 당일 매매횟수제한 buy("기준매수",Atmarket,DEF,LBuy); 참고로 Demark 수식도 올립니다. If DayClose(1) > DayOpen(1) Then { value1 = (DayHigh(1)+DayLow(1)+DayClose(1)+DayHigh(1))/2-DayLow(1); value2 = (DayHigh(1)+DayLow(1)+DayClose(1)+DayHigh(1))/2-DayHigh(1); value3 = (DayHigh(1)+DayLow(1)+DayClose(1)+DayHigh(1))/4; } Else If DayClose(1) < DayOpen(1) Then { value1 = (DayHigh(1)+DayLow(1)+DayClose(1)+DayLow(1))/2-DayLow(1); value2 = (DayHigh(1)+DayLow(1)+DayClose(1)+DayLow(1))/2-DayHigh(1); value3 = (DayHigh(1)+DayLow(1)+DayClose(1)+DayLow(1))/4; } Else { value1 = (DayHigh(1)+DayLow(1)+DayClose(1)+DayClose(1))/2-DayLow(1); value2 = (DayHigh(1)+DayLow(1)+DayClose(1)+DayClose(1))/2-DayHigh(1); value3 = (DayHigh(1)+DayLow(1)+DayClose(1)+DayClose(1))/4; } 항상 도와주셔서 감사드립니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2020-04-02 15:58:53

안녕하세요 예스스탁입니다. Atmarket은 봉완성시 조건을 만족하면 다음봉 시가에 신호를 표시하고 다음봉 시가를 리포트상 진입청산가격으로 하는 신호타입니다. 일간 마지막봉에 조건이 만족하면 다음날 시가에 신호가 발생합니다. 진입식에 NextBarSdate == sdate라는 조건을 추가하시면 마지막에서 발생하지 않습니다. if stime > 193000 and NextBarSdate == sdate and marketposition== 0 and crossup(ma(C,5),value3) and //value3은 Demark 기준선임 count < N Then // N은 당일 매매횟수제한 buy("기준매수",Atmarket,DEF,LBuy); 즐거운 하루되세요 > 기사단장 님이 쓴 글입니다. > 제목 : 분봉에서 당일 봉만 계산한 수식 > 안녕하세요 고생이 많으십니다. 분봉을 이용한 매매시스템을 만들려고하는데, 분봉 중 당일 생성되는 봉만을 고려하여 지표를 활용하여 시스템을 짜고 싶습니다. 그러나 단순이 ma(C,5)를 활용하면, 전일 발생한 신호때문에 당일 시초에 매매가 이루어지는 문제가 있습니다. 전일의 분봉 및 신호를 무시하도록 시스템을 짜고 시뮬레이션 할 수 있는 방법이 있을까요? 오류가 발생한 화면 "첨부파일" 참고 부탁드립니다. 첨부파일 예시1) 5일(5분) 이동평균선이 Demark 기준선을 Crossup할 시 매수하는 로직임. 7/3일 당일은 신호가 발생하지 않지만, 전일 높은 장마감 가격에 의해 5일 이평선이 7/3일 생성된 Demark 기준선을 (7/2 종가 또는 7/3일 시가에) Crossup하게되므로 전일 장마감시 발생한 신호에 의해 7/3일 장개시와 함깨 매수신호가 발생하는 오류. 첨부파일 예시2) 마찬가지로 당일 높은 갭상승에 의해서 5일 이평선이 영향을 받아 Crossup을 만들어내는 오류입니다. 당일 봉의 추이로만 보면 Crossdown이 나와야 하나 전일 봉이 고려되어 Crossup이 나오게되는 오류가 생기는 문제입니다. 문제되는 부분만 코드 발췌하였으니 참조 부탁드립니다. ==================================================================== if stime > 193000 and marketposition== 0 and crossup(ma(C,5),value3) and //value3은 Demark 기준선임 count < N Then // N은 당일 매매횟수제한 buy("기준매수",Atmarket,DEF,LBuy); 참고로 Demark 수식도 올립니다. If DayClose(1) > DayOpen(1) Then { value1 = (DayHigh(1)+DayLow(1)+DayClose(1)+DayHigh(1))/2-DayLow(1); value2 = (DayHigh(1)+DayLow(1)+DayClose(1)+DayHigh(1))/2-DayHigh(1); value3 = (DayHigh(1)+DayLow(1)+DayClose(1)+DayHigh(1))/4; } Else If DayClose(1) < DayOpen(1) Then { value1 = (DayHigh(1)+DayLow(1)+DayClose(1)+DayLow(1))/2-DayLow(1); value2 = (DayHigh(1)+DayLow(1)+DayClose(1)+DayLow(1))/2-DayHigh(1); value3 = (DayHigh(1)+DayLow(1)+DayClose(1)+DayLow(1))/4; } Else { value1 = (DayHigh(1)+DayLow(1)+DayClose(1)+DayClose(1))/2-DayLow(1); value2 = (DayHigh(1)+DayLow(1)+DayClose(1)+DayClose(1))/2-DayHigh(1); value3 = (DayHigh(1)+DayLow(1)+DayClose(1)+DayClose(1))/4; } 항상 도와주셔서 감사드립니다.