커뮤니티

문의드립니다.

프로필 이미지
베드로
2015-07-14 10:28:42
113
글번호 88382
답변완료
안녕하세요 보조지표를 작성하여 시스템식을 적용하면 다음과 같은 문제점이 발생됩니다. (해외선물 Crude Oil 5분봉 시뮬레이션차트적용) 1. 보조지표의 dayOpen(0)+var1*len 값에서 시스템신호의 위치가 80%는 맞고 20%는 틀립니다.(보조지표와 시스템식신호와의 차이발생) 2. 시간제어 a)시작시간 :17시보다크고 또는 16시보다작다 b)종료시간 :포지션보유시 장종료 직전에 청산 위(a,b)식을 사용하면 같은방향 진입제어가 안됩니다. 3. 전일변동폭계산에서 일봉의 고저와 분봉의 고저가 차이날수있나요(해선) 감사합니다. ========================================================================= 보조지표 input : P(25); var1 = DayOpen; var2 = dayopen+(dayhigh(1)-daylow(1))*(P/100); var3 = dayopen-(dayhigh(1)-daylow(1))*(P/100); plot1(var1,"dayopen"); plot2(var2,"25"); plot3(var3,"25"); 시스템식 input : len(0.25), len1(2.7),n(20),tcount(2); var: CurrentEntryNum(0); var1 = dayHigh(1)-dayLow(1); if date<>date[1] Then { var10 = TotalTrades; } CurrentEntryNum = TotalTrades; Condition1 = date==exitdate(1) And MarketPosition(1) == 1; Condition2 = date==exitdate(1) And MarketPosition(1) == -1; if stime < 160000 then { if CurrentEntryNum < var10 + tcount and Condition1 == false and MarketPosition <> 1 Then buy("매수", atstop, dayOpen(0)+var1*len); if CurrentEntryNum < var10 + tcount and Condition2 == false and MarketPosition <> -1 Then sell("매도", atstop, dayOpen(0)-var1*len); } //청산 If marketposition == 1 Then { exitlong("매수청산",Atstop,highest(high,barssinceentry+1)-atr(n)*len1); } if MarketPosition == -1 then{ exitshort("매도청산",Atstop,lowest(low,barssinceentry+1)+atr(n)*len1); } /*if stime == 160000 or (stime > 160000 and stime[1] < 160000) Then{ exitlong(); ExitShort(); }*/
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2015-07-14 12:43:12

안녕하세요 예스스탁입니다. 식을 수정했습니다. dayhigh/daylow/dayclose/dayopen은 일봉데이터에서 값을 가져옵니다. 아래식은 분봉데이터에서 직접 일봉 값을 계산합니다. 해외선물이 경우 저희가 데이터 관리를 하지 않고 각 선물사에서 모든 데이터를 관리하는데 분봉과 일봉데이터가 차이가 있는 경우가 있습니다. 1. input : P(25); var : cnt(0); Array : OO[10](0),HH[10](0),LL[10](0); if Bdate != Bdate[1] Then{ OO[0] = O; HH[0] = H; LL[0] = L; for cnt = 1 to 9{ OO[0] = OO[cnt-1][1]; HH[0] = HH[cnt-1][1]; LL[0] = LL[cnt-1][1]; } } var1 = OO[0]; var2 = OO[0]+(HH[1]-LL[1])*(P/100); var3 = OO[0]-(HH[1]-LL[1])*(P/100); plot1(var1,"dayopen"); plot2(var2,"25"); plot3(var3,"25"); 2. input : len(0.25), len1(2.7),n(20),tcount(2); var: CurrentEntryNum(0); var : cnt(0); Array : OO[10](0),HH[10](0),LL[10](0); if Bdate != Bdate[1] Then{ OO[0] = O; HH[0] = H; LL[0] = L; for cnt = 1 to 9{ OO[0] = OO[cnt-1][1]; HH[0] = HH[cnt-1][1]; LL[0] = LL[cnt-1][1]; } } var1 = HH[1]-LL[1]; if bdate <> bdate[1] Then { var10 = TotalTrades; } CurrentEntryNum = TotalTrades; Condition1 = date==exitdate(1) And MarketPosition(1) == 1; Condition2 = date==exitdate(1) And MarketPosition(1) == -1; if stime >= 170000 or stime < 160000 then { if CurrentEntryNum < var10 + tcount and Condition1 == false and MarketPosition <> 1 Then buy("매수", atstop, OO[0]+var1*len); if CurrentEntryNum < var10 + tcount and Condition2 == false and MarketPosition <> -1 Then sell("매도", atstop, OO[0]-var1*len); } //청산 If marketposition == 1 Then { exitlong("매수청산",Atstop,highest(high,barssinceentry+1)-atr(n)*len1); } if MarketPosition == -1 then{ exitshort("매도청산",Atstop,lowest(low,barssinceentry+1)+atr(n)*len1); } if stime == 160000 or (stime > 160000 and stime[1] < 160000) Then{ exitlong(); ExitShort(); } 즐거운 하루되세요 > 베드로 님이 쓴 글입니다. > 제목 : 문의드립니다. > 안녕하세요 보조지표를 작성하여 시스템식을 적용하면 다음과 같은 문제점이 발생됩니다. (해외선물 Crude Oil 5분봉 시뮬레이션차트적용) 1. 보조지표의 dayOpen(0)+var1*len 값에서 시스템신호의 위치가 80%는 맞고 20%는 틀립니다.(보조지표와 시스템식신호와의 차이발생) 2. 시간제어 a)시작시간 :17시보다크고 또는 16시보다작다 b)종료시간 :포지션보유시 장종료 직전에 청산 위(a,b)식을 사용하면 같은방향 진입제어가 안됩니다. 3. 전일변동폭계산에서 일봉의 고저와 분봉의 고저가 차이날수있나요(해선) 감사합니다. ========================================================================= 보조지표 input : P(25); var1 = DayOpen; var2 = dayopen+(dayhigh(1)-daylow(1))*(P/100); var3 = dayopen-(dayhigh(1)-daylow(1))*(P/100); plot1(var1,"dayopen"); plot2(var2,"25"); plot3(var3,"25"); 시스템식 input : len(0.25), len1(2.7),n(20),tcount(2); var: CurrentEntryNum(0); var1 = dayHigh(1)-dayLow(1); if date<>date[1] Then { var10 = TotalTrades; } CurrentEntryNum = TotalTrades; Condition1 = date==exitdate(1) And MarketPosition(1) == 1; Condition2 = date==exitdate(1) And MarketPosition(1) == -1; if stime < 160000 then { if CurrentEntryNum < var10 + tcount and Condition1 == false and MarketPosition <> 1 Then buy("매수", atstop, dayOpen(0)+var1*len); if CurrentEntryNum < var10 + tcount and Condition2 == false and MarketPosition <> -1 Then sell("매도", atstop, dayOpen(0)-var1*len); } //청산 If marketposition == 1 Then { exitlong("매수청산",Atstop,highest(high,barssinceentry+1)-atr(n)*len1); } if MarketPosition == -1 then{ exitshort("매도청산",Atstop,lowest(low,barssinceentry+1)+atr(n)*len1); } /*if stime == 160000 or (stime > 160000 and stime[1] < 160000) Then{ exitlong(); ExitShort(); }*/