커뮤니티
수식 검증 부탁드립니다.
2013-10-14 14:28:45
168
글번호 68417
전략:
1) 준비 단계
a) 4개 봉의 종가를 이용하여 단기 이동평균을 계산한다. 9개 봉으로는 중기, 18개 봉으로 장기 이동평균을 계산한다.
b) 단기>중기>장기 이동평균의 조건이 충족되면 상승 추세로 간주.
c) 단기<중기<장기 이동평균의 조건이 충족되면 하락 추세로 간주.
d) 4개 봉의 지수 이동평균을 구한다.
e) 첫 번째 봉에서, 현재 봉의 시가에 이전 8개 봉의 변동성에 2를 곱한 값을 더해 상방 밴드로 정의.
f) 현재 봉의 시가에 이전 8개 봉의 변동성에 2를 곱한 값을 빼서 하방 밴드로 정의.
g) 지수 이동평균이 상단 밴드를 돌파하면, 상단 밴드는 하단 밴드가 되고, 새 하단 밴드에 이전 8개 봉의 변동성의 2배 값을 더하여 새로운 상단 밴드를 만든다.
h) 지수 이동평균이 하단 밴드를 돌파하면, 하단 밴드는 상단 밴드가 되고, 새 상단 밴드에 이전 8개 봉의 변동성의 2배 값을 빼서 새로운 하단 밴드를 만든다.
2) 매수 진입
시장이 상승 추세이고, 지수 이동평균이 상단 밴드를 돌파하면 그 봉의 종가에 매수한다.
3) 매도 진입
시장이 하락 추세이고, 지수 이동평균이 하단 밴드를 돌파하면 그 봉의 종가에 매도한다.
4) 청산
a) 가격이 하단 밴드에 닿으면 모든 매수 포지션 청산
b) 가격이 상단 밴드에 닿으면 모든 매도 포지션 청산
수식:
inputs: xmalen(4), vollen(8), multfact(2);
vars: topband(0), botband(0), xavg(0), fastma(0), medma(0), slowma(0), bulltrend(false), beartrend(false);
##밴드 정의
topband = o + bollbandup(vollen, multfact);
botband = o - bollbanddown(vollen, multfact);
##추세 정의
xavg= ema(c, xmalen);
fastma= ma(c, 4);
medma= ma(c, 9);
slowma= ma(c, 18);
bulltrend= fastma > medma and medma > slowma;
beartrend= fastma < medma and medma < slowma;
##매수
if xavg > topband and bulltrend then {
buy();
botband = topband;
topband = topband + bollbandup(vollen, multfact);
}
##매도
if xavg < botband and beartrend then {
sell();
topband = botband;
botband = botband - bollbanddown(vollen, multfact);
}
##청산
if marketposition == 1 Then {
if c < botband Then
exitlong();
if c > topband Then
exitshort();
}
궁금한건 변동성에 대한 다른 함수가 없어서 볼린저밴드를 이용했는데
혹시 변동성에 대한 함수나 수식이 있나요??
검증부탁드립니다.
답변 1
예스스탁 예스스탁 답변
2013-10-14 17:45:54
안녕하세요
예스스탁입니다.
볼린져밴드의 상단과 하단은 종목의 가격축과 비슷한 가격을 가지는 지표입니다.
예를들어 선물에서 현재봉 시가 250이고 볼린져밴드가 252라면
합해서 502입니다. 값이 너무 높아 주가나 이평값이 이값을 넘을 수가 없습니다.
마찬가지로 하단쪽은 너무 낮은 값이 됩니다.
inputs: xmalen(4), vollen(8), multfact(2);
vars: topband(0), botband(0), xavg(0), fastma(0), medma(0), slowma(0), bulltrend(false), beartrend(false);
##밴드 정의
topband = o + bollbandup(vollen, multfact);
botband = o - bollbanddown(vollen, multfact);
plot1(topband);
plot2(botband);
시스템을 만드실 때 시스템에서 계산된 값을
지표나 메세지로그로 출력해 계산값을 확인하시면서
작성하시면 작성에 도움이 많이 됩니다.
볼린져 밴드대신에 많이 사용하는 변동성지표인 ATR로 처리했습니다.
또한 지수이평이 상단이나 하단을 크로스 할때 값이 변경되도록 했습니다.
inputs: xmalen(4), vollen(8), multfact(2);
vars: topband(0), botband(0), xavg(0), fastma(0), medma(0), slowma(0), bulltrend(false), beartrend(false);
##밴드 정의
if dayindex == 0 Then{
topband = o + ATR(vollen)*multfact;
botband = o - ATR(vollen)*multfact;
}
##추세 정의
xavg= ema(c, xmalen);
fastma= ma(c, 4);
medma= ma(c, 9);
slowma= ma(c, 18);
bulltrend= fastma > medma and medma > slowma;
beartrend= fastma < medma and medma < slowma;
##매수
if crossup(xavg,topband) and bulltrend then {
buy();
botband = topband;
topband = topband + atr(vollen)*multfact;
}
##매도
if crossdown(xavg,botband) and beartrend then {
sell();
topband = botband;
botband = botband - atr(vollen)*multfact;
}
##청산
if marketposition == 1 Then {
if c < botband Then
exitlong();
if c > topband Then
exitshort();
}
즐거운 하루되세요
> jacobs 님이 쓴 글입니다.
> 제목 : 수식 검증 부탁드립니다.
> 전략:
1) 준비 단계
a) 4개 봉의 종가를 이용하여 단기 이동평균을 계산한다. 9개 봉으로는 중기, 18개 봉으로 장기 이동평균을 계산한다.
b) 단기>중기>장기 이동평균의 조건이 충족되면 상승 추세로 간주.
c) 단기<중기<장기 이동평균의 조건이 충족되면 하락 추세로 간주.
d) 4개 봉의 지수 이동평균을 구한다.
e) 첫 번째 봉에서, 현재 봉의 시가에 이전 8개 봉의 변동성에 2를 곱한 값을 더해 상방 밴드로 정의.
f) 현재 봉의 시가에 이전 8개 봉의 변동성에 2를 곱한 값을 빼서 하방 밴드로 정의.
g) 지수 이동평균이 상단 밴드를 돌파하면, 상단 밴드는 하단 밴드가 되고, 새 하단 밴드에 이전 8개 봉의 변동성의 2배 값을 더하여 새로운 상단 밴드를 만든다.
h) 지수 이동평균이 하단 밴드를 돌파하면, 하단 밴드는 상단 밴드가 되고, 새 상단 밴드에 이전 8개 봉의 변동성의 2배 값을 빼서 새로운 하단 밴드를 만든다.
2) 매수 진입
시장이 상승 추세이고, 지수 이동평균이 상단 밴드를 돌파하면 그 봉의 종가에 매수한다.
3) 매도 진입
시장이 하락 추세이고, 지수 이동평균이 하단 밴드를 돌파하면 그 봉의 종가에 매도한다.
4) 청산
a) 가격이 하단 밴드에 닿으면 모든 매수 포지션 청산
b) 가격이 상단 밴드에 닿으면 모든 매도 포지션 청산
수식:
inputs: xmalen(4), vollen(8), multfact(2);
vars: topband(0), botband(0), xavg(0), fastma(0), medma(0), slowma(0), bulltrend(false), beartrend(false);
##밴드 정의
topband = o + bollbandup(vollen, multfact);
botband = o - bollbanddown(vollen, multfact);
##추세 정의
xavg= ema(c, xmalen);
fastma= ma(c, 4);
medma= ma(c, 9);
slowma= ma(c, 18);
bulltrend= fastma > medma and medma > slowma;
beartrend= fastma < medma and medma < slowma;
##매수
if xavg > topband and bulltrend then {
buy();
botband = topband;
topband = topband + bollbandup(vollen, multfact);
}
##매도
if xavg < botband and beartrend then {
sell();
topband = botband;
botband = botband - bollbanddown(vollen, multfact);
}
##청산
if marketposition == 1 Then {
if c < botband Then
exitlong();
if c > topband Then
exitshort();
}
궁금한건 변동성에 대한 다른 함수가 없어서 볼린저밴드를 이용했는데
혹시 변동성에 대한 함수나 수식이 있나요??
검증부탁드립니다.
이전글