VSTOP 및 RSI를 기반으로 한 거래 전략


생성 날짜: 2023-10-09 15:48:46 마지막으로 수정됨: 2023-10-09 15:48:46
복사: 0 클릭수: 706
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

개요

이 전략은 VSTOP와 RSI 두 지표를 결합하여 RSI가 초과 판매 할 때 더 많은 코카이드를 수행 할 수 있으며 VSTOP를 사용하여 트렌드 방향을 판단하고 트렌드 반전이 발생할 때 적시에 중단됩니다.

전략 원칙

  1. RSI 지표값을 계산하고, 오버 바이 라인과 오버 세일 라인을 설정한다. RSI가 오버 바이 라인보다 크면 더 많이 하고, RSI가 오버 세일 라인보다 작으면 더 적게 한다.

  2. VSTOP을 계산합니다. 이것은 가격 변동 범위에 따라 설정된 스톱 라인입니다. 구체적인 계산 단계는 다음과 같습니다:

    • ATR 지수를 계산하고 ATR의 계수를 설정합니다

    • 최대값과 최소값을 기록합니다.

    • is_uptrend의 상승 추세에 따라 현재의 스톱 라인을 계산합니다.

    • 업데이트된 스톱트렌드: vstop1 = is_uptrend ? max ((vstop_prev, stop): min ((vstop_prev, stop)

    • 트렌드가 역전되면 스톱 라인 vstop를 재설정합니다.

  3. 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")