RSI Moving Average Trailing Stop Strategi

Penulis:ChaoZhang, Tarikh: 2023-09-13 14:26:43
Tag:

Strategi ini menggabungkan RSI dan purata bergerak untuk bias trend dan menambah trailing stops untuk pengurusan risiko.

Logik Strategi:

  1. Hitung RSI untuk menilai tahap overbought / oversold. RSI di atas 50 isyarat kenaikan.

  2. Mengira purata bergerak pantas dan perlahan, salib emas menandakan trend bull.

  3. Peningkatan RSI yang konsisten juga menandakan masuk panjang.

  4. Selepas masuk, letakkan stop loss dan ambil garis keuntungan.

  5. Hentikan kerugian di bawah harga, ambil keuntungan di atas.

  6. Keluar apabila harga berhenti atau mengambil keuntungan.

Kelebihan:

  1. RSI mengelakkan mengejar atas dan bawah.

  2. Purata bergerak mengenal pasti arah trend.

  3. Hentian / keuntungan menyesuaikan secara dinamik dengan harga.

Risiko:

  1. RSI dan MAs terdedah kepada isyarat palsu di pasaran yang berbeza.

  2. Lebar penghentian belakang memerlukan kalibrasi yang berhati-hati, terlalu luas atau terlalu sempit bermasalah.

  3. Tidak dapat mengehadkan saiz kerugian, risiko kehilangan perdagangan besar.

Ringkasnya, strategi ini menggabungkan RSI dan MAs kemudian menggunakan hentian untuk pengurusan risiko. Dengan pengoptimuman yang kukuh dan kawalan risiko, ia dapat mencapai hasil yang baik.


/*backtest
start: 2022-09-06 00:00:00
end: 2023-09-12 00:00:00
period: 4d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("RSI and MA Strategy with Trailing Stop Loss and Take Profit",
         overlay=true,
         initial_capital=1000,
         process_orders_on_close=true,
         default_qty_type=strategy.percent_of_equity,
         default_qty_value=100,
         commission_type=strategy.commission.percent,
         commission_value=0.1)

showDate = input(defval=true, title='Show Date Range')
timePeriod = time >= timestamp(syminfo.timezone, 2022, 1, 1, 0, 0)
notInTrade = strategy.position_size <= 0

//==================================Buy Conditions============================================

//RSI
length = input(14)
rsi = ta.rsi(close, length)
buyCondition1 = rsi > 50

//MA
SMA9 = ta.sma(close, 9)
SMA50 = ta.sma(close, 50)
SMA100 = ta.sma(close, 100)
plot(SMA9, color = color.green)
plot(SMA50, color = color.orange)
plot(SMA100, color = color.blue)
buyCondition2 = SMA9 > SMA50//ta.crossover(SMA9, SMA100)

//RSI Increase
increase = 5
buyCondition3 = (rsi > rsi[1] + increase)


if (buyCondition1 and buyCondition2 and buyCondition3 and timePeriod) //and buyCondition
    strategy.entry("Long", strategy.long)

//==================================Sell Conditions============================================

//Trailing Stop Loss and Take Profit
longTrailPerc = input.float(title='Trail Long Loss (%)', minval=0.0, step=0.1, defval=2) * 0.01
shortTrailPerc = input.float(title='Trail Short Loss (%)', minval=0.0, step=0.1, defval=1) * 0.01

longStopPrice = 0.0
shortStopPrice = 0.0

longStopPrice := if strategy.position_size > 0
    stopValue = close * (1 - longTrailPerc)
    math.max(stopValue, longStopPrice[1])
else
    0

shortStopPrice := if strategy.position_size < 0
    stopValue = close * (1 + shortTrailPerc)
    math.min(stopValue, shortStopPrice[1])
else
    999999


strategy.exit(id="Exit", stop = longStopPrice, limit = shortStopPrice)

Lebih lanjut