Strategi dagangan mengikut arah aliran berbilang tempoh berdasarkan persilangan garis isyarat RSI

RSI MA RMA EMA SMA TMA ARSI
Tarikh penciptaan: 2025-02-18 15:04:49 Akhirnya diubah suai: 2025-02-18 15:04:49
Salin: 1 Bilangan klik: 358
1
fokus pada
1617
Pengikut

Strategi dagangan mengikut arah aliran berbilang tempoh berdasarkan persilangan garis isyarat RSI

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan trend-tracking berdasarkan penunjuk yang lebih kuat (RSI) yang dipertingkatkan. Ia menangkap peluang untuk membalikkan trend dalam kitaran pasaran yang berbeza dengan mengira versi RSI yang diperbaiki dan menggabungkan garis isyaratnya. Strategi ini bukan sahaja mengira nilai penunjuk, tetapi juga menunjukkan kawasan jual beli yang lebih tinggi secara visual untuk membantu peniaga menilai keadaan pasaran dengan lebih intuitif.

Prinsip Strategi

Prinsip utama strategi ini adalah untuk mengenal pasti trend pasaran melalui pengiraan RSI ((ARSI)).

  1. Hitung harga tertinggi dan terendah dalam tempoh yang ditetapkan untuk mendapatkan julat harga
  2. Pendapatan berdasarkan perubahan harga
  3. Menguruskan perbezaan dengan menggunakan kaedah purata bergerak pilihan (EMA, SMA, RMA, TMA)
  4. Menyenaraikan hasil dalam julat 0-100
  5. Apabila ARSI melintasi garis isyarat di bawah 50, ia menghasilkan isyarat ganda
  6. ARSI menghasilkan isyarat kosong apabila jatuh di atas 50 garis isyarat

Kelebihan Strategik

  1. Mekanisme pengesahan isyarat yang sempurna - memastikan kebolehpercayaan isyarat melalui persilangan ARSI dengan jalur isyarat dan penapisan pada sumbu tengah
  2. Serba boleh - menyokong pelbagai kaedah purata bergerak dan boleh disesuaikan dengan ciri-ciri pasaran yang berbeza
  3. Pengendalian risiko yang munasabah - Menggunakan peratusan pengurusan kedudukan untuk mengawal risiko setiap dagangan dengan berkesan
  4. Kesan visual yang menonjol - menunjukkan dengan jelas kawasan overbought dan oversold dengan warna penuh untuk penilaian cepat
  5. Pengurusan pegangan terbalik - secara automatik melonggarkan kedudukan sedia ada apabila isyarat terbalik berlaku, mengelakkan risiko pegangan dua hala

Risiko Strategik

  1. Risiko pasaran yang bergolak - mungkin menimbulkan isyarat palsu yang kerap dalam keadaan golak horizontal
  2. Risiko keterlambatan - isyarat akan mengalami keterlambatan kerana penggunaan pengiraan purata bergerak
  3. Sensitiviti parameter - tetapan parameter yang berbeza boleh menyebabkan perbezaan dalam prestasi strategi
  4. Risiko adaptasi pasaran - strategi mungkin mempunyai perbezaan yang ketara dalam prestasi dalam keadaan pasaran yang berbeza
  5. Risiko pengurusan wang - pengurusan kedudukan peratusan tetap mungkin membawa risiko yang lebih besar apabila turun naik

Arah pengoptimuman strategi

  1. Memperkenalkan penapisan kadar turun naik - Indikator ATR boleh ditambahkan untuk menapis isyarat perdagangan dalam persekitaran turun naik yang rendah
  2. Meningkatkan penanda pengesahan trend - menggabungkan penanda trend dengan tempoh yang lebih lama untuk meningkatkan kebolehpercayaan isyarat
  3. Pengendalian kedudukan yang optimum - kadar pegangan yang disesuaikan mengikut pergerakan turun naik pasaran
  4. Masukkan mekanisme hentian kerugian - menetapkan hentian dinamik berasaskan ATR untuk mengawal risiko dengan lebih baik
  5. Membangunkan parameter penyesuaian diri - Kajian parameter untuk kaedah pengoptimuman dinamik untuk meningkatkan penyesuaian strategi

ringkaskan

Ini adalah strategi pengesanan trend yang lengkap dan logik. Ia membentuk sistem perdagangan yang boleh dipercayai dengan menggunakan kaedah pengiraan inovatif RSI yang dipertingkatkan, digabungkan dengan kelebihan pelbagai petunjuk teknikal. Walaupun terdapat beberapa risiko yang wujud, strategi ini mempunyai prospek aplikasi yang baik di lapangan dengan pengoptimuman dan pengurusan risiko yang munasabah.

Kod 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)