커뮤니티
시스템식문의
2004-04-29 13:31:19
713
글번호 3434
//매수식
if bposition != 1 then Begin
if Cond1 then {
buy();
buyCond = 1;
bposition = 1;
}
if Cond2 then {
buy();
buyCond = 2;
bposition = 1;
}
if Cond3 then {
buy();
buyCond = 3;
bposition = 1;
}
End;
//매수청산식
if buyCond == 1 and Cond4 then {
exitlong();
bPosition = 0;
}
if buyCond == 2 and Cond5 then {
exitlong();
bPosition = 0;
}
if buyCond == 3 and Cond6 then {
exitlong();
bPosition = 0;
}
다음과 같이 진입조건에 따른 청산식을 작성하였는데 만약에 cnd4에 경우는 매수청산과
동시에 매도진입을 하려고 합니다. 그러면
if buyCond == 1 and Cond4 then {
sell();
bPosition = 0;
}
이렇게 작성하면 된다고 생각했는데 청산과과 동시에 진입은 되는데 제가 설정해놓은
목표가 청산이 되는경우 청산후 청산가 보다 위나 아래로 가면 기존방향으로 재진입이
됩니다. 다시말하면
if buyCond == 1 and Cond4 then {
sell();
bPosition = 0;
}
이조건이 또 만족하면서 실행된다고 생각되는데 어찌하여 이런 현상이 발생하는것인지
조언을 부탁드립니다......
답변 1
예스스탁 예스스탁 답변
2004-04-29 16:10:19
안녕하세요? 예스스탁입니다...
buyCond는 단지 이전에 조건이 발생했는지 안했는지를 파악합니다. 따라서, 실제로 현재 포지션이 어떤지를 명확하게 한다면 문제가 해결될 것 같습니다...
정확한 식이 없기 때문에 테스트 하기가 곤란한 관계로 위와 같은 경우가 발생할 수 있다고 말씀드린 것이며 문제해결이 되지 않을 경우 전체 식을 알려주셔야 보다 빨리 문제를 찾을 수 있을 것입니다.
아래의 식은 임의로 조건을 설정해서 식을 작성해 본 것입니다.
var : cond1(0), cond2(0), cond3(0), cond4(0), cond5(0), cond6(0), buycond(0);
cond1 = crossup(c, ma(c, 10));
cond2 = crossup(ma(c, 5), ma(c, 20));
cond3 = crossup(stochasticsk(12,5), stochasticsd(12,5,5));
cond4 = crossdown(c, ma(c, 10));
cond5 = crossdown(ma(c, 5), ma(c, 20));
cond6 = crossdown(stochasticsk(12,5), stochasticsd(12,5,5));
if date != date[1] then
buyCond = 0;
//매수식
if MarketPosition() != 1 then Begin
if Cond1 then {
buy("1");
buyCond = 1;
}
else if Cond2 then {
buy("2");
buyCond = 2;
}
else if Cond3 then {
buy("3");
buyCond = 3;
}
End;
//매수청산식
if marketposition() == 1 then Begin
if buyCond == 1 and Cond4 then
sell("4");
End;
if marketposition() == 1 then Begin
if buyCond == 2 and Cond5 then
exitlong("5");
End;
if marketposition() == 1 then Begin
if buyCond == 3 and Cond6 then
exitlong("6");
End;
감사합니다...
> dfsfg 님이 쓴 글입니다.
> 제목 : 시스템식문의
> //매수식
if bposition != 1 then Begin
if Cond1 then {
buy();
buyCond = 1;
bposition = 1;
}
if Cond2 then {
buy();
buyCond = 2;
bposition = 1;
}
if Cond3 then {
buy();
buyCond = 3;
bposition = 1;
}
End;
//매수청산식
if buyCond == 1 and Cond4 then {
exitlong();
bPosition = 0;
}
if buyCond == 2 and Cond5 then {
exitlong();
bPosition = 0;
}
if buyCond == 3 and Cond6 then {
exitlong();
bPosition = 0;
}
다음과 같이 진입조건에 따른 청산식을 작성하였는데 만약에 cnd4에 경우는 매수청산과
동시에 매도진입을 하려고 합니다. 그러면
if buyCond == 1 and Cond4 then {
sell();
bPosition = 0;
}
이렇게 작성하면 된다고 생각했는데 청산과과 동시에 진입은 되는데 제가 설정해놓은
목표가 청산이 되는경우 청산후 청산가 보다 위나 아래로 가면 기존방향으로 재진입이
됩니다. 다시말하면
if buyCond == 1 and Cond4 then {
sell();
bPosition = 0;
}
이조건이 또 만족하면서 실행된다고 생각되는데 어찌하여 이런 현상이 발생하는것인지
조언을 부탁드립니다......
이전글