커뮤니티

청산 알고리즘인데 점검 부탁드립니다.

프로필 이미지
좋은밤
2021-02-16 09:03:05
438
글번호 146351
답변완료
안녕하십니까. 실매매 전략에 다음의 청산 코드를 넣어보았는데 제대로 동작하지 않아서 문의드립니다. 진입 후 n봉이 지난 후에, 전체 봉에서 양봉이나 음봉의 비율이 일정 이하가 되면 청산하겠다는 의도입니다. 이하 코드로 실제 구동해보면 진입 후 7개 봉이 아니라 3개 봉만 지나도 청산이 되어 버립니다. 어디가 잘못된 것인지 점검을 부탁드립니다. input : n(7), A(41); // 청산1 - 7봉 이후 양/음봉 비율이 41% 이상이면 청산 var : Pn(0), Nn(0); if marketposition <> 0 then { if O < C then Pn = Pn + 1; if O > C then Nn = Nn + 1; if BarsSinceEntry >= n then { if Pn/(Pn+Nn)*100 < A then exitlong("el"); if Nn/(Pn+Nn)*100 < A then exitshort("es"); } } if marketposition == 0 Then { Pn = 0; Nn = 0; }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2021-02-16 14:53:44

안녕하세요 예스스탁입니다. 작성하신 수식이 매수에서 매도로 스위칭되거나 매도에서 매수로 스위칭이 되면 초기화가 되지 않습니다. 1 아래와 같이 countif함수를 이용해 진입이후 양봉과 음봉 갯수 카운트 해서 사용하시거나 input : n(7), A(41); var : Pn(0), Nn(0); if marketposition <> 0 then { Pn = CountIf(C>O,BarsSinceEntry); Nn = CountIf(C<O,BarsSinceEntry); if BarsSinceEntry >= n then { if Pn/(Pn+Nn)*100 < A then exitlong("el"); if Nn/(Pn+Nn)*100 < A then exitshort("es"); } } 2 포지션 변경시 0으로 초기화되게 작성해 주시면 됩니다. input : n(7), A(41); var : Pn(0), Nn(0); if marketposition <> 0 then { if MarketPosition != MarketPosition[1] Then { Pn = 0; Nn = 0; } if O < C then Pn = Pn + 1; if O > C then Nn = Nn + 1; if BarsSinceEntry >= n then { if Pn/(Pn+Nn)*100 < A then exitlong("el"); if Nn/(Pn+Nn)*100 < A then exitshort("es"); } } 즐거운 하루되세요 > 좋은밤 님이 쓴 글입니다. > 제목 : 청산 알고리즘인데 점검 부탁드립니다. > 안녕하십니까. 실매매 전략에 다음의 청산 코드를 넣어보았는데 제대로 동작하지 않아서 문의드립니다. 진입 후 n봉이 지난 후에, 전체 봉에서 양봉이나 음봉의 비율이 일정 이하가 되면 청산하겠다는 의도입니다. 이하 코드로 실제 구동해보면 진입 후 7개 봉이 아니라 3개 봉만 지나도 청산이 되어 버립니다. 어디가 잘못된 것인지 점검을 부탁드립니다. input : n(7), A(41); // 청산1 - 7봉 이후 양/음봉 비율이 41% 이상이면 청산 var : Pn(0), Nn(0); if marketposition <> 0 then { if O < C then Pn = Pn + 1; if O > C then Nn = Nn + 1; if BarsSinceEntry >= n then { if Pn/(Pn+Nn)*100 < A then exitlong("el"); if Nn/(Pn+Nn)*100 < A then exitshort("es"); } } if marketposition == 0 Then { Pn = 0; Nn = 0; }