커뮤니티
시스템 전략식 문의 드립니다.
2011-05-27 13:29:24
862
글번호 39154
안녕하세요..이제 막 예스랭귀지를 배우기 시작한 초짜입니다.
스토캐스틱 pop up 전략을 일봉 기준으로 짜려고 합니다.
그런데 스토캐스틱 기간값을 고정하지 않고 가격 변동성에 따라 조절되도록 adapative stochastic pop up 전략을 짜려고 합니다.
적절한 기간값은 이미 공개된 방법을 이용해 보았는데요, 그 방법 코드는 이렇습니다.
특정 기간동안 가격의 표준편차를 구하고 최근의 표준편차가 이에 비해 얼마나 큰지를 상대적으로 비교하는 방법입니다.
vars: v1(0), v2(0), v3(0), v4(0) ;
vars: lenmax(28), lenmin(7), currlen(0) ;
vars: hh(0), ll(0), stoch(0), stochma(0) ;
{-- Calculate 20-day std. Dev. And its 20-day range --}
v1 = stddev(c,20) ;
v2 = highest(v1, 20) ;
v3 = lowest(v1, 20) ;
{-- Create v4: stochastic oscillator for 20-day std. dev. --}
{-- if v1=v2 (highest level) => v4 = 1; if v1=v3 (lowest level) => v4=0 --}
if (v2-v3) > 0 then v4 = ((v1 - v3)/(v2-v3)) Else v4 = 0 ;
{-- Calculate current effective length; if v4 = 1, then length = mininum --}
currlen = IntPortion(lenmin + (lenmax-lenmin)*(1-v4)) ;
저는 이 방법을 살짝 변형해서 당일의 변동성 대신 최근 변동성의 3일 지수 이평값으로 대체하려고 시도를 해보았습니다. 그렇게 만들어 본 전략식은 다음과 같습니다.
Input : Period(20), period1(5),lenmax(25), lenmin(18), golden(80), dead(20);
Var : value(0), Value1(0), Value2(0), Value3(0), Value4(0), currlen(0);
Value1 = Std(close,period);
value2 = highest(value1, period);
value3= lowest(value1, period);
value4= ema(value1,period1);
value = StochasticsK(Period,1);
currlen = Int(lenmin + (lenmax-lenmin)*(1-value5);
if (value2-value3) > 0 then value5 = (Value1-value3)/(Value2-value3) else value5=0;
# 매수/매도청산
If CrossUP(value5, golden) Then
{
Buy();
}
# 매도/매수청산
If CrossDown(value5, dead) Then
{
Sell();
}
에러가 몇 군데서 나는데 도와주셨으면 좋겠습니다. 오늘 처음으로 건드려봐서 아직
잘 모르겠습니다. 감사합니다!
답변 1
예스스탁 예스스탁 답변
2011-05-27 15:00:13
안녕하세요
예스스탁입니다.
수정한 식입니다.
Input : Period(20), period1(5),lenmax(25), lenmin(18), golden(80), dead(20);
Var : value(0), Value1(0), Value2(0), Value3(0), Value4(0), currlen(0);
Value1 = Std(close,period);
value2 = highest(value1, period);
value3= lowest(value1, period);
value4= ema(value1,period1);
value = StochasticsK(Period,1);
currlen = Int(lenmin + (lenmax-lenmin)*(1-value5));
if (value2-value3) > 0 then
value5 = (Value1-value3)/(Value2-value3)*100;
else
value5=0;
# 매수/매도청산
If CrossUP(value5, golden) Then
{
Buy();
}
# 매도/매수청산
If CrossDown(value5, dead) Then
{
Sell();
}
즐거운 하루되세요
> yiugn 님이 쓴 글입니다.
> 제목 : 시스템 전략식 문의 드립니다.
> 안녕하세요..이제 막 예스랭귀지를 배우기 시작한 초짜입니다.
스토캐스틱 pop up 전략을 일봉 기준으로 짜려고 합니다.
그런데 스토캐스틱 기간값을 고정하지 않고 가격 변동성에 따라 조절되도록 adapative stochastic pop up 전략을 짜려고 합니다.
적절한 기간값은 이미 공개된 방법을 이용해 보았는데요, 그 방법 코드는 이렇습니다.
특정 기간동안 가격의 표준편차를 구하고 최근의 표준편차가 이에 비해 얼마나 큰지를 상대적으로 비교하는 방법입니다.
vars: v1(0), v2(0), v3(0), v4(0) ;
vars: lenmax(28), lenmin(7), currlen(0) ;
vars: hh(0), ll(0), stoch(0), stochma(0) ;
{-- Calculate 20-day std. Dev. And its 20-day range --}
v1 = stddev(c,20) ;
v2 = highest(v1, 20) ;
v3 = lowest(v1, 20) ;
{-- Create v4: stochastic oscillator for 20-day std. dev. --}
{-- if v1=v2 (highest level) => v4 = 1; if v1=v3 (lowest level) => v4=0 --}
if (v2-v3) > 0 then v4 = ((v1 - v3)/(v2-v3)) Else v4 = 0 ;
{-- Calculate current effective length; if v4 = 1, then length = mininum --}
currlen = IntPortion(lenmin + (lenmax-lenmin)*(1-v4)) ;
저는 이 방법을 살짝 변형해서 당일의 변동성 대신 최근 변동성의 3일 지수 이평값으로 대체하려고 시도를 해보았습니다. 그렇게 만들어 본 전략식은 다음과 같습니다.
Input : Period(20), period1(5),lenmax(25), lenmin(18), golden(80), dead(20);
Var : value(0), Value1(0), Value2(0), Value3(0), Value4(0), currlen(0);
Value1 = Std(close,period);
value2 = highest(value1, period);
value3= lowest(value1, period);
value4= ema(value1,period1);
value = StochasticsK(Period,1);
currlen = Int(lenmin + (lenmax-lenmin)*(1-value5);
if (value2-value3) > 0 then value5 = (Value1-value3)/(Value2-value3) else value5=0;
# 매수/매도청산
If CrossUP(value5, golden) Then
{
Buy();
}
# 매도/매수청산
If CrossDown(value5, dead) Then
{
Sell();
}
에러가 몇 군데서 나는데 도와주셨으면 좋겠습니다. 오늘 처음으로 건드려봐서 아직
잘 모르겠습니다. 감사합니다!