커뮤니티
식에 뭐가 잘못됐는지 몰겠습니다
2011-04-03 20:03:08
593
글번호 37199
input : P1(5),P2(20),P3(60),P4(120),Period(20),D1(2);
var : sumc(0),idx(0);
if date != date[1] Then{
value99 = 0;
sumc = 0;
idx = 0;
}
sumc = sumc+C;
idx = idx+1;
#5이평
if dayindex < P1 Then
var1 = sumc/idx;
Else
var1 = ma(C,P1);
#20이평
if dayindex < P2 Then
var2 = sumc/idx;
Else
var2 = ma(C,P2);
#60이평
if dayindex < P3 Then
var3 = sumc/idx;
Else
var3 = ma(C,P3);
#120이평
if dayindex < P4 Then
var4 = sumc/idx;
Else
var4 = ma(C,P4);
if dayindex < Period Then{
value1 = sumc/idx+std(C,idx)*D1;
value2 = sumc/idx;
value3 = sumc/idx-std(C,idx)*D1;
}
Else{
value1 = BollBandUp(Period,D1);
value2 = ma(C,Period);
value3 = BollBandDown(Period,D1);
}
Condition1 = (var1 >= var3 and var3 >= var2 and var2 >= var4) or
(var3 >= var2 and var2 >= var1 and var1 >= var4);
Condition2 = (var1 >= var3 and var3 >= var2 and var2 >= var4) or
(var3 >= var2 and var2 >= var1 and var1 >= var4);
if MarketPosition == 0 then{
if Condition1 == true and crossup(H,value1) Then
value99 = -1;
if Condition2 == true and CrossDown(L,value3) Then
value99 = 1;
}
if MarketPosition != 0 Then
value99 = 0;
if MarketPosition == 0 then{
if value99 == -1 and CrossDown(StochasticsK(5,3),StochasticsD(5,3,3))Then
sell();
if value99 == 1 and CrossUp(StochasticsK(5,3),StochasticsD(5,3,3)) Then
Buy();
}
if MarketPosition == 1 Then
ExitLong("bx",AtStop,value1);
if MarketPosition == -1 Then
ExitShort("sx",AtStop,value3);
SetStopLoss(0.45,PointStop);#0.45손실
SetStopProfittarget(0.45,PointStop);#0.45수익
1.만들어 주신 수식으로 위 시스템식을 만들었는데 문제는 그림에서와 같이 포지션이 매수 상태일때 볼밴상단선에 닿으면 청산
포션이 매도상태일때 볼밴하단에 닿으면 청산 이렇게 식으로 정확히 표현된거 같은데
실제로 돌려보니 그림처럼 청산시점과 상관없는 시점에 청산이 되는군요
문제가 무엇입니까?
2. 그리고 장시작후 62전까지는 아무신호도 나오지 않게 해주시고 62개봉 이후부터 진입신호가 나올수 있도록 수정좀 부탁드립니다
- 1. 당일볼밴.png (0.02 MB)
답변 1
예스스탁 예스스탁 답변
2011-04-04 13:59:31
안녕하세요
예스스탁입니다.
청산식을 조금 수정했습니다.
제일 하단의 주석을 참고하시기 바랍니다.
62개봉 이후에 신호가 발생하도록 수정했습니다.
input : P1(5),P2(20),P3(60),P4(120),Period(20),D1(2);
var : sumc(0),idx(0);
if date != date[1] Then{
value99 = 0;
sumc = 0;
idx = 0;
}
sumc = sumc+C;
idx = idx+1;
#5이평
if dayindex < P1 Then
var1 = sumc/idx;
Else
var1 = ma(C,P1);
#20이평
if dayindex < P2 Then
var2 = sumc/idx;
Else
var2 = ma(C,P2);
#60이평
if dayindex < P3 Then
var3 = sumc/idx;
Else
var3 = ma(C,P3);
#120이평
if dayindex < P4 Then
var4 = sumc/idx;
Else
var4 = ma(C,P4);
if dayindex < Period Then{
value1 = sumc/idx+std(C,idx)*D1;
value2 = sumc/idx;
value3 = sumc/idx-std(C,idx)*D1;
}
Else{
value1 = BollBandUp(Period,D1);
value2 = ma(C,Period);
value3 = BollBandDown(Period,D1);
}
Condition1 = (var1 >= var3 and var3 >= var2 and var2 >= var4) or
(var3 >= var2 and var2 >= var1 and var1 >= var4);
Condition2 = (var1 >= var3 and var3 >= var2 and var2 >= var4) or
(var3 >= var2 and var2 >= var1 and var1 >= var4);
if MarketPosition == 0 then{
if Condition1 == true and crossup(H,value1) Then
value99 = -1;
if Condition2 == true and CrossDown(L,value3) Then
value99 = 1;
}
if MarketPosition != 0 Then
value99 = 0;
if MarketPosition == 0 and dayindex >= 62 then{
if value99 == -1 and CrossDown(StochasticsK(5,3),StochasticsD(5,3,3))Then
sell();
if value99 == 1 and CrossUp(StochasticsK(5,3),StochasticsD(5,3,3)) Then
Buy();
}
if MarketPosition == 1 Then{
ExitLong("bx1",AtStop,value3); #매수후 하단 터치시 청산
ExitLong("bx2",Atlimit,value1);#매수후 상단 터치시 청산
}
if MarketPosition == -1 Then{
ExitShort("sx1",AtStop,value1);#매도후 상단 터치시 청산
ExitShort("sx2",AtLimit,value3); #매도후 하단 터치시 청산
}
SetStopLoss(0.45,PointStop);#0.45손실
SetStopProfittarget(0.45,PointStop);#0.45수익
즐거운 하루되세요
> 극장주 님이 쓴 글입니다.
> 제목 : 식에 뭐가 잘못됐는지 몰겠습니다
> input : P1(5),P2(20),P3(60),P4(120),Period(20),D1(2);
var : sumc(0),idx(0);
if date != date[1] Then{
value99 = 0;
sumc = 0;
idx = 0;
}
sumc = sumc+C;
idx = idx+1;
#5이평
if dayindex < P1 Then
var1 = sumc/idx;
Else
var1 = ma(C,P1);
#20이평
if dayindex < P2 Then
var2 = sumc/idx;
Else
var2 = ma(C,P2);
#60이평
if dayindex < P3 Then
var3 = sumc/idx;
Else
var3 = ma(C,P3);
#120이평
if dayindex < P4 Then
var4 = sumc/idx;
Else
var4 = ma(C,P4);
if dayindex < Period Then{
value1 = sumc/idx+std(C,idx)*D1;
value2 = sumc/idx;
value3 = sumc/idx-std(C,idx)*D1;
}
Else{
value1 = BollBandUp(Period,D1);
value2 = ma(C,Period);
value3 = BollBandDown(Period,D1);
}
Condition1 = (var1 >= var3 and var3 >= var2 and var2 >= var4) or
(var3 >= var2 and var2 >= var1 and var1 >= var4);
Condition2 = (var1 >= var3 and var3 >= var2 and var2 >= var4) or
(var3 >= var2 and var2 >= var1 and var1 >= var4);
if MarketPosition == 0 then{
if Condition1 == true and crossup(H,value1) Then
value99 = -1;
if Condition2 == true and CrossDown(L,value3) Then
value99 = 1;
}
if MarketPosition != 0 Then
value99 = 0;
if MarketPosition == 0 then{
if value99 == -1 and CrossDown(StochasticsK(5,3),StochasticsD(5,3,3))Then
sell();
if value99 == 1 and CrossUp(StochasticsK(5,3),StochasticsD(5,3,3)) Then
Buy();
}
if MarketPosition == 1 Then
ExitLong("bx",AtStop,value1);
if MarketPosition == -1 Then
ExitShort("sx",AtStop,value3);
SetStopLoss(0.45,PointStop);#0.45손실
SetStopProfittarget(0.45,PointStop);#0.45수익
1.만들어 주신 수식으로 위 시스템식을 만들었는데 문제는 그림에서와 같이 포지션이 매수 상태일때 볼밴상단선에 닿으면 청산
포션이 매도상태일때 볼밴하단에 닿으면 청산 이렇게 식으로 정확히 표현된거 같은데
실제로 돌려보니 그림처럼 청산시점과 상관없는 시점에 청산이 되는군요
문제가 무엇입니까?
2. 그리고 장시작후 62전까지는 아무신호도 나오지 않게 해주시고 62개봉 이후부터 진입신호가 나올수 있도록 수정좀 부탁드립니다
다음글