커뮤니티

시스템식문의드립니다

프로필 이미지
세종대왕
2011-02-18 17:20:29
985
글번호 35900
답변완료
호가잔량차값의 변화에 따라 신규,반대,청산을 판단하는 시스템식을 만드는 중입니다. 아래와 같은 식들이 10개 정도되는 경우의 식을 만들어보았는데, 문제는 최적화를 하다보니 이 호가잔량차값의 폭이 해마다 다르기 때문에 호가 잔량차의폭(위호가, 아래호가)을 어떻게 잡느냐에 따라 결과가 연평균 30Pt까지 차이가납니다. 예를 들면 5000<호가잔량차의 폭<10000에서는 (신규)매도를 금지하고 청산만하고 -10000<호가잔량차의 폭<-5000에서는 (신규)매수를 금지하고 청산만하는 식입니다 2010년과 2011년의 경우는 호가잔량차의폭을 5000과 10000으로 잡으면 잘맞고 2009년이전에는 아래호가폭을 2500~4000으로 위호가폭을 7000~9000으로 하면 잘맞습니다. 그래서 고민중인데 입문 2개월차인 실력으로는 해결이 어려워 부탁드립니다. 아래 해결 아이디어를 식으로 풀 수 있을 까요? 1. 호가잔량을 실시간으로 계산하되 2. DI+ > DI- 인 구간에서는 호가잔량차값을 30분동안의 최저값을 계산하여 그값의 70%를 "Sell아래호가"로, 30분동안의 최고값을 계산하여 그값의 90%를 "Sell위호가"로 설정하여 다음봉에 적용할 외부변수초기값으로 설정한 값을 실시간으로 바꿔준다. 2. DI+ < DI- 인 구간에서는 호가잔량차값을 30분동안의 최저값을 계산하여 그값의 90%를 "Sell아래호가"로, 30분동안의 최고값을 계산하여 그값의 70%를 "Sell위호가"로 설정하여 다음봉에 적용할 외부변수초기값으로 설정한 값을 실시간으로 바꿔준다. 이렇게하면 과거데이터를 적용해도 외부변수(Sell아래호가,Sell위호가,Buy위호가,Buy아래호가)가 자동연동되므로 문제가 해결될 것 같습니다. 이 아이디어의 수식실현이 말이 안되면 다른 해결방법이 있으면 힌트 부탁드립니다. (시스템식 예시) Input : P(14),Sell아래호가(5000),Sell위호가(10000),Buy위호가(-5000),Buy아래호가(-10000); Var : value(0); value = (bids-asks); var1 = DiMinus(P); var2 = DiPlus(P); # 1번의 경우 if stime >= 090000 and (var1[1] > var1 or crossup(var2, var1)) and (value[1]< Lowest(value,3)[2]) and H < Highest(C,20) and L[1] < Lowest(C,20)[2] then{ if MarketPosition != -1 and (value > Buy위호가 or value < Buy아래호가) Then buy(); if MarketPosition == -1 and !(value > Buy위호가 or value < Buy아래호가) Then exitshort(); } if stime >= 090000 and (var2[1] > var2 or crossup(var1, var2)) and (value[1]> Highest(value,3)[2]) and L > Lowest(C,20) and H[1] > Highest(C,10)[2] then{ if MarketPosition != 0 and (value < Sell아래호가 or value > Sell위호가) Then sell(); if MarketPosition == 1 and !(value < Sell아래호가) or value > Sell위호가) Then exitlong(); } #2번의 경우 ...
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2011-02-21 14:35:51

안녕하세요 예스스탁입니다. Input : P(14),Sell아래호가(5000),Sell위호가(10000),Buy위호가(-5000),Buy아래호가(-10000); Var : value(0); var1 = DiMinus(P); var2 = DiPlus(P); var3 = int(30/BarInterval); value = (bids-asks); if var1 > var2 Then{ value1 = Lowest(value,var3)*0.7; value2 = highest(value,var3)*0.9; } Else{ value1 = Lowest(value,var3)*0.9; value2 = highest(value,var3)*0.7; } # 1번의 경우 if stime >= 090000 and (var1[1] > var1 or crossup(var2, var1)) and (value[1]< Lowest(value,3)[2]) and H < Highest(C,20) and L[1] < Lowest(C,20)[2] then{ if MarketPosition != -1 and (value2 > Buy위호가 or value1 < Buy아래호가) Then buy(); if MarketPosition == -1 and !(value2 > Buy위호가 or value1 < Buy아래호가) Then exitshort(); } if stime >= 090000 and (var2[1] > var2 or crossup(var1, var2)) and (value[1]> Highest(value,3)[2]) and L > Lowest(C,20) and H[1] > Highest(C,10)[2] then{ if MarketPosition != 0 and (value1 < Sell아래호가 or value2 > Sell위호가) Then sell(); if MarketPosition == 1 and !(value1 < Sell아래호가 or value2 > Sell위호가) Then exitlong(); } 즐거운 하루되세요 > 줄다리기 님이 쓴 글입니다. > 제목 : 시스템식문의드립니다 > 호가잔량차값의 변화에 따라 신규,반대,청산을 판단하는 시스템식을 만드는 중입니다. 아래와 같은 식들이 10개 정도되는 경우의 식을 만들어보았는데, 문제는 최적화를 하다보니 이 호가잔량차값의 폭이 해마다 다르기 때문에 호가 잔량차의폭(위호가, 아래호가)을 어떻게 잡느냐에 따라 결과가 연평균 30Pt까지 차이가납니다. 예를 들면 5000<호가잔량차의 폭<10000에서는 (신규)매도를 금지하고 청산만하고 -10000<호가잔량차의 폭<-5000에서는 (신규)매수를 금지하고 청산만하는 식입니다 2010년과 2011년의 경우는 호가잔량차의폭을 5000과 10000으로 잡으면 잘맞고 2009년이전에는 아래호가폭을 2500~4000으로 위호가폭을 7000~9000으로 하면 잘맞습니다. 그래서 고민중인데 입문 2개월차인 실력으로는 해결이 어려워 부탁드립니다. 아래 해결 아이디어를 식으로 풀 수 있을 까요? 1. 호가잔량을 실시간으로 계산하되 2. DI+ > DI- 인 구간에서는 호가잔량차값을 30분동안의 최저값을 계산하여 그값의 70%를 "Sell아래호가"로, 30분동안의 최고값을 계산하여 그값의 90%를 "Sell위호가"로 설정하여 다음봉에 적용할 외부변수초기값으로 설정한 값을 실시간으로 바꿔준다. 2. DI+ < DI- 인 구간에서는 호가잔량차값을 30분동안의 최저값을 계산하여 그값의 90%를 "Sell아래호가"로, 30분동안의 최고값을 계산하여 그값의 70%를 "Sell위호가"로 설정하여 다음봉에 적용할 외부변수초기값으로 설정한 값을 실시간으로 바꿔준다. 이렇게하면 과거데이터를 적용해도 외부변수(Sell아래호가,Sell위호가,Buy위호가,Buy아래호가)가 자동연동되므로 문제가 해결될 것 같습니다. 이 아이디어의 수식실현이 말이 안되면 다른 해결방법이 있으면 힌트 부탁드립니다. (시스템식 예시) Input : P(14),Sell아래호가(5000),Sell위호가(10000),Buy위호가(-5000),Buy아래호가(-10000); Var : value(0); value = (bids-asks); var1 = DiMinus(P); var2 = DiPlus(P); # 1번의 경우 if stime >= 090000 and (var1[1] > var1 or crossup(var2, var1)) and (value[1]< Lowest(value,3)[2]) and H < Highest(C,20) and L[1] < Lowest(C,20)[2] then{ if MarketPosition != -1 and (value > Buy위호가 or value < Buy아래호가) Then buy(); if MarketPosition == -1 and !(value > Buy위호가 or value < Buy아래호가) Then exitshort(); } if stime >= 090000 and (var2[1] > var2 or crossup(var1, var2)) and (value[1]> Highest(value,3)[2]) and L > Lowest(C,20) and H[1] > Highest(C,10)[2] then{ if MarketPosition != 0 and (value < Sell아래호가 or value > Sell위호가) Then sell(); if MarketPosition == 1 and !(value < Sell아래호가) or value > Sell위호가) Then exitlong(); } #2번의 경우 ...