커뮤니티

오류발생

프로필 이미지
호수나라
2004-06-08 15:06:06
1187
글번호 3984
답변완료
아래의 식이 오류 발생 VAR : 매수번호(0),매도번호(0),buyposition(0),sellposition(0); if date!= date[1] then { 매수번호 = 0 ; 매도번호 = 0 ; buyposition =0 ; sellposition = 0 ; } ## 매 도 if sellposition != 1 then begin if crossup(adx(14),60) and MDI>40 THEN { SELL("MDI"); 매도번호 = 1 ; sellposition = 1 ; } end ## 매도청산 if 매도번호 == 1 and crossdown(adx(14),85) and MDI>PDI and ma(c,20)<=ma(c,20)[1] THEN { Exitshort("MDI청"); sellposition = 0 ; } 위와 같이 하면 위의 매도 조건에 맞아 매도한 경우만 매도 청산을 하여야 하는데 다른조건(예 macd)으로 매도한 경우에도 매도청산을 하는 경우가 있음 실펴보니 macd로 매도후에 위의 매도조건에도 맞으면 그것을 기억하고 있다가 macd로 매도한 것임에도 불구하고 위의 매도청산이 적용 됨 10시에 macd 매도 11시에 adx 조건 충족 12시에 adx 매도청산조건으로 매도청산 (이것은 하면 안되 거든요) 식의 결함을 알려 주세요 감사합니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2004-06-09 13:45:27

안녕하세요..예스스탁입니다. 작성하신 식의 경우 예를들어 1번 매도조건식으로 매도신호가 발생한 이후 2번 매도조건식이 발생하게 되면 1번 매도조건식도 true가 되고, 2번 매도조건식도 true가 되는 현상 때문에 의도하지 않는 청산신호가 나오게 됩니다. 매수식이나 매도식에 marketposition(0) != -1 을 추가해 주시면 위 예에서 매도포지션이 없는 상태에서 1번조건식을 만족할 경우 매도신호 발생하고 매도조건값이 true가 되며, 2번 매도 조건이 만족하더라도 marketposition(0) == 0 의 조건을 만족하지 않으므로 true값을 저장하지 않게 됩니다. 다시한번 정리하면 작성하신 식은 flag형태로 작성되었는데, 이 형태로 작성하지 말고 시스템함수를 이용하시면 될 것으로 생각됩니다. 작성하신 식을 수정해 보면 다음과 같습니다. [수정식] VAR : 매수번호(0),매도번호(0),buyposition(0),sellposition(0); if date!= date[1] then { 매수번호 = 0 ; 매도번호 = 0 ; buyposition =0 ; sellposition = 0 ; } ## 매 도 if sellposition != 1 then begin if marketposition(0) != -1 and crossup(adx(14),60) and MDI>40 THEN { SELL("MDI"); 매도번호 = 1 ; sellposition = 1 ; } end ## 매도청산 if 매도번호 == 1 and crossdown(adx(14),85) and MDI>PDI and ma(c,20)<=ma(c,20)[1] THEN { Exitshort("MDI청"); sellposition = 0 ; } 즐거운 날 되세요.. > 호수나라 님이 쓴 글입니다. > 제목 : 오류발생 > 아래의 식이 오류 발생 VAR : 매수번호(0),매도번호(0),buyposition(0),sellposition(0); if date!= date[1] then { 매수번호 = 0 ; 매도번호 = 0 ; buyposition =0 ; sellposition = 0 ; } ## 매 도 if sellposition != 1 then begin if crossup(adx(14),60) and MDI>40 THEN { SELL("MDI"); 매도번호 = 1 ; sellposition = 1 ; } end ## 매도청산 if 매도번호 == 1 and crossdown(adx(14),85) and MDI>PDI and ma(c,20)<=ma(c,20)[1] THEN { Exitshort("MDI청"); sellposition = 0 ; } 위와 같이 하면 위의 매도 조건에 맞아 매도한 경우만 매도 청산을 하여야 하는데 다른조건(예 macd)으로 매도한 경우에도 매도청산을 하는 경우가 있음 실펴보니 macd로 매도후에 위의 매도조건에도 맞으면 그것을 기억하고 있다가 macd로 매도한 것임에도 불구하고 위의 매도청산이 적용 됨 10시에 macd 매도 11시에 adx 조건 충족 12시에 adx 매도청산조건으로 매도청산 (이것은 하면 안되 거든요) 식의 결함을 알려 주세요 감사합니다.