커뮤니티

다른점..

프로필 이미지
rlaxoeh
2012-03-20 15:43:22
439
글번호 49154
답변완료
안녕하세요.. 한방향으로 한번만 진입하도록 제가 포지션이 있으면 카운터를 넣어서 해보려고 했는데 가르쳐 주신 방법과 다르네요.. 카운터를 넣어서 하는방법이 왜 다른결과 가 나오는지 첫번째와 두번째 시스템 비교부탁 드립니다. 첫번째 input : len(3.2), len1(0.34); var : cond1(False), cond2(False), ccc1(0), ccc2(0); 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); } if date <> date[1] then{ ccc1 = 0; ccc2 = 0; } if stime < 150000 then { if ccc1<1 then{ if dayopen > var1 Then{ buy("매수1", atstop, dayopen+(var1-var2)*len1); if MarketPosition <> 0 then ccc1 = ccc1+1; } if dayopen < var2 Then{ buy("매수4", atstop, var2); if MarketPosition <> 0 then ccc1 = ccc1+1; } } if ccc2 <1 then{ if dayopen > var1 then{ sell("매도1",atstop, var1); if MarketPosition <> 0 then ccc2 = ccc2+1; } if dayopen <var2 Then{ sell("매도", atstop, dayopen-(var1-var2)*len1); if MarketPosition <> 0 then ccc2 = ccc2+1; } } } if MarketPosition <>0 Then { exitlong("매수청산", atstop, Highest(H,BarsSinceEntry+1)-atr(20)*len); exitshort("매도청산", atstop, Lowest(L,BarsSinceEntry+1)+atr(20)*len); } SetStopEndofday(150400); 두번째 input : len(3.2), len1(0.34); 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 < var2 Then{ buy("매수4", atstop, var2); } } if cond2 == False and MarketPosition != -1 then{ if dayopen > var1 then{ sell("매도1",atstop, var1); } 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-20 16:58:11

안녕하세요 예스스스탁입니다. 두번째식은 발생한 진입신호의 날짜와 포지션형태를 가지교 체크하는 식이고 첫번째 식은 ccc1과 ccc2는 신호와 관계없이 if조건으로 카운트를 하는 내용입니다. 만약 당일 dayopen > var1 상태에서 매수조건이 최초 발생하면 ccc1이 1값이 되고 동시에 ccc2값도 1이 됩니다. 왜냐하면 CCC2값도 현재 0이고 ccc2 <1 if dayopen > var1 then 조건도 만족하고 if MarketPosition <> 0 then도 만족하기 때문입니다. 즉 동일한 조건으로 변수이름만 다른게 하여 값을 누적하게 되기 때문에 매수와 매도를 각각 카운트 하는 내용으로는 맞지 않습니다. 즐거운 하루되세요 > rlaxoeh 님이 쓴 글입니다. > 제목 : 다른점.. > 안녕하세요.. 한방향으로 한번만 진입하도록 제가 포지션이 있으면 카운터를 넣어서 해보려고 했는데 가르쳐 주신 방법과 다르네요.. 카운터를 넣어서 하는방법이 왜 다른결과 가 나오는지 첫번째와 두번째 시스템 비교부탁 드립니다. 첫번째 input : len(3.2), len1(0.34); var : cond1(False), cond2(False), ccc1(0), ccc2(0); 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); } if date <> date[1] then{ ccc1 = 0; ccc2 = 0; } if stime < 150000 then { if ccc1<1 then{ if dayopen > var1 Then{ buy("매수1", atstop, dayopen+(var1-var2)*len1); if MarketPosition <> 0 then ccc1 = ccc1+1; } if dayopen < var2 Then{ buy("매수4", atstop, var2); if MarketPosition <> 0 then ccc1 = ccc1+1; } } if ccc2 <1 then{ if dayopen > var1 then{ sell("매도1",atstop, var1); if MarketPosition <> 0 then ccc2 = ccc2+1; } if dayopen <var2 Then{ sell("매도", atstop, dayopen-(var1-var2)*len1); if MarketPosition <> 0 then ccc2 = ccc2+1; } } } if MarketPosition <>0 Then { exitlong("매수청산", atstop, Highest(H,BarsSinceEntry+1)-atr(20)*len); exitshort("매도청산", atstop, Lowest(L,BarsSinceEntry+1)+atr(20)*len); } SetStopEndofday(150400); 두번째 input : len(3.2), len1(0.34); 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 < var2 Then{ buy("매수4", atstop, var2); } } if cond2 == False and MarketPosition != -1 then{ if dayopen > var1 then{ sell("매도1",atstop, var1); } 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);