이 전략은 VSTOP와 RSI 지표를 결합하여 RSI가 과잉 매입되었을 때 길게 가고 RSI가 과잉 판매되었을 때 짧게 이동하며, 트렌드 방향을 결정하고 트렌드가 역전될 때 적시에 손실을 줄이기 위해 VSTOP를 사용합니다.
RSI 지표 값을 계산하고 과잉 구매 및 과잉 판매 라인을 설정합니다. RSI가 과잉 구매 라인 위에있을 때 길고 RSI가 과잉 판매 라인 아래에있을 때 짧습니다.
VSTOP를 계산합니다. 가격 변동 범위에 기반한 스톱 로스 라인입니다. 계산 단계는 다음과 같습니다.
ATR 지표를 계산하고 ATR 계수 곱을 설정
최대 가격과 최소 가격을 기록
상승 트렌드 상태 is_uptrend에 따라 현재 스톱 로스 라인을 계산합니다: 스톱 = is_uptrend? 최대 - mult * ATR: min + mult * ATR
스톱 로스 라인을 업데이트 합니다: vstop1 = is_uptrend? max ((vstop_prev, stop) : min ((vstop_prev, stop)
트렌드 반전이 발생하면, 중지 손실 라인을 다시 설정 vstup
RSI가 과잉 판매되면, 가격이 VSTOP를 넘으면, 짧게 가세요. RSI가 과잉 구매되면, 길게 가세요.
트렌드 지표와 과잉 구매/ 과잉 판매 지표를 결합하면 트렌드 시장에서 역전 기회를 잡을 수 있습니다.
스톱 손실을 설정하기 위해 VSTOP를 사용하는 것은 위험을 효과적으로 제어합니다.
유연한 RSI 매개 변수 설정은 다양한 제품에 최적화 될 수 있습니다.
VSTOP는 수동 개입 없이 정지 손실을 체계적으로 추적합니다.
ATR 매개 변수가 너무 크거나 너무 작게 설정되면 스톱 손실 라인은 의미가 없습니다. 다른 ATR 매개 변수를 테스트하거나 ATR 평균과 결합 할 수 있습니다.
범위에 묶인 시장에서 RSI는 빈번한 거래 신호를 유발하여 거래 빈도 및 미끄러짐 비용을 증가시킬 수 있습니다. RSI 매개 변수를 조정하거나 유효하지 않은 신호를 줄이기 위해 추가 필터를 추가 할 수 있습니다.
이 전략의 주요 위험은 실패한 반전이다. 트레이더는 역 트렌드 거래를 피하기 위해 더 큰 시간 프레임 트렌드 방향을 지켜야합니다. 트렌드를 결정하기 위해 장기 이동 평균을 사용할 수 있습니다.
유효하지 않은 신호를 필터링하기 위해 다른 지표를 결합하는 것을 고려하십시오. 예를 들어 볼륨, 돈치안 채널 등.
최적의 매개 변수 조합을 찾기 위해 백테스트 결과를 기반으로 매개 변수를 최적화합니다.
다른 시장 환경에 적응하기 위해 ATR 계수를 동적으로 조정하는 방법을 연구하십시오.
고위험 기간 동안 전략을 중단하는 것을 검토하십시오.
이 전략은 트렌드 판단과 과잉 구매 / 과잉 판매 수준을 통합하여 트렌딩 시장에서 반전 기회를 포착합니다. VSTOP는 위험 통제를 위해 체계적인 스톱 로스 관리를 제공합니다. 전략은 매개 변수 최적화 및 다른 지표를 결합하여 더욱 향상 될 수 있습니다. 거래자는 주요 위험인 실패한 반전을 조심해야합니다.
/*backtest start: 2022-10-02 00:00:00 end: 2023-10-08 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Vstop and RSI", overlay=true) //RSI Section length = input(2, "RSI Period") overSold = input(30, "Oversold Level") overBought = input(70, "Overbought Level") price = close vrsi = rsi (price, length) //VSTOP Section vlength = input(2, "Vstop Length") mult = input(2, "Vstop Mult") atr_ = atr(vlength) max1=0.0 min1=0.0 is_uptrend_prev = false stop=0.0 vstop_prev=0.0 vstop1=0.0 is_uptrend=false is_trend_changed=false max_ = 0.0 min_ = 0.0 vstop=0.0 max1 := max(nz(max_[1]), close) min1 := min(nz(min_[1]), close) is_uptrend_prev := nz(is_uptrend[1], true) stop := is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_ vstop_prev := nz(vstop[1]) vstop1 := is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop) is_uptrend := close - vstop1 >= 0 is_trend_changed := is_uptrend != is_uptrend_prev max_ := is_trend_changed ? close : max1 min_ := is_trend_changed ? close : min1 vstop := is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1 plot(vstop, color = is_uptrend ? green : red, style=cross, linewidth=2) if vrsi > overBought strategy.entry("Buy", strategy.long, comment="Buy") if vrsi < overSold and vstop > price strategy.entry("Sell", strategy.short, comment="Sell")