커뮤니티

왜 역매도 진입이후 바로 청산이 나오는 건가요?

프로필 이미지
rlaxoeh
2012-03-20 17:58:30
337
글번호 49162
답변완료

첨부 이미지

안녕하세요.. 역매도 들어가고 바로 그봉에서 청산을 해버리네여.. input : len(3.2), len1(0.34), len2(0.07); var : cnt(0), cond1(False), cond2(False); if dayopen > DayClose(1) Then{ ## 전종가보다 오픈가격이 높으면 var1 = (DayHigh(1)+DayClose(1)+DayLow(1)*2)/2 - daylow(1); var2 = (DayHigh(1)+DayClose(1)+DayLow(1)*2)/2 - DayHigh(1); } if DayOpen < DayClose(1) then{ ##전종가보다 오프가격이 낮으면 var1 = (DayHigh(1)*2+DayClose(1)+DayLow(1))/2 - daylow(1); var2 = (DayHigh(1)*2+DayClose(1)+DayLow(1))/2 - DayHigh(1); } if DayOpen == DayClose(1) then{ ##전종가보다 오프가격이 같으면 var1 = (DayHigh(1)+DayClose(1)*2+DayLow(1))/2 - daylow(1); var2 = (DayHigh(1)+DayClose(1)*2+DayLow(1))/2 - DayHigh(1); } cond1 = false; cond2 = false; for cnt = 0 to 10{ if EntryDate(cnt) == sdate and MarketPosition(cnt) == 1 Then Cond1 = true; if EntryDate(cnt) == sdate and MarketPosition(cnt) == -1 Then Cond2 = true; } if stime < 150000 then { if cond1 == False then{ if dayopen > var1 and MarketPosition != 1 Then{ buy("매수1", atstop, dayopen+(var1-var2)*len1); } If DayOpen <= var1 and DayOpen>=var2 Then{ if daylow < var2 and high <var2+(var1-var2)*len1 Then{ buy("역매수",atstop, var2+(var1-var2)*len2); } } if dayopen < var2 Then{ buy("매수4", atstop, var2); } } if cond2 == False and MarketPosition != -1 then{ if dayopen > var1 then{ sell("매도1",atstop, var1); } if DayOpen <= var1 and DayOpen >= var2 Then { if DayHigh>var1 and low < var1- (var1-var2)*len1 then { sell("역매도", AtStop, var1-(var1-var2)*len1); } } if dayopen <var2 Then{ sell("매도", atstop, dayopen-(var1-var2)*len1); } } } if MarketPosition <>0 Then { exitlong("매수청산", atstop, Highest(H,BarsSinceEntry+1)-atr(20)*len); exitshort("매도청산", atstop, Lowest(L,BarsSinceEntry+1)+atr(20)*len); } SetStopEndofday(150400);
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2012-03-21 10:31:19

안녕하세요 예스스탁입니다. 하나의 봉에서 진입과 청산이 모두 스탑이 걸려 다음봉을 감시하므로 발생하는 내용입니다. 아래와 같이 수정하시면 됩니다. input : len(3.2), len1(0.34), len2(0.07); var : cnt(0), cond1(False), cond2(False); if dayopen > DayClose(1) Then{ ## 전종가보다 오픈가격이 높으면 var1 = (DayHigh(1)+DayClose(1)+DayLow(1)*2)/2 - daylow(1); var2 = (DayHigh(1)+DayClose(1)+DayLow(1)*2)/2 - DayHigh(1); } if DayOpen < DayClose(1) then{ ##전종가보다 오프가격이 낮으면 var1 = (DayHigh(1)*2+DayClose(1)+DayLow(1))/2 - daylow(1); var2 = (DayHigh(1)*2+DayClose(1)+DayLow(1))/2 - DayHigh(1); } if DayOpen == DayClose(1) then{ ##전종가보다 오프가격이 같으면 var1 = (DayHigh(1)+DayClose(1)*2+DayLow(1))/2 - daylow(1); var2 = (DayHigh(1)+DayClose(1)*2+DayLow(1))/2 - DayHigh(1); } cond1 = false; cond2 = false; for cnt = 0 to 10{ if EntryDate(cnt) == sdate and MarketPosition(cnt) == 1 Then Cond1 = true; if EntryDate(cnt) == sdate and MarketPosition(cnt) == -1 Then Cond2 = true; } if stime < 150000 then { if cond1 == False then{ if dayopen > var1 and MarketPosition != 1 Then{ buy("매수1", atstop, dayopen+(var1-var2)*len1); } If DayOpen <= var1 and DayOpen>=var2 Then{ if daylow < var2 and high <var2+(var1-var2)*len1 Then{ buy("역매수",atstop, var2+(var1-var2)*len2); } } if dayopen < var2 Then{ buy("매수4", atstop, var2); } } if cond2 == False and MarketPosition != -1 then{ if dayopen > var1 then{ sell("매도1",atstop, var1); } if DayOpen <= var1 and DayOpen >= var2 Then { if DayHigh>var1 and low < var1- (var1-var2)*len1 then { sell("역매도", AtStop, var1-(var1-var2)*len1); } } if dayopen <var2 Then{ sell("매도", atstop, dayopen-(var1-var2)*len1); } } } if MarketPosition == 1 Then exitlong("매수청산", atstop, Highest(H,BarsSinceEntry+1)-atr(20)*len); if MarketPosition == -1 Then exitshort("매도청산", atstop, Lowest(L,BarsSinceEntry+1)+atr(20)*len); SetStopEndofday(150400); 즐거운 하루되세요 > rlaxoeh 님이 쓴 글입니다. > 제목 : 왜 역매도 진입이후 바로 청산이 나오는 건가요? > 안녕하세요.. 역매도 들어가고 바로 그봉에서 청산을 해버리네여.. input : len(3.2), len1(0.34), len2(0.07); var : cnt(0), cond1(False), cond2(False); if dayopen > DayClose(1) Then{ ## 전종가보다 오픈가격이 높으면 var1 = (DayHigh(1)+DayClose(1)+DayLow(1)*2)/2 - daylow(1); var2 = (DayHigh(1)+DayClose(1)+DayLow(1)*2)/2 - DayHigh(1); } if DayOpen < DayClose(1) then{ ##전종가보다 오프가격이 낮으면 var1 = (DayHigh(1)*2+DayClose(1)+DayLow(1))/2 - daylow(1); var2 = (DayHigh(1)*2+DayClose(1)+DayLow(1))/2 - DayHigh(1); } if DayOpen == DayClose(1) then{ ##전종가보다 오프가격이 같으면 var1 = (DayHigh(1)+DayClose(1)*2+DayLow(1))/2 - daylow(1); var2 = (DayHigh(1)+DayClose(1)*2+DayLow(1))/2 - DayHigh(1); } cond1 = false; cond2 = false; for cnt = 0 to 10{ if EntryDate(cnt) == sdate and MarketPosition(cnt) == 1 Then Cond1 = true; if EntryDate(cnt) == sdate and MarketPosition(cnt) == -1 Then Cond2 = true; } if stime < 150000 then { if cond1 == False then{ if dayopen > var1 and MarketPosition != 1 Then{ buy("매수1", atstop, dayopen+(var1-var2)*len1); } If DayOpen <= var1 and DayOpen>=var2 Then{ if daylow < var2 and high <var2+(var1-var2)*len1 Then{ buy("역매수",atstop, var2+(var1-var2)*len2); } } if dayopen < var2 Then{ buy("매수4", atstop, var2); } } if cond2 == False and MarketPosition != -1 then{ if dayopen > var1 then{ sell("매도1",atstop, var1); } if DayOpen <= var1 and DayOpen >= var2 Then { if DayHigh>var1 and low < var1- (var1-var2)*len1 then { sell("역매도", AtStop, var1-(var1-var2)*len1); } } if dayopen <var2 Then{ sell("매도", atstop, dayopen-(var1-var2)*len1); } } } if MarketPosition <>0 Then { exitlong("매수청산", atstop, Highest(H,BarsSinceEntry+1)-atr(20)*len); exitshort("매도청산", atstop, Lowest(L,BarsSinceEntry+1)+atr(20)*len); } SetStopEndofday(150400);