Strategi Pengesanan Trend RSI dan MA

Penulis:ChaoZhang, Tarikh: 2024-02-20 15:31:15
Tag:

img

Ringkasan

Strategi ini menentukan trend pasaran dan isyarat kemasukan dengan merentasi penunjuk RSI dan dua purata bergerak (MA) dari tempoh yang berbeza.

Logika Strategi

Strategi ini menggunakan dua MA 12 dan 26 tempoh. Apabila MA cepat 12 tempoh melintasi di atas MA perlahan 26 tempoh, ia menandakan trend menaik, dan sebaliknya. Strategi ini panjang pada persilangan emas dan pendek pada persilangan kematian kedua-dua MA.

Indikator RSI juga digunakan untuk menentukan zon overbought / oversold. Hanya apabila RSI lebih tinggi daripada MA 26 tempohnya, strategi akan membuka kedudukan panjang pada persimpangan emas. Dan hanya apabila RSI lebih rendah, ia akan membuka kedudukan pendek pada persimpangan kematian. Ini mengelakkan kemasukan paksa terhadap situasi overbought / oversold dan dengan itu mengawal risiko.

Analisis Kelebihan

Dengan menggabungkan MAs dan RSI untuk analisis trend dan masa, strategi ini dapat menjejaki trend dengan berkesan. Penapis RSI mengurangkan kekerapan perdagangan dan mengelakkan whipsaws di pasaran yang berbeza.

Analisis Risiko

Tanpa stop loss, kerugian boleh diperkuat pada isyarat yang salah. Pergerakan jurang yang besar juga boleh membawa kepada kerugian yang besar. Juga, penapis RSI yang tidak ditetapkan dengan betul boleh menyebabkan isyarat kemasukan yang baik hilang.

Pertimbangkan untuk menggunakan stop loss untuk mengawal kerugian maksimum. Sesuaikan parameter RSI untuk penapis yang lebih baik. Untuk pasaran yang tidak menentu, gunakan MAs yang lebih perlahan untuk menilai trend.

Arahan pengoptimuman

Strategi ini boleh ditingkatkan dalam aspek berikut:

  1. Uji gabungan MA dari tempoh yang berbeza untuk mencari parameter yang paling sesuai dengan keadaan pasaran semasa.

  2. Mengoptimumkan tempoh RSI dan logik penapis untuk masa kemasukan yang lebih baik.

  3. Tambah penunjuk lain seperti jumlah untuk kestabilan sistem yang lebih baik.

  4. Mengoptimumkan strategi stop loss untuk mengimbangi trend berikut dan kawalan risiko, contohnya, trailing stop, stop peratusan, stop dinamik dll.

Kesimpulan

Strategi ini agak mudah dan mudah, menggunakan persilangan MA untuk menentukan trend dan RSI untuk mengelakkan kemasukan paksa, dengan itu mengesan trend untuk pulangan yang baik.


/*backtest
start: 2023-02-13 00:00:00
end: 2024-02-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2

strategy(title = "EMA Cross Strategy", shorttitle = "EMA Cross",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
StartYear = input(2018, "Backtest Start Year")
StartMonth = input(1, "Backtest Start Month")
StartDay = input(1, "Backtest Start Day")
UseStopLoss = input(false,"UseStopLoss")
//rsiLong = true
rsi1 = rsi(close, 14)

window() => true

stopLoss = input(20, title = "Stop loss percentage(0.1%)")
//stopLoss = input(200, title = "Stop loss percentage(0.1%)")

maFastSource   = input(defval = open, title = "Fast MA Source")
maFastLength   = input(defval = 12, title = "Fast MA Period", minval = 1)
// long ma
maSlowSource   = input(defval = open, title = "Slow MA Source")
maSlowLength   = input(defval = 26, title = "Slow MA Period", minval = 1)

maFast = ema(maFastSource, maFastLength)
maSlow = ema(maSlowSource, maSlowLength)

//12 and 26=9%; 3 and8=2%; 26 and 55=2%; when selling on a cross under
//maFastRSI = ema(rsi1, 12)
//maSlowRSI = ema(rsi1, 26)

fast = plot(maFast, title = "Fast MA", color = #7a8598, linewidth = 2, style = line, transp = 50)
slow = plot(maSlow, title = "Slow MA", color = #e08937, linewidth = 2, style = line, transp = 50)


longEMA = crossover(maFast, maSlow)
exitLong = crossunder(maFast, maSlow) // 5% in 2018
//exitLong = crossunder(close, maFast) // 15% in 2018
//exitLong = crossunder(rsi1, maFastRSI) // 13%

shortEMA = crossover(maSlow, maFast)
exitShort = crossover(maFast, maSlow)

//if (rsi1 < ema(rsi1,7))
//rsiLong = false

//if (longEMA and (rsi1 >= highest(rsi1,10)))
//if (longEMA)
if (longEMA and (rsi1 > ema(rsi1,26)))  //RSI ema values optimal from 19 to 35
    strategy.entry("LongId", strategy.long, when=window())

//strategy.close_all(when = rsi1 > 60) // 80=26%, 90=n/a, 70=15%, 60=16% long only
//strategy.close_all(when = (shortEMA and (rsi1 <= ema(rsi1,26)))) //10% gain in 2018 long only
//strategy.close_all(when = (rsi1 <= ema(rsi1,120))) //26=17% 14=2% 42=15%
//strategy.close_all(when = (shortEMA)) // 5% gain in 2018 long only
//strategy.close_all(when = exitLong) 

//if (shortEMA and not(rsiLong))
//if (shortEMA)
if (shortEMA and (rsi1 <= ema(rsi1,26)))
    strategy.entry("ShortId", strategy.short, when=window())

if (UseStopLoss)
    strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick)
    strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)

Lebih lanjut