커뮤니티

시스템식 문의 드립니다.

프로필 이미지
꾸주니
2013-07-22 16:27:35
204
글번호 65600
답변완료
매매횟수에 제한을 둘려고 하는데요. 예전에 한 번 문의드렸던 적이 있어서 알려 주신 데로 적용했지만 결과가 원하는 데로 나오지 않았습니다. 제가 사용하는 시스템 환경은 다음과 같습니다. 1. 신호종류 : 매수/매도 각각 2개(매수1,매수2,매도1,매도2) 2. 매수와 매도는 같은 봉에서 동시에 발생할 수도 있습니다. 3. 청산 : 별도의 청산신호 외에 당일 종가 청산 위와 같을 때 당일 최대 매매횟수를 4회로 해서 4회가 넘으면 당일은 신호가 더 이상 발생하지 않게 하려고 하였습니다. 제가 사용한 식은 다음과 같습니다. var : signalcount(0),cnt(0); signalcount = 0; for cnt = 0 to 10 { if sdate == EntryDate(cnt)then signalcount = signalcount+1; } if condition1 == true and signalcount < 4 then buy("매수1"); if condition2 == true and signalcount < 4 then buy("매수2"); if condition1 == true and signalcount < 4 then sell("매도1"); if condition2 == true and signalcount < 4 then sell("매도2"); 위의 수식이라면 매수1/매수2가 동시에 신호가 발생한다고 하더라도 최대 5번이 나와야 정상이지 않은가요? 이렇게 적용햇을 때 많이 나오는 날은 8번까지 신호가 나옵니다. 혹시나 싶어서 조건에서 signalcount < 3 으로 해도 크게 달라지지 않구요. 1~2의 오차는 있을 수는 있다고 하더라도 8번은 제가 의도하는 매매횟수의 2번이 넘는 큰 수라 이해가 안됩니다. 뭐가 잘못되었는지요? 부탁드립니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2013-07-22 18:57:58

안녕하세요 예스스탁입니다. signalcount = 0; for cnt = 0 to 10 { if sdate == EntryDate(cnt)then signalcount = signalcount+1; } 위식은 포지션진입 -> 청산 횟수입니다. 매수1 --> 매수2 --> 청산은 하나의 매수거래로 간주하게 됩니다. 즉 피라미딩신호는 진입횟수로 카운트 되지 않습니다. 아래식 이용하시면 됩니다. var : signalcount(0); if date != date[1] Then signalcount = 0; if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then signalcount = signalcount+1; if MarketPosition != 0 and MarketPosition == MarketPosition[1] and CurrentContracts > CurrentContracts[1] Then signalcount = signalcount+1; if condition1 == true and signalcount < 4 then buy("매수1"); if condition2 == true and signalcount < 4 then buy("매수2"); if condition1 == true and signalcount < 4 then sell("매도1"); if condition2 == true and signalcount < 4 then sell("매도2"); 즐거운 하루되세요 > 꾸주니 님이 쓴 글입니다. > 제목 : 시스템식 문의 드립니다. > 매매횟수에 제한을 둘려고 하는데요. 예전에 한 번 문의드렸던 적이 있어서 알려 주신 데로 적용했지만 결과가 원하는 데로 나오지 않았습니다. 제가 사용하는 시스템 환경은 다음과 같습니다. 1. 신호종류 : 매수/매도 각각 2개(매수1,매수2,매도1,매도2) 2. 매수와 매도는 같은 봉에서 동시에 발생할 수도 있습니다. 3. 청산 : 별도의 청산신호 외에 당일 종가 청산 위와 같을 때 당일 최대 매매횟수를 4회로 해서 4회가 넘으면 당일은 신호가 더 이상 발생하지 않게 하려고 하였습니다. 제가 사용한 식은 다음과 같습니다. var : signalcount(0),cnt(0); signalcount = 0; for cnt = 0 to 10 { if sdate == EntryDate(cnt)then signalcount = signalcount+1; } if condition1 == true and signalcount < 4 then buy("매수1"); if condition2 == true and signalcount < 4 then buy("매수2"); if condition1 == true and signalcount < 4 then sell("매도1"); if condition2 == true and signalcount < 4 then sell("매도2"); 위의 수식이라면 매수1/매수2가 동시에 신호가 발생한다고 하더라도 최대 5번이 나와야 정상이지 않은가요? 이렇게 적용햇을 때 많이 나오는 날은 8번까지 신호가 나옵니다. 혹시나 싶어서 조건에서 signalcount < 3 으로 해도 크게 달라지지 않구요. 1~2의 오차는 있을 수는 있다고 하더라도 8번은 제가 의도하는 매매횟수의 2번이 넘는 큰 수라 이해가 안됩니다. 뭐가 잘못되었는지요? 부탁드립니다.