
RSI Trend Off Strategy Indicator adalah alat dagangan kuantitatif yang canggih yang memanfaatkan hubungan yang terputus antara indeks relatif kuat dan lemah (RSI) dan harga untuk memberi pedagang isyarat pembelian dan penjualan yang berkemungkinan tinggi. Strategi ini dioptimumkan khusus untuk jangka masa 30 minit, dengan penarikan dan keluar RSI yang dikira dengan tepat, digabungkan dengan isyarat bullish dan bearish, untuk mengenal pasti titik-titik perubahan pasaran.
Trend RSI berpusing dari strategi berdasarkan sinergi dua petunjuk teknikal utama:
Indeks Relatif Lemah (RSI) tahap overbought/oversoldStrategi: membolehkan pengguna menyesuaikan tahap masuk dan keluar RSI. Secara lalai, tahap masuk berbilang kepala adalah 35.0, tahap masuk tanpa kepala adalah 76.0, tahap keluar berbilang kepala adalah 80.0, dan tahap keluar tanpa kepala adalah 54.1. Tahap-tahap ini dihasilkan melalui ujian pengalaman selama bertahun-tahun dan dioptimumkan untuk jangka masa 30 minit.
RSI menyimpang daripada isyaratTerdapat dua jenis penyingkiran:
Logik pelaksanaan strategi adalah seperti berikut:
Sistem ini mengiktiraf penyimpangan dengan mengkaji semula 5 tiang data dan menghasilkan isyarat perdagangan secara automatik apabila syarat dipenuhi, mengurangkan keperluan untuk analisis manual.
Penapisan isyarat dengan ketepatan tinggiDengan menggabungkan tahap RSI dan price deviation, ia menyaring dengan berkesan isyarat lemah, dan hanya mencetuskan perdagangan pada titik-titik perubahan yang berkemungkinan tinggi, meningkatkan kadar kejayaan perdagangan.
Kustomisasi: Pedagang boleh menyesuaikan tahap masuk dan keluar RSI mengikut ciri-ciri pasaran dan jangka masa yang berbeza, mengoptimumkan prestasi strategi. Fleksibiliti ini menjadikannya sesuai untuk pelbagai jenis perdagangan dan tempoh masa.
Pembantu visual intuitifStrategi ini menawarkan pelbagai elemen visual, termasuk:
Potensi perdagangan automatik: Sokongan untuk integrasi dengan platform perdagangan luaran melalui fungsi Webhook TradingView, untuk pelaksanaan perdagangan automatik, mengurangkan campur tangan manusia dan kesan emosi.
Sumber terbuka dan telus: Kod strategi sepenuhnya terbuka, membolehkan peniaga memahami bagaimana ia berfungsi, dan mengubah suai dan mengoptimumkannya mengikut keperluan mereka sendiri.
Risiko trend pasaranStrategi ini berfungsi dengan baik dalam mengenal pasti titik-titik perubahan, tetapi ia boleh menghasilkan isyarat yang salah dalam pasaran yang sedang tren kuat. Kebolehpercayaan isyarat pelbagai kepala akan berkurangan dengan ketara, terutamanya dalam tren turun yang kuat atau pasaran beruang.
Kepekaan ParameterPengaturan tahap masuk dan keluar RSI mempunyai kesan besar terhadap prestasi strategi. Pengaturan parameter yang tidak sesuai boleh menyebabkan terlalu banyak perdagangan atau kehilangan peluang penting. Penyelesaian adalah dengan mengkaji semula parameter yang dioptimumkan untuk pasaran dan jangka masa tertentu.
Risiko kelewatanOleh kerana strategi menggunakan indikator RSI yang ketinggalan dan perlu menunggu penubuhan, ia mungkin menyebabkan titik masuk yang tidak sesuai, terutamanya dalam pasaran yang bergolak.
Risiko penembusan palsu: Pasaran mungkin membentuk isyarat palsu yang menyimpang, yang menyebabkan perdagangan yang salah. Isyarat pengesahan disyorkan untuk digabungkan dengan petunjuk teknikal lain atau dalam jangka masa yang lebih tinggi.
Komisen dan Kesan SlipStrategi menetapkan komisen 0.1% secara lalai, tetapi komisen dan titik slippage dalam urus niaga sebenar mungkin berbeza dengan nilai yang ditetapkan, yang mempengaruhi perbezaan dalam hasil tinjauan semula sebenar dan prestasi urus niaga sebenar.
Integrasi analisis pelbagai kerangka masa: memperluaskan strategi kepada sistem analisis jangka masa berbilang untuk melakukan perdagangan hanya apabila arah trend dalam jangka masa yang lebih tinggi selaras dengan isyarat deviasi. Sebagai contoh, perdagangan berbilang hanya dilakukan apabila carta hari menunjukkan trend naik dan terdapat deviasi pasaran lembu pada carta 30 minit.
Meningkatkan penapis jumlah transaksi: Menambah mekanisme pengesahan jumlah urus niaga apabila terbentuk daripada isyarat, meningkatkan kebolehpercayaan isyarat. Sebagai contoh, ia boleh diperiksa sama ada jumlah urus niaga apabila terbentuk daripada isyarat menunjukkan pola pelarian atau pengesahan.
Parameter RSI yang sesuaiPembangunan algoritma penyesuaian diri yang secara automatik menyesuaikan tahap masuk dan keluar RSI mengikut turun naik pasaran, menyesuaikan diri dengan keadaan pasaran yang berbeza.
Pengoptimuman mekanisme penangguhan kerugianStrategi semasa adalah untuk keluar dari perdagangan hanya berdasarkan tahap RSI, dengan tambahan mekanisme stop loss berdasarkan harga, yang mengehadkan kerugian maksimum dalam satu perdagangan.
Menambah penapisan persekitaran pasaranMengintegrasikan indikator pengiktirafan trend (seperti purata bergerak atau ADX), hanya melakukan perdagangan ke arah tertentu dalam keadaan pasaran yang sesuai, mengelakkan perdagangan berlawanan arah.
Pengoptimuman Pembelajaran Mesin: Menggunakan algoritma pembelajaran mesin untuk menganalisis data sejarah, mengenal pasti parameter RSI terbaik secara automatik dan syarat pengesahan deviasi untuk meningkatkan lagi prestasi strategi.
RSI Trend Off Strategy Indicator adalah alat dagangan kuantitatif yang kuat yang berfungsi dengan berkesan untuk mengenal pasti titik-titik perubahan pasaran dengan menggabungkan RSI dan Price Off. Kelebihan strategi yang paling ketara adalah bantuan visual yang sangat disesuaikan dan intuitif yang membolehkan pedagang mengoptimumkan keputusan perdagangan mengikut keadaan pasaran yang berbeza.
Nilai utama strategi ini adalah kebolehan penapisan isyaratnya, yang meningkatkan kualiti isyarat perdagangan dengan memicu perdagangan hanya apabila RSI berada pada tahap tertentu dan pada masa yang sama terdapat penyingkiran harga. Walau bagaimanapun, pengguna perlu memperhatikan risiko trend pasaran dan kepekaan parameter, dan mencari parameter terbaik yang sesuai untuk pasaran dan jangka masa tertentu melalui pengulangan.
Strategi ini mempunyai potensi untuk meningkatkan lagi prestasi dan kesesuaian dengan arah pengoptimuman seperti analisis jangka masa berbilang, pengesahan jumlah dagangan, parameter penyesuaian diri dan mekanisme pengurusan risiko yang dipertingkatkan. Ini adalah alat yang bernilai kajian dan aplikasi yang mendalam untuk peniaga yang mencari strategi perdagangan kuantitatif yang didorong oleh petunjuk teknikal.
/*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)