반응형
이번에 소개하는 RVI는 일전의 RVI(Relative Volatility Index)와는 다른 Relative Vigor Index이다. 상대 변동성 지수와 구별하기 위해 RVGI라고 표기하기도 한다. 상대 활력 지수는 존 엘러스(John Ehlers)라는 엔지니어가 만든 지표로 고가-저가 차이에 비해 종가-시가 차이가 얼마나 되는지를 측정하는 모멘텀 지표다. 절댓값을 취하지 않으므로 방향성을 띄는데, 이 값을 대칭 가중 이동 평균 (SWMA, Symmetric Weighted Moving Average) 하여 오실레이터로 사용한다.
다른 오실레이터 지표들처럼 RVI가 SWMA를 상승 돌파하면 매수, RVI가 SWMA를 하락 돌파하면 매도 포지션을 취하는 게 기본적인 전략이며, 여기에 구간 밴드를 씌운다던가 기울기를 고려한다던가 하는 추가적인 조건을 넣어 전략을 수립하기도 한다. 단순히 크로스오버, 코로스 언더로 대응할 경우, 시그널이 굉장히 자주 발생할 수 있으며 모멘텀 지표이다 보니 횡보장에서 거래비용으로 지불하는 금액이 꽤 나가면서 수익률이 악화될 수 있다. 가령, 방향성(음수인지 양수인지) 정도만 고려하여 전략을 보정해도 수익률에는 크게 도움이 된다.
반응형
마지막으로 상대 활력 지수 (RVI, RVGI, Relative Vigor Index) 트레이딩 뷰 파인 스크립트 소스와 pandas-ta 소스를 공유하며 마친다.
- 상대 활력 지수 (RVI, RVGI, Relative Vigor Index) 트레이딩 뷰 파인 스크립트 지표 소스
//@version=5
indicator(title="Relative Vigor Index", shorttitle="RVGI", format=format.price, precision=2, timeframe="", timeframe_gaps=true)
len = input.int(14, title="Length", minval=1)
rvi = math.sum(ta.swma(close-open), len)/math.sum(ta.swma(high-low),len)
sig = ta.swma(rvi)
plot(rvi, color=color.green, title="RVGI")
plot(sig, color=color.red, title="Signal")
- 상대 활력 지수 (RVI, RVGI, Relative Vigor Index) 트레이딩 뷰 파인 스크립트 전략 소스
//@version=5
strategy(title="Relative Vigor Index", shorttitle="RVGI", margin_long=100, margin_short=100, default_qty_type=strategy.percent_of_equity, default_qty_value=50, commission_type=strategy.commission.percent, commission_value=0.2, pyramiding=0)
len = input.int(14, title="Length", minval=1)
rvi = math.sum(ta.swma(close-open), len)/math.sum(ta.swma(high-low),len)
sig = ta.swma(rvi)
plot(rvi, color=color.green, title="RVGI")
plot(sig, color=color.red, title="Signal")
startDate = input.time(defval=timestamp("01 Jan 1970 00:00 +0000"), group = "Test Range")
finishDate = input.time(defval=timestamp("31 Dec 2025 24:00 +0000"), group = "Test Range")
time_condition = time >= startDate and time <= finishDate
if(time_condition)
if ta.crossover(rvi, sig)
strategy.entry("매수", strategy.long, oca_type=strategy.oca.cancel, comment="매수")
if ta.crossunder(rvi, sig)
strategy.close_all('매도')
bgcolor(strategy.position_size > 0 ? color.new(color.yellow,90) : na)
- 상대 활력 지수 (RVI, RVGI, Relative Vigor Index) pandas-ta 소스
import pandas as pd
import pandas_ta as ta
import FinanceDataReader as fdr
data = fdr.DataReader('005930')
rvgi = ta.rvgi(open_ = data['Open'], high = data['High'], low = data['Low'], close = data['Close'], length=14, swma_length = 4)
data = pd.concat([data, rvgi], axis=1)
data.dropna(inplace=True)
반응형