Strategi perdagangan mengikuti tren multi-periode berdasarkan persilangan garis sinyal RSI

RSI MA RMA EMA SMA TMA ARSI
Tanggal Pembuatan: 2025-02-18 15:04:49 Akhirnya memodifikasi: 2025-02-18 15:04:49
menyalin: 1 Jumlah klik: 358
1
fokus pada
1617
Pengikut

Strategi perdagangan mengikuti tren multi-periode berdasarkan persilangan garis sinyal RSI

Ringkasan

Strategi ini adalah sistem perdagangan pelacakan tren yang didasarkan pada indikator RSI yang relatif kuat. Dengan menghitung versi RSI yang dimodifikasi dan menggabungkan garis sinyalnya, strategi ini menangkap peluang untuk membalikkan tren dalam berbagai siklus pasar. Strategi ini tidak hanya menghitung nilai indikator, tetapi juga menampilkan zona overbought dan oversold secara visual, membantu pedagang menilai kondisi pasar dengan lebih intuitif.

Prinsip Strategi

Prinsip inti dari strategi ini adalah untuk mengidentifikasi tren pasar melalui perhitungan RSI ((ARSI)).

  1. Hitung harga tertinggi dan terendah dalam periode tertentu, dan dapatkan kisaran harga
  2. Perhitungan diferensial berdasarkan perubahan harga
  3. Menggunakan metode rata-rata bergerak pilihan (EMA, SMA, RMA, TMA) untuk memperlancar perbedaan
  4. Standarisasi hasil dalam kisaran 0-100
  5. Ketika ARSI melewati garis sinyal di bawah 50 menghasilkan sinyal ganda
  6. Ketika ARSI turun di atas 50 sinyal garis menghasilkan sinyal kosong

Keunggulan Strategis

  1. Mekanisme pengesahan sinyal yang sempurna - memastikan keandalan sinyal melalui persilangan ARSI dengan jalur sinyal dan penyaringan sumbu tengah
  2. Adaptif - mendukung berbagai metode moving average yang dapat disesuaikan dengan karakteristik pasar yang berbeda
  3. Pengendalian Risiko yang Rasional - Menggunakan metode manajemen persentase posisi untuk mengontrol risiko setiap transaksi secara efektif
  4. Efek visual yang menonjol - menunjukkan area overbought dan oversold dengan jelas dengan warna yang diisi untuk penilaian cepat
  5. Manajemen posisi reverse - posisi yang ada akan otomatis dihapus pada saat ada sinyal reverse, menghindari risiko posisi dua arah

Risiko Strategis

  1. Risiko pasar bergoyang - sinyal palsu yang mungkin sering terjadi dalam tren bergoyang horizontal
  2. Risiko keterlambatan - sinyal akan memiliki keterlambatan karena menggunakan perhitungan rata-rata bergerak
  3. Sensitivitas parameter - pengaturan parameter yang berbeda dapat menyebabkan perbedaan dalam kinerja kebijakan
  4. Adaptasi pasar risiko - strategi mungkin memiliki perbedaan yang signifikan dalam kinerja di lingkungan pasar yang berbeda
  5. Risiko Manajemen Dana - Manajemen Posisi Persentase Tetap dapat membawa risiko yang lebih besar pada saat fluktuasi yang kuat

Arah optimasi strategi

  1. Memperkenalkan penyaringan volatilitas - dapat menambahkan indikator ATR untuk memfilter sinyal perdagangan di lingkungan volatilitas rendah
  2. Meningkatkan indikator konfirmasi tren - digabungkan dengan indikator tren dengan periode yang lebih lama untuk meningkatkan keandalan sinyal
  3. Manajemen Posisi Optimasi - Menyesuaikan Rasio Pemegang Posisi dengan Tren Volatilitas Pasar
  4. Masukkan mekanisme stop loss - mengatur stop loss dinamis berbasis ATR untuk mengendalikan risiko dengan lebih baik
  5. Mengembangkan parameter adaptasi - mempelajari metode optimasi dinamis parameter untuk meningkatkan adaptasi strategi

Meringkaskan

Ini adalah strategi pelacakan tren yang terstruktur, logis, dan jelas. Dengan metode perhitungan inovatif dari RSI yang diperkuat, yang menggabungkan keunggulan dari berbagai indikator teknis, membentuk sistem perdagangan yang andal. Meskipun ada beberapa risiko yang melekat, dengan optimasi dan manajemen risiko yang masuk akal, strategi ini memiliki prospek aplikasi nyata yang baik.

Kode Sumber Strategi
/*backtest
start: 2024-02-19 00:00:00
end: 2025-02-16 08:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Ultimate RSI [LuxAlgo] Strategy", shorttitle="ULT RSI Strat", overlay=false, initial_capital=10000, currency=currency.USD, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

//------------------------------------------------------------------------------
// Settings
//------------------------------------------------------------------------------
length    = input.int(14, minval=2, title="RSI Length")
smoType1  = input.string("RMA", title="Method", options=["EMA", "SMA", "RMA", "TMA"])
src       = input(close, title="Source")

arsiCss   = input.color(color.silver, "RSI Color", inline="rsicss")
autoCss   = input.bool(true, "Auto", inline="rsicss")

// Signal Line settings
smooth    = input.int(14, minval=1, title="Signal Smooth", group="Signal Line")
smoType2  = input.string("EMA", title="Method", options=["EMA", "SMA", "RMA", "TMA"], group="Signal Line")
signalCss = input.color(color.new(#ff5d00, 0), "Signal Color", group="Signal Line")

// Overbought/Oversold style
obValue     = input.float(80, "Overbought", inline="ob", group="OB/OS Style")
obCss       = input.color(color.new(#089981, 0), "", inline="ob", group="OB/OS Style")
obAreaCss   = input.color(color.new(#089981, 80), "", inline="ob", group="OB/OS Style")

osValue     = input.float(20, "Oversold", inline="os", group="OB/OS Style")
osCss       = input.color(color.new(#f23645, 0), "", inline="os", group="OB/OS Style")
osAreaCss   = input.color(color.new(#f23645, 80), "", inline="os", group="OB/OS Style")

//------------------------------------------------------------------------------
// Function: Moving Average (selectable type)
//------------------------------------------------------------------------------
ma(x, len, maType)=>
    switch maType
        "EMA" => ta.ema(x, len)
        "SMA" => ta.sma(x, len)
        "RMA" => ta.rma(x, len)
        "TMA" => ta.sma(ta.sma(x, len), len)
 
//------------------------------------------------------------------------------
// Augmented RSI Calculation
//------------------------------------------------------------------------------
upper = ta.highest(src, length)
lower = ta.lowest(src, length)
r     = upper - lower

d     = src - src[1]
diff  = upper > upper[1] ? r : lower < lower[1] ? -r : d

num   = ma(diff, length, smoType1)
den   = ma(math.abs(diff), length, smoType1)
arsi  = den != 0 ? num / den * 50 + 50 : 50  // safeguard against division by zero

signal = ma(arsi, smooth, smoType2)

//------------------------------------------------------------------------------
// Strategy Entry Conditions
//------------------------------------------------------------------------------
// Long entry: Ultimate RSI crosses above its signal when it is below 50 (lower half)
// Short entry: Ultimate RSI crosses below its signal when it is above 50 (upper half)
longCondition  = ta.crossover(arsi, signal) and arsi < 50
shortCondition = ta.crossunder(arsi, signal) and arsi > 50

// Close opposite positions when conditions occur
if shortCondition
    strategy.close("Long")
if longCondition
    strategy.close("Short")

// Place new entries based on the conditions
if longCondition
    strategy.entry("Long", strategy.long)
if shortCondition
    strategy.entry("Short", strategy.short)

// //------------------------------------------------------------------------------
// // Plots and Constant Lines
// //------------------------------------------------------------------------------
// // Plot the Ultimate RSI and its Signal
// plot_rsi = plot(arsi, title="Ultimate RSI",
//      color = arsi > obValue ? obCss : arsi < osValue ? osCss : autoCss ? chart.fg_color : arsiCss,
//      linewidth=2)
// plot(signal, title="Signal Line", color=signalCss, linewidth=2)

// // Instead of using hline, create constant plots for OB, Midline, and OS
// plot_ob  = plot(obValue, title="Overbought", color=obCss, style=plot.style_line, linewidth=1)
// plot_mid = plot(50, title="Midline", color=color.gray, style=plot.style_line, linewidth=1)
// plot_os  = plot(osValue, title="Oversold", color=osCss, style=plot.style_line, linewidth=1)

// //------------------------------------------------------------------------------
// // Fill OB/OS Areas for Visual Clarity
// //------------------------------------------------------------------------------
// fill(plot_rsi, plot_ob, color=arsi > obValue ? obAreaCss : na)
// fill(plot_os, plot_rsi, color=arsi < osValue ? osAreaCss : na)