Sumber daya yang dimuat... Pemuatan...

RSI Trend Momentum Trading Strategy dengan Double MA dan Volume Confirmation

Penulis:ChaoZhang, Tanggal: 2024-11-28 17:02:32
Tag:RSISMA

img

Gambaran umum

Strategi ini adalah sistem trend-following yang menggabungkan sinyal oversold RSI, moving average jangka panjang, dan konfirmasi volume. Strategi ini bertujuan untuk menangkap posisi panjang selama kondisi oversold dalam tren naik yang telah ditetapkan, yang divalidasi oleh ekspansi volume. Strategi ini menggunakan RSI 10 periode, SMA ganda 250 dan 500 periode, dan rata-rata bergerak volume 20 periode sebagai indikator inti.

Prinsip Strategi

Logika inti didasarkan pada tiga kondisi kunci yang bekerja secara harmonis:

  1. RSI sinyal oversold (RSI <=30): Menangkap peluang rebound pasar
  2. Alihan bullish MA ganda (SMA250>SMA500): Mengkonfirmasi tren naik jangka panjang
  3. Konfirmasi volume (volume saat ini>volume MA*2.5): Memvalidasi pergerakan harga

Posisi panjang dimulai ketika ketiga kondisi terpenuhi secara bersamaan. Sinyal keluar dipicu oleh death cross (MA yang lebih pendek melintasi MA yang lebih panjang). Selain itu, stop-loss 5% diterapkan untuk manajemen risiko.

Keuntungan Strategi

  1. Konfirmasi ganda mengurangi sinyal palsu: Integrasi RSI, MAs dan volume memberikan penyaringan sinyal yang kuat
  2. Karakteristik yang mengikuti tren: PEM jangka panjang mencegah perdagangan yang bertentangan dengan tren
  3. Pengendalian risiko yang komprehensif: Stop loss tetap secara efektif mengelola risiko per perdagangan
  4. Kemampuan beradaptasi yang tinggi: Parameter dapat disesuaikan dengan kondisi pasar yang berbeda
  5. Pilihan perdagangan yang ketat: Berbagai kondisi memastikan waktu masuk yang optimal

Risiko Strategi

  1. Risiko keterlambatan: PEM jangka panjang menyebabkan keterlambatan signifikan dalam identifikasi tren
  2. Risiko penyaringan yang berlebihan: Kondisi ganda yang ketat dapat kehilangan peluang perdagangan yang valid
  3. Risiko pasar yang bervariasi: sinyal palsu dapat sering terjadi di pasar sampingan
  4. Risiko konfigurasi stop-loss: Stop persentase tetap mungkin tidak sesuai dengan semua kondisi pasar
  5. Risiko optimasi parameter: Over-optimasi dapat menyebabkan kinerja perdagangan langsung yang buruk

Arahan Optimasi

  1. Stop loss dinamis: Pertimbangkan untuk menerapkan ATR atau stop dinamis berbasis volatilitas
  2. Kuantifikasi kekuatan tren: Menggabungkan ADX atau indikator serupa untuk penilaian tren yang lebih baik
  3. Optimasi ukuran posisi: Sesuaikan ukuran posisi berdasarkan kekuatan sinyal dan volatilitas pasar
  4. Peningkatan mekanisme keluar: Tambahkan target keuntungan dan penghentian trailing untuk keluar fleksibel
  5. Filter waktu: Terapkan filter waktu perdagangan untuk menghindari periode yang tidak efisien

Ringkasan

Ini adalah strategi trend-mengikuti yang dirancang dengan baik dengan logika yang ketat, secara efektif menyeimbangkan pengembalian dan risiko melalui beberapa indikator teknis. kekuatan inti terletak pada sistem konfirmasi sinyal yang komprehensif dan manajemen risiko, meskipun menghadapi tantangan dalam over-filtering dan latensi.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
// © wielkieef

//@version=5
strategy(title=' Rsi Long-Term Strategy [15min]', overlay=true, pyramiding=1, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.03)

// Rsi
rsi_lenght = input.int(10, title='RSI lenght', minval=0)
rsi_up = ta.rma(math.max(ta.change(close), 0), rsi_lenght)
rsi_down = ta.rma(-math.min(ta.change(close), 0), rsi_lenght)
rsi_value = rsi_down == 0 ? 100 : rsi_up == 0 ? 0 : 100 - 100 / (1 + rsi_up / rsi_down)
rsi_overs = rsi_value <= 30
rsi_overb = rsi_value >= 70

// Volume
vol_sma_length = input.int(20, title='Volume lenght  ', minval=1)
Volume_condt = volume > ta.sma(volume, vol_sma_length) * 2.5

//SMA1
lengthSMA1 = input(250, title="Lenght SMA 1")
SMA1 = ta.sma(close, lengthSMA1)
//plot(SMA1, color=color.rgb(245, 108, 3), linewidth=1, title="SMA250")

//SMA2
lengthSMA2 = input(500, title="Lenght SMA 2")
SMA2 = ta.sma(close, lengthSMA2)
//plot(SMA2, color=#9803f5, linewidth=1, title="SMA500")


//Entry Logic
Long_cond = (rsi_overs and SMA1 > SMA2 and Volume_condt )  

if Long_cond
    strategy.entry('Long', strategy.long)

//Close Logic
Long_close = ta.crossunder(SMA1,SMA2)

if Long_close
    strategy.close("Long")

//Bar colors
Bar_color = Volume_condt ? #fc9802 : SMA1 > SMA2 ? color.rgb(84, 252, 0) : SMA1 < SMA2 ? color.maroon : color.gray
barcolor(color=Bar_color)

// Rsi value Plotshapes
plotshape(rsi_value < 30 and SMA1 > SMA2 and Volume_condt, title='Buy', color=color.new(color.green, 0), style=shape.circle, location=location.belowbar, size=size.tiny, textcolor=color.new(color.black, 0))
plotshape(rsi_value > 70 and SMA1 < SMA2 and Volume_condt, title='Sell', color=color.new(color.red, 0), style=shape.circle, location=location.abovebar, size=size.tiny, textcolor=color.new(color.black, 0))
plotshape(ta.crossunder(SMA1,SMA2) , title='DEATH CROSS', color=#000000, style=shape.xcross, location=location.abovebar, size=size.small, textcolor=color.new(color.black, 0))

//Stop-Loss// this code is from author RafaelZioni, modified by wielkieef
pera(pcnt) =>
    strategy.position_size != 0 ? math.round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
stoploss = input.float(title=' stop loss', defval=5.0, minval=0.5)
los = pera(stoploss)
strategy.exit('SL', loss=los)




// by wielkieef

Berkaitan

Lebih banyak