Tren Pelacakan Rata-rata Gerak Strategi RSI

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

img

Gambaran umum

Trend Tracking Moving Average RSI adalah strategi perdagangan saham otomatis yang memanfaatkan analisis tren dan indikator overbought-oversold. Strategi ini menggunakan moving average sederhana untuk menentukan arah tren pasar dan menggabungkan indikator Relative Strength Index (RSI) untuk menghasilkan sinyal perdagangan, mewujudkan penilaian tren dan pelacakan.

Logika Strategi

Strategi ini terdiri dari tiga bagian utama:

  1. Penghakiman tren: Menghitung tren jangka panjang dengan rata-rata bergerak sederhana 200 hari, dan tren jangka pendek dengan rata-rata bergerak sederhana 30 hari dan 50 hari. Ketika rata-rata bergerak jangka pendek melintasi jangka panjang, itu adalah sinyal bullish, dan ketika melintasi di bawah, itu adalah sinyal bearish, untuk menentukan tren pasar jangka panjang dan jangka pendek.

  2. Overbought-Oversold Analysis: Menghitung indikator RSI 14 hari. RSI di atas 80 adalah zona overbought dan di bawah 20 adalah zona oversold. Sinyal perdagangan dihasilkan ketika indikator RSI turun dari zona overbought atau naik dari zona oversold.

  3. Entry and Exit: Ketika sinyal overbought atau oversold diidentifikasi, jika arahnya konsisten dengan analisis tren, posisi panjang/pendek akan dibuka.

Dengan strategi ini, dimungkinkan untuk memasuki pasar tepat waktu ketika harga berbalik, sementara menyaring beberapa perdagangan yang bising dengan menggabungkan analisis tren, dengan kontrol penarikan yang relatif bagus.

Analisis Keuntungan

Strategi ini memiliki keuntungan berikut:

  1. Menggabungkan analisis tren dan indikator overbought-oversold untuk menyaring kebisingan dan mengidentifikasi perubahan di pasar.
  2. Mempertimbangkan tren dalam jangka panjang dan jangka pendek untuk penilaian yang lebih akurat.
  3. Menggunakan moving average sebagai metode stop loss sehingga titik stop loss dapat ditetapkan berdasarkan volatilitas pasar.
  4. Kondisi masuk yang ketat membantu mencegah pelarian palsu secara efektif.

Risiko dan Solusi

Ada juga beberapa risiko dengan strategi ini:

  1. Perdagangan yang sering tidak signifikan dapat terjadi jika pasar tetap terikat rentang untuk waktu yang lama. Filter tambahan dapat ditambahkan untuk menghindari perdagangan yang tidak perlu.
  2. Ada beberapa risiko lag waktu. memperpendek parameter siklus rata-rata bergerak dapat mengurangi hal itu.
  3. Sinyal RSI dapat dipengaruhi oleh saham dan pasar. Lebih banyak faktor seperti pola lilin harus dikombinasikan untuk menilai efektivitasnya.

Arahan Optimasi

Strategi ini dapat dioptimalkan lebih lanjut dalam aspek berikut:

  1. Menambahkan lebih banyak filter seperti volume, pola candlestick untuk meningkatkan kualitas sinyal.
  2. Mengoptimalkan parameter siklus rata-rata bergerak dan RSI agar sesuai dengan karakteristik saham yang berbeda.
  3. Membangun rata-rata bergerak dinamis untuk menyesuaikan parameter secara otomatis berdasarkan volatilitas pasar dan nafsu risiko.
  4. Menggunakan teknik yang lebih canggih seperti pembelajaran mesin untuk menentukan tren pasar dengan akurasi yang lebih tinggi.

Ringkasan

Secara umum, Trend Tracking Moving Average RSI Strategy adalah ide strategi yang sangat praktis, menyaring kebisingan pasar sampai batas tertentu dengan menggabungkan analisis tren dan indikator overbought-oversold, membuat sinyal perdagangan lebih akurat dan valid.


/*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 banyak