커뮤니티
시스템식문의드립니다
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번의 경우 ...