Indikator strategi divergensi tren RSI

RSI 相对强弱指数 趋势背离 交易信号 过买过卖 自动化交易
Tanggal Pembuatan: 2025-06-13 14:08:28 Akhirnya memodifikasi: 2025-06-13 14:08:28
menyalin: 0 Jumlah klik: 354
2
fokus pada
319
Pengikut

Indikator strategi divergensi tren RSI Indikator strategi divergensi tren RSI

Ringkasan

RSI Trend Off Strategy Indicator adalah alat perdagangan kuantitatif canggih yang memanfaatkan hubungan off yang terbentuk antara indeks relatif kuat (RSI) dan harga untuk memberikan sinyal beli dan jual yang sangat mungkin bagi pedagang. Strategi ini dioptimalkan khusus untuk jangka waktu 30 menit, dengan masuk dan keluar RSI yang dihitung secara akurat, digabungkan dengan sinyal off bullish dan bearish, untuk secara efektif mengidentifikasi titik balik pasar.

Prinsip Strategi

Tren RSI berbalik dari strategi berdasarkan pada sinergi dua indikator teknis inti:

  1. Indeks Relatif Lemah (RSI) level overbought/oversoldKebijakan: memungkinkan pengguna untuk menyesuaikan tingkat masuk dan keluar RSI. Secara default, tingkat masuk multihead adalah 35.0, tingkat masuk tanpa kepala adalah 76.0, tingkat keluar multihead adalah 80.0, dan tingkat keluar tanpa kepala adalah 54.1. Tingkat-tingkat ini diperoleh melalui pengujian pengalaman bertahun-tahun dan dioptimalkan khusus untuk kerangka waktu 30 menit.

  2. RSI menyimpang dari sinyalStrategi untuk mengidentifikasi dua jenis penyimpangan:

    • Pasar Sapi BerpalingKetika inovasi harga rendah tetapi RSI gagal untuk mengikuti inovasi rendah, ini menunjukkan bahwa momentum penurunan akan melemah
    • Pasar Beruang BerpisahHal ini menunjukkan bahwa pergerakan ke atas akan melemah ketika harga inovasi tinggi tetapi RSI gagal untuk mengikuti inovasi tinggi.

Logika pelaksanaan kebijakan adalah sebagai berikut:

  • Ketika RSI berada di bawah level multi-headed entry (>35.0) dan pada saat yang sama mendeteksi deviasi pasar bullish, memicu sinyal multi-headed entry
  • Ketika RSI berada di atas level entri kosong ((76.0)) dan pada saat yang sama mendeteksi defisit pasar beruang, memicu sinyal masuk kosong
  • Tutup posisi multi-head ketika RSI mencapai level multi-head outbound ((80.0))
  • Tutup posisi kosong saat RSI mencapai level keluar kosong ((54.1))

Sistem ini mengidentifikasi deviasi dengan memutar kembali data dari 5 pilar, dan secara otomatis menghasilkan sinyal perdagangan saat kondisi terpenuhi, mengurangi kebutuhan untuk analisis manual secara signifikan.

Keunggulan Strategis

  1. Filter sinyal dengan presisi tinggiDengan menggabungkan tingkat RSI dan deviasi harga, sinyal lemah dapat disaring secara efektif, dan hanya memicu perdagangan pada titik-titik perubahan probabilitas tinggi, meningkatkan tingkat keberhasilan perdagangan.

  2. Kustomisasi: Trader dapat menyesuaikan tingkat masuk dan keluar RSI sesuai dengan karakteristik pasar dan kerangka waktu yang berbeda, untuk mengoptimalkan kinerja strategi. Fleksibilitas ini membuatnya cocok untuk berbagai varietas perdagangan dan periode waktu.

  3. Bantuan Visual IntuitifStrategi ini menawarkan banyak elemen visual, termasuk:

    • Label “BULL” hijau saat pasar banteng berbalik
    • Label “BEAR” merah saat bear market berbalik
    • Hubungan antara titik-titik penting RSI yang ditunjukkan secara intuitif
    • RSI pembedaan warna latar belakang zona overbought (merah), zona oversold (hijau) dan zona neutral (abu-abu)
  4. Potensi perdagangan otomatis: mendukung integrasi dengan platform perdagangan eksternal melalui fitur Webhook dari TradingView, memungkinkan eksekusi perdagangan otomatis, mengurangi intervensi manusia dan dampak emosional.

  5. Sumber terbuka dan transparan: Kode strategi sepenuhnya open source, memungkinkan pedagang untuk memahami cara kerjanya dan memodifikasi dan mengoptimalkannya sesuai dengan kebutuhan mereka sendiri.

Risiko Strategis

  1. Risiko tren pasarStrategi ini bekerja dengan baik dalam mengidentifikasi titik balik, tetapi dapat menghasilkan sinyal yang salah di pasar yang sedang tren kuat. Keandalan sinyal multihead akan berkurang secara signifikan, terutama di tengah tren turun yang kuat atau bear market.

  2. Parameter SensitivitasPengaturan RSI pada level entry dan exit memiliki dampak besar pada kinerja strategi. Pengaturan parameter yang tidak tepat dapat menyebabkan terlalu banyak perdagangan atau kehilangan peluang penting. Solusi adalah dengan mengevaluasi kembali parameter yang dioptimalkan untuk pasar dan kerangka waktu tertentu.

  3. Risiko keterlambatanKarena strategi menggunakan indikator yang tertinggal (RSI) dan perlu menunggu untuk mundur dari formasi, ini dapat menyebabkan titik masuk yang tidak ideal, terutama di pasar yang sangat bergejolak.

  4. Risiko Penembusan Palsu: Pasar dapat membentuk sinyal palsu yang menyimpang dari sinyal, yang menyebabkan perdagangan yang salah.

  5. Komisioning dan Sliding Point EffectStrategi ini menetapkan komisi 0,1% secara default, namun komisi dan slippage dalam transaksi aktual mungkin berbeda dari nilai yang ditetapkan, yang mempengaruhi perbedaan antara hasil pengujian ulang aktual dan kinerja transaksi nyata.

Arah optimasi strategi

  1. Integrasi analisis multi-frame waktu: memperluas strategi ke sistem analisis multi-frame time frame, hanya melakukan perdagangan jika arah tren dalam jangka waktu yang lebih tinggi sesuai dengan sinyal deflection. Misalnya, hanya melakukan perdagangan multi-head jika grafik hari menunjukkan tren naik dan deflection terjadi pada bagan 30 menit bull market.

  2. Meningkatkan filter volume transaksi: Menambahkan mekanisme konfirmasi volume transaksi pada saat terbentuknya sinyal deviasi, meningkatkan keandalan sinyal. Misalnya, dapat diperiksa apakah volume transaksi pada saat terbentuknya deviasi menunjukkan pola deviasi atau konfirmasi.

  3. Adaptasi parameter RSI: Mengembangkan algoritma adaptif yang secara otomatis menyesuaikan tingkat masuk dan keluar RSI sesuai dengan volatilitas pasar untuk menyesuaikan dengan lingkungan pasar yang berbeda.

  4. Optimalisasi mekanisme stop lossStrategi saat ini adalah untuk keluar dari perdagangan hanya berdasarkan tingkat RSI, dengan tambahan mekanisme stop loss berdasarkan harga, yang membatasi kerugian maksimum dalam satu perdagangan.

  5. Meningkatkan filter lingkungan pasarMengintegrasikan indikator identifikasi tren (seperti moving average atau ADX), melakukan perdagangan di arah tertentu hanya dalam kondisi pasar yang tepat, menghindari perdagangan berlawanan arah.

  6. Optimalisasi Pembelajaran Mesin: Menggunakan algoritma pembelajaran mesin untuk menganalisis data historis, secara otomatis mengidentifikasi parameter RSI terbaik dan kondisi konfirmasi deviasi untuk meningkatkan kinerja strategi lebih lanjut.

Meringkaskan

RSI Trend Off Strategy Indicator adalah alat perdagangan kuantitatif yang kuat, yang secara efektif mengidentifikasi titik-titik pivot pasar dengan menggabungkan indikator RSI dan harga deviasi. Kelebihan paling menonjol dari strategi ini adalah bantuan visual yang sangat disesuaikan dan intuitif, yang memungkinkan pedagang untuk mengoptimalkan keputusan perdagangan mereka sesuai dengan situasi pasar yang berbeda.

Nilai inti dari strategi ini adalah kemampuannya untuk memfilter sinyal, yang secara signifikan meningkatkan kualitas sinyal perdagangan dengan memicu perdagangan hanya ketika RSI berada pada tingkat tertentu dan pada saat yang sama terjadi deviasi harga. Namun, pengguna perlu memperhatikan risiko tren pasar dan sensitivitas parameter, dan menemukan parameter terbaik yang sesuai dengan pasar dan kerangka waktu tertentu melalui retrospeksi.

Strategi ini memiliki potensi untuk meningkatkan kinerja dan adaptasi lebih lanjut melalui berbagai optimasi seperti analisis multi-frame timeframe, konfirmasi volume transaksi, parameter adaptif, dan mekanisme manajemen risiko yang ditingkatkan. Ini adalah alat yang layak untuk penelitian dan aplikasi yang mendalam bagi para pedagang yang mencari strategi perdagangan kuantitatif yang didorong oleh indikator teknis.

Kode Sumber Strategi
/*backtest
start: 2024-06-13 00:00:00
end: 2025-06-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy(title="RSI Divergence Strategy", shorttitle="RSI Divergence Strategy", overlay=false, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.1, slippage=0, initial_capital=100000, currency=currency.USD, process_orders_on_close=false)

// RSI Settings
rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
calculateDivergence = input.bool(true, title="Calculate Divergence", group="RSI Settings", tooltip="Required for divergence signals")

// Added RSI Level Inputs
longEntryLevel = input.float(35.0, "Long Entry RSI", minval=0, maxval=100, step=0.1, group="RSI Levels")
shortEntryLevel = input.float(76.0, "Short Entry RSI", minval=0, maxval=100, step=0.1, group="RSI Levels")
longExitLevel = input.float(80.0, "Long Exit RSI", minval=0, maxval=100, step=0.1, group="RSI Levels")
shortExitLevel = input.float(54.1, "Short Exit RSI", minval=0, maxval=100, step=0.1, group="RSI Levels")

// RSI Calculation
change = ta.change(rsiSourceInput)
up = ta.rma(math.max(change, 0), rsiLengthInput)
down = ta.rma(-math.min(change, 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))

// Divergence Parameters
lookbackRight = 5
lookbackLeft = 5
rangeUpper = 60
rangeLower = 5

_inRange(bool cond) =>
    bars = ta.barssince(cond)
    rangeLower <= bars and bars <= rangeUpper

var bool plFound = false
var bool phFound = false
var bool bullCond = false
var bool bearCond = false

// Global variables to store _inRange results
var bool inRangePlFound = false
var bool inRangePhFound = false

rsiLBR = rsi[lookbackRight]

// Update _inRange results on every bar
inRangePlFound := _inRange(plFound[1])
inRangePhFound := _inRange(phFound[1])

if calculateDivergence
    // Regular Bullish Divergence
    plFound := not na(ta.pivotlow(rsi, lookbackLeft, lookbackRight))
    rsiHL = rsiLBR > ta.valuewhen(plFound, rsiLBR, 1) and inRangePlFound
    lowLBR = low[lookbackRight]
    priceLL = lowLBR < ta.valuewhen(plFound, lowLBR, 1)
    bullCond := priceLL and rsiHL and plFound

    // Regular Bearish Divergence
    phFound := not na(ta.pivothigh(rsi, lookbackLeft, lookbackRight))
    rsiLH = rsiLBR < ta.valuewhen(phFound, rsiLBR, 1) and inRangePhFound
    highLBR = high[lookbackRight]
    priceHH = highLBR > ta.valuewhen(phFound, highLBR, 1)
    bearCond := priceHH and rsiLH and phFound

// Strategy Entries with customizable RSI levels
if bullCond and rsi < longEntryLevel
    strategy.entry("Long", strategy.long)

if bearCond and rsi > shortEntryLevel
    strategy.entry("Short", strategy.short)

// Strategy Exits with customizable RSI levels
if rsi >= longExitLevel
    strategy.close("Long")
    
if rsi <= shortExitLevel
    strategy.close("Short")

// ———————— Visualizations ———————— //
// Plot RSI line
rsiColor = rsi > 70 ? color.new(#ff5252, 0) : rsi < 30 ? color.new(#4bf335, 0) : color.new(#b8b8b8, 0)
plot(rsi, title="RSI", color=rsiColor, linewidth=2, style=plot.style_line)

// Plot horizontal levels
hline(longEntryLevel, "Long Entry", color=color.new(#4bf335, 0), linestyle=hline.style_solid)
hline(shortEntryLevel, "Short Entry", color=color.new(#ed1404, 0), linestyle=hline.style_solid)
hline(longExitLevel, "Long Exit", color=color.new(#4bf335, 0), linestyle=hline.style_dashed)
hline(shortExitLevel, "Short Exit", color=color.new(#ed1404, 0), linestyle=hline.style_dashed)

// Plot traditional levels
ob = 70
os = 30
hline(ob, "Overbought", color=color.new(#ff5252, 70), linestyle=hline.style_dotted)
hline(os, "Oversold", color=color.new(#4bf335, 70), linestyle=hline.style_dotted)

// Background colors
bgcolor(rsi >= ob ? color.new(#ff5252, 90) : na)
bgcolor(rsi <= os ? color.new(#4bf335, 90) : na)
bgcolor(rsi > os and rsi < ob ? color.new(#424242, 95) : na)

// ———————— DIVERGENCE VISUALS ———————— //
// Position labels below RSI for bullish, above for bearish
bullLabelY = math.max(0, rsi[lookbackRight] - 15)  // Position below RSI line
bearLabelY = math.min(100, rsi[lookbackRight] + 15) // Position above RSI line

// CORRECTED: Pass y-coordinate as first argument for absolute positioning
plotshape(bullCond ? bullLabelY : na, title="Bullish Divergence", text="BULL", style=shape.labelup, 
     location=location.absolute, color=color.new(#4bf335, 50), textcolor=color.white, 
     size=size.tiny, offset=-lookbackRight)

plotshape(bearCond ? bearLabelY : na, title="Bearish Divergence", text="BEAR", style=shape.labeldown, 
     location=location.absolute, color=color.new(#ed1404, 50), textcolor=color.white, 
     size=size.tiny, offset=-lookbackRight)