전략에 따른 RSI 트렌드

저자:차오장, 날짜: 2023-11-07 16:33:43
태그:

img

전반적인 설명

이 전략은 상대적 강도 지표 (RSI) 지표에 기초하여 과반 구매 및 과반 판매 상황을 식별하고 트렌드를 추적하기 위해 설계되었습니다. RSI가 과반 판매 라인 아래에있을 때 길게 이동하고 RSI가 과반 구매 라인 위에있을 때 짧게 이동하여 시장의 주요 트렌드를 따라 수익을 창출하는 것을 목표로합니다.

전략 논리

이 전략은 RSI 지표를 사용하여 시장에서 과소매와 과소매 조건을 식별합니다. RSI는 특정 기간 동안의 가격 변화에 따라 계산됩니다. 30 이하의 RSI는 과소매로 간주되며 70 이상의 RSI는 과소매로 간주됩니다.

특히, 이 전략은 먼저 RSI 매개 변수 길이=14, 과잉 구매=70, 과잉 판매=30를 정의하고, 그 다음 닫기 가격에 기초하여 RSI 값 vrsi를 계산합니다. vrsi가 과잉 구매 라인 이상 또는 과잉 판매 라인 아래에 넘을 때, 그에 따라 긴 또는 짧은 거래를 유발합니다. 거래를 입력 한 후, etoroStopTicks 틱의 스톱 손실이 설정됩니다. 거래 창 내에서 스톱 손실이 유발되면 포지션은 종료됩니다.

이 방법으로 전략은 시장의 주요 트렌드를 따라갈 수 있습니다. 과잉 판매 상황에서 길고 과잉 구매 상황에서 짧습니다.

장점

  • 트렌드를 파악하기 위해 과반 구매/ 과반 판매 시장 조건을 식별하기 위해 RSI를 활용합니다.
  • 다양한 기간을 테스트하기 위한 유연한 백트테스팅 창
  • 단일 거래 손실을 통제하기 위한 합리적인 스톱 로스 설정

위험성

  • RSI 분리는 잘못된 신호를 생성 할 수 있습니다.
  • 정적 스톱 손실은 시장 변동에 적응하지 못합니다.
  • 트렌드 반전을 확인하기 어렵고, 반전 거래로 이어질 수 있습니다.

해결책:

  • 잘못된 RSI 신호에 기초한 잘못된 항목을 피하기 위해 필터 표시기를 추가합니다.
  • 동적 스톱 로스 (Stop Loss) 로 실시간 시장 움직임을 추적합니다.
  • 트렌드 판단 도구를 추가하여 역거래를 방지합니다.

개선

이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. 최고의 성능을 위해 RSI 매개 변수를 최적화

다양한 RSI 기간과 과잉 구매/ 과잉 판매 수준을 테스트하여 최적의 매개 변수를 찾고 잘못된 신호를 줄이십시오.

  1. 트렌드 판단 도구를 추가하여 역 트렌드 거래를 피합니다.

트렌드 방향을 판단하고 전환점에 잘못된 신호를 피하기 위해 MA, MACD를 추가하십시오.

  1. 동적 스톱 손실

ATR을 사용해서 시장 변동을 더 잘 추적하기 위해 적응식 스톱 로스를 설정합니다.

  1. 진입 규정을 개선

입력 정확성을 높이기 위해 RSI 신호에 브레이크오웃, 볼륨 증가와 같은 다른 조건을 추가합니다.

결론

이 전략은 RSI를 사용하여 과반 구매 및 과반 판매 상황을 식별하여 트렌드를 잡습니다. 전통적인 추적 중지 전략에 비해 시장을 지표로 타이밍하는 것이 장점입니다. 그러나 RSI 분화 및 트렌드 역전을 감지 할 수없는 문제와 같은 문제는 해결해야합니다. 매개 변수 최적화, 트렌드 판단, 동적 중지 손실에 대한 추가 개선은 안정성과 수익성을 향상시킬 수 있습니다.


/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

strategy("RSI Etoro Strategy", overlay=true, max_bars_back=2000)
// To use:
// Capital = capital * leverage
// Slippage Ticks: 3, 5 ? (Mainly for spread)
// etoroStopTicks: Set it accordingly to the stock (to corresponds to etoro default of 50 % for exemple...)

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 12, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 1995)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 1995)


// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"

length = input( 14 )
overSold = input( 30 )
overBought = input( 70 )
etoroStopTicks = input( 120 )
// 120 because it is approximatively the number of ticks for default SL of 50% at x5 leverage for copper (no fee)...
price = close

vrsi = rsi(price, length)

if (not na(vrsi))
    if (crossover(vrsi, overSold))
        strategy.entry("RsiLE", strategy.long, comment="RsiLE", when = window())
    if (crossunder(vrsi, overBought))
        strategy.entry("RsiSE", strategy.short, comment="RsiSE", when = window())
strategy.exit("exit SE", "RsiSE", loss=etoroStopTicks, when = window())
strategy.exit("exit LE", "RsiLE", loss=etoroStopTicks, when = window())

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

더 많은