커뮤니티
시스템식 문의 드립니다.
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번이 넘는 큰 수라 이해가 안됩니다.
뭐가 잘못되었는지요? 부탁드립니다.
이전글