Strategi RSI Purata Bergerak Pengesanan Trend

Penulis:ChaoZhang, Tarikh: 2023-11-23 17:13:06
Tag:

img

Ringkasan

Strategi RSI Moving Average Trend Tracking adalah strategi perdagangan saham automatik yang menggunakan kedua-dua analisis trend dan penunjuk overbought-oversold. Strategi ini menggunakan purata bergerak mudah untuk menentukan arah trend pasaran dan menggabungkan penunjuk Indeks Kekuatan Relatif (RSI) untuk menghasilkan isyarat perdagangan, merealisasikan penilaian trend dan penjejakan.

Logika Strategi

Strategi ini terdiri daripada tiga bahagian utama:

  1. Penghakiman trend: Mengira trend jangka panjang dengan purata bergerak mudah 200 hari, dan trend jangka pendek dengan purata bergerak mudah 30 hari dan 50 hari.

  2. Analisis Overbought-Oversold: Mengira penunjuk RSI 14 hari. RSI di atas 80 adalah zon overbought dan di bawah 20 adalah zon oversold. Isyarat perdagangan dihasilkan apabila penunjuk RSI turun dari zon overbought atau naik dari zon oversold.

  3. Masuk dan Keluar: Apabila isyarat overbought atau oversold dikenal pasti, jika arahnya konsisten dengan analisis trend, kedudukan panjang/pendek akan dibuka. Apabila purata bergerak jangka pendek dan jangka panjang mempunyai salib emas, ia dinilai bahawa trend sedang berbalik dan kedudukan sedia ada akan ditutup.

Dengan strategi ini, adalah mungkin untuk memasuki pasaran tepat pada masanya apabila harga berbalik, sambil menapis beberapa perdagangan bising dengan menggabungkan analisis trend, dengan kawalan pengambilan yang agak baik.

Analisis Kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Menggabungkan analisis trend dan penunjuk overbought-oversold untuk menapis bunyi bising dan mengenal pasti perubahan dalam pasaran.
  2. Mempertimbangkan trend dalam jangka masa panjang dan jangka pendek untuk penilaian yang lebih tepat.
  3. Menggunakan purata bergerak sebagai kaedah stop loss supaya titik stop loss boleh ditetapkan berdasarkan turun naik pasaran.
  4. Syarat masuk yang ketat membantu mengelakkan pelarian palsu dengan berkesan.

Risiko dan Penyelesaian

Terdapat juga beberapa risiko dengan strategi ini:

  1. Perdagangan tidak penting yang kerap boleh berlaku jika pasaran kekal terikat julat untuk masa yang lama. Penapis tambahan boleh ditambah untuk mengelakkan perdagangan yang tidak perlu.
  2. Terdapat beberapa risiko kelewatan masa. Memendekkan parameter kitaran purata bergerak boleh mengurangkannya.
  3. Isyarat RSI boleh dipengaruhi oleh saham dan pasaran. Lebih banyak faktor seperti corak lilin harus digabungkan untuk menilai keberkesanan.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan lagi dalam aspek berikut:

  1. Menambah lebih banyak penapis seperti kelantangan, corak candlestick untuk meningkatkan kualiti isyarat.
  2. Mengoptimumkan parameter purata bergerak dan kitaran RSI untuk sepadan dengan ciri stok yang berbeza.
  3. Membina purata bergerak dinamik untuk menyesuaikan parameter secara automatik berdasarkan turun naik pasaran dan selera risiko.
  4. Menggunakan teknik yang lebih maju seperti pembelajaran mesin untuk menentukan trend pasaran dengan ketepatan yang lebih tinggi.

Ringkasan

Secara umum, Strategi RSI Purata Bergerak Pengesanan Trend adalah idea strategi yang sangat praktikal, menapis bunyi bising pasaran hingga tahap tertentu dengan menggabungkan analisis trend dan penunjuk overbought-oversold, menjadikan isyarat perdagangan lebih tepat dan sah.


/*backtest
start: 2022-11-16 00:00:00
end: 2023-11-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mattehalen

// INPUT per TIMEFRAME
// 5min     = Legnth = 9, Source = ohlc4,MaxLoss = 1000 TrendMA = 200, ShortMA = 4, LongMA = 10
// 30min    = Legnth = 7, Source = ohlc4,MaxLoss = 1000 TrendMA = 200, ShortMA = 10, LongMA = 20

strategy("Mathias & Christer Timeframe RSI", shorttitle="M&C_RSI",overlay=true, process_orders_on_close = true, default_qty_type =  strategy.percent_of_equity, default_qty_value = 100)
len = input(9, title="Length", type=input.integer)
src = input(ohlc4, title="Source", type=input.source)
//show4h = input(true, title="show 4h", type=input.bool)
maxLoss = input(3000)

rsiCurrent = rsi(src, len)
//rsi4h = security(syminfo.ticker, "240", rsi(src, len))
rsi4h   = rsi(src, len)

//--------------------------------------------------
//MA
trendMAInput = input(200, title="trendMA", type=input.integer)
shortMAInput = input(30, title="shortMA", type=input.integer)
longMAInput = input(50, title="longMA", type=input.integer)

trendMA = ema(close,trendMAInput)
shortMA = ema(close,shortMAInput)
longMA  = ema(close,longMAInput)
plot(trendMA, color=color.black, linewidth=5)
plot(shortMA, color=color.red, linewidth=2)
plot(longMA, color=color.green, linewidth=2)
bgcolor(crossunder(shortMA,longMA) ? color.black : na, transp=10)

//--------------------------------------------------
//RSI
BuySignalBarssince = barssince(rsi4h[1]<rsi4h[0] and rsi4h[1]<20)
BuySignal       = (rsi4h[1]<rsi4h[0] and rsi4h[1]<20 and BuySignalBarssince[1]>10)
BuySignalOut   = crossunder(longMA[1],shortMA[1])
bgcolor(BuySignal ? color.green : na, transp=70)
bgcolor(BuySignalOut ? color.green : na, transp=10)



SellSignalBarssince = barssince(rsi4h[1]>rsi4h[0] and rsi4h[1]>80)
SellSignal      = (rsi4h[1]>rsi4h[0] and rsi4h[1]>80 and SellSignalBarssince[1]>10)
SellSignalOut   = crossunder(shortMA[1],longMA[1])
bgcolor(SellSignal ? color.red : na, transp=70)
bgcolor(SellSignalOut ? color.red : na, transp=10)


if BuySignal
    strategy.close("short", comment = "Exit short")
    strategy.entry("long", true)
    strategy.exit("Max Loss", "long", loss = maxLoss)

if BuySignalOut
    strategy.close("long", comment = "Exit Long")
if SellSignal
    // Enter trade and issue exit order on max loss.
    strategy.close("long", comment = "Exit Long")
    strategy.entry("short", false)
    strategy.exit("Max Loss", "short", loss = maxLoss)
if SellSignalOut
    // Force trade exit.
    strategy.close("short", comment = "Exit short")
    
//--------------------------------------------------
//ATR
MyAtr = atr(10)
AtrFactor = 10
mySLBuy  = close[BuySignalBarssince]
mySLSell = close[SellSignalBarssince]

plotchar(BuySignal, "BuySignal", "⬆", location.belowbar, color.lime,size =size.huge )
plotchar(BuySignalOut, "BuySignalOut", "█", location.belowbar, color.lime,size =size.small)
plotchar(SellSignal, "SellSignal", "⬇", location.abovebar ,color.red,size =size.huge)
plotchar(SellSignalOut, "SellSignalOut", "█", location.abovebar, color.red,size =size.small)




Lebih lanjut