이 전략은 VSTOP와 RSI 두 지표를 결합하여 RSI가 초과 판매 할 때 더 많은 코카이드를 수행 할 수 있으며 VSTOP를 사용하여 트렌드 방향을 판단하고 트렌드 반전이 발생할 때 적시에 중단됩니다.
RSI 지표값을 계산하고, 오버 바이 라인과 오버 세일 라인을 설정한다. RSI가 오버 바이 라인보다 크면 더 많이 하고, RSI가 오버 세일 라인보다 작으면 더 적게 한다.
VSTOP을 계산합니다. 이것은 가격 변동 범위에 따라 설정된 스톱 라인입니다. 구체적인 계산 단계는 다음과 같습니다:
ATR 지수를 계산하고 ATR의 계수를 설정합니다
최대값과 최소값을 기록합니다.
is_uptrend의 상승 추세에 따라 현재의 스톱 라인을 계산합니다.
업데이트된 스톱트렌드: vstop1 = is_uptrend ? max ((vstop_prev, stop): min ((vstop_prev, stop)
트렌드가 역전되면 스톱 라인 vstop를 재설정합니다.
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")