커뮤니티

이승필고객님의 질문사항입니다.

프로필 이미지
회원
2004-04-22 03:59:22
956
글번호 3324
답변완료
매수/매도청산 이나 매도/매수청산 이렇게 하지 않고 매수신호와 매도청산 신호를 달리하고자 할때 어떻게 해야 하나요? 예를 들어 매수는 5일 이평이 10일 이평 상향 돌파시 매수청산은 5일 이평이 20일 이평 하향 돌파시 매도는 5일 이평이 10일 이평 하향 돌파시 매도청산은 5일 이평이 20일 이평 상향 돌파시 할려는 예제를 짜볼려고 할때 전 아래와 같이 만들었습니다. <변수선언 생략> ma5 : 5일 이평 ma10 : 10일 이평 ma20 : 20일 이평 # 매수 If crossup(ma5, ma10) then buy(); # 매수청산 If crossdown(ma5, ma20) then exitlong(); # 매도 If crossdown(ma5, ma10) then sell(); # 매도청산 If crossup(ma5, ma50) then exitshort(); 위와 같게 만들지 않았지만 이렇게 했을경우 어떠한 현상이 발생하느냐 하면 10일 상향 돌파시 매수해서 20일 하향돌파시 청산을 해야 하는데 그렇지 않고 10일 상향 돌파시 매수 10일 하향돌파시 매수청산 및 매도가 실행 되더군요 물론, 중복진입은 허용하지 않았습니다. 매수청산에 매수청산이 되지 않고 매수청산과 매도중 먼저 발생하는 신호에 청산이 되고 신규매도가 이루어지더군요. 여러가지 다른 시스템도 만들어서 테스트해봤지만 모두 같은 현상이 나타납니다. 제가 잘 못 한건지? 아니면 매수와 청산을 달리 할려면 다른 방법이 있는 것인지 알려 주세요 ㅠㅠ
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2004-04-22 17:00:35

안녕하세요..예스스탁입니다. 작성하신 식의 경우는 buy함수나 sell함수의 경우 기존의 포지션을 청산하고 신규로 진입을 하기 때문에 원하지 않는 청산과 진입신호가 발생하게 되는 것입니다. 이를 해결하기 위해서는 현재의 포지션 상태를 저장해 놓고 매수포지션 진입상태일 경우 sell명령이 작동되지 않도록 하고, 매도포지션 상태이면 buy명령이 작동되지 않도록 식을 작성하시면 됩니다. [시스템식] var : bpos(0), spos(0), ma5(0), ma10(0), ma20(0); var : 매수조건(0), 매수청산조건(0), 매도조건(0), 매도청산조건(0); ma5 = ma(C,5); ma10 = ma(C,10); ma20 = ma(C,20); 매수조건 = crossup(ma5, ma10); 매수청산조건 = crossdown(ma5, ma20); 매도조건 = crossdown(ma5, ma10); 매도청산조건 = crossup(ma5, ma20); if date != date[1] then { bpos = 0; spos = 0; } if 매수조건 and spos!= -1 then { bpos=1; buy(); } if 매수청산조건 then { bpos = 0; exitlong(); } if 매도조건 and bpos != 1 then { spos = -1; sell(); } if 매도청산조건 then { spos = 0; exitshort(); } > HH_hws 님이 쓴 글입니다. > 제목 : 이승필고객님의 질문사항입니다. > 매수/매도청산 이나 매도/매수청산 이렇게 하지 않고 매수신호와 매도청산 신호를 달리하고자 할때 어떻게 해야 하나요? 예를 들어 매수는 5일 이평이 10일 이평 상향 돌파시 매수청산은 5일 이평이 20일 이평 하향 돌파시 매도는 5일 이평이 10일 이평 하향 돌파시 매도청산은 5일 이평이 20일 이평 상향 돌파시 할려는 예제를 짜볼려고 할때 전 아래와 같이 만들었습니다. <변수선언 생략> ma5 : 5일 이평 ma10 : 10일 이평 ma20 : 20일 이평 # 매수 If crossup(ma5, ma10) then buy(); # 매수청산 If crossdown(ma5, ma20) then exitlong(); # 매도 If crossdown(ma5, ma10) then sell(); # 매도청산 If crossup(ma5, ma50) then exitshort(); 위와 같게 만들지 않았지만 이렇게 했을경우 어떠한 현상이 발생하느냐 하면 10일 상향 돌파시 매수해서 20일 하향돌파시 청산을 해야 하는데 그렇지 않고 10일 상향 돌파시 매수 10일 하향돌파시 매수청산 및 매도가 실행 되더군요 물론, 중복진입은 허용하지 않았습니다. 매수청산에 매수청산이 되지 않고 매수청산과 매도중 먼저 발생하는 신호에 청산이 되고 신규매도가 이루어지더군요. 여러가지 다른 시스템도 만들어서 테스트해봤지만 모두 같은 현상이 나타납니다. 제가 잘 못 한건지? 아니면 매수와 청산을 달리 할려면 다른 방법이 있는 것인지 알려 주세요 ㅠㅠ