Strategi dagangan dinamik ambang kejutan RSI adaptif

RSI ATR BAT LR SD
Tarikh penciptaan: 2024-11-12 16:07:32 Akhirnya diubah suai: 2024-11-12 16:07:32
Salin: 2 Bilangan klik: 498
1
fokus pada
1617
Pengikut

Strategi dagangan dinamik ambang kejutan RSI adaptif

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan penyesuaian berdasarkan RSI (indikator yang agak kuat) yang mengoptimumkan penjanaan isyarat perdagangan dengan menyesuaikan secara dinamik melebihi had jual beli. Inovasi utama strategi ini adalah pengenalan kaedah penyesuaian penyesuaian Bufi (BAT), yang menyesuaikan had pemicu RSI mengikut trend pasaran dan dinamika turun naik harga, yang meningkatkan keberkesanan strategi RSI tradisional.

Prinsip Strategi

Strategi ini berpusat pada peningkatan sistem RSI yang tetap menjadi sistem penurunan yang dinamik. Ia boleh dilaksanakan dengan cara berikut:

  1. Menggunakan RSI jangka pendek untuk mengira pasaran overbought dan oversold
  2. Penarikan trend harga yang dikira melalui regresi linear
  3. Penjelasan mengenai perbezaan standard
  4. Mengintegrasikan maklumat trend dan turun naik, secara dinamik menyesuaikan nilai RSI
  5. Peningkatan nilai simpanan dalam trend menaik dan penurunan nilai simpanan dalam trend menurun
  6. Menurunkan sensitiviti penurunan apabila harga lebih jauh daripada nilai purata

Strategi ini juga merangkumi dua mekanisme kawalan risiko:

  • Mekanisme penutupan kitaran tetap
  • Mekanisme Hentikan Kerosakan Maksimum

Kelebihan Strategik

  1. Bergerak dan beradaptasi:
  • Mampu menyesuaikan nilai terhad dagangan secara automatik mengikut keadaan pasaran
  • Kelemahan mengelakkan penggunaan parameter tetap dalam keadaan pasaran yang berbeza
  1. Pengendalian risiko:
  • Had tempoh maksimum
  • Mempunyai mekanisme perlindungan kerugian kewangan
  • Menggunakan pengurusan kedudukan peratusan
  1. Kualiti isyarat meningkat:
  • Isyarat palsu untuk mengurangkan kejutan pasaran
  • Meningkatkan keupayaan menangkap pasaran trend
  • Keseimbangan antara sensitiviti dan kestabilan

Risiko Strategik

  1. Sensitiviti parameter:
  • Pilihan faktor BAT mempengaruhi prestasi strategi
  • Tetapan kitaran RSI perlu diuji dengan baik
  • Parameter panjang yang disesuaikan perlu dioptimumkan
  1. Keadaan pasaran bergantung kepada:
  • Kemungkinan kehilangan peluang di pasaran yang bergelombang
  • Stop loss mungkin lebih besar apabila turun naik
  • Perlu menyesuaikan parameter mengikut pasaran yang berbeza
  1. Kekurangan teknologi:
  • Pengiraan had berdasarkan data sejarah
  • Kemungkinan ketinggalan zaman
  • Kesan kos transaksi perlu dipertimbangkan

Arah pengoptimuman strategi

  1. Optimasi parameter:
  • Memperkenalkan mekanisme pilihan parameter yang sesuai
  • Parameter penyesuaian mengikut dinamik kitaran pasaran yang berbeza
  • Tambah parameter untuk mengoptimumkan secara automatik
  1. Pengoptimuman Isyarat:
  • Digabungkan dengan pengesahan penunjuk teknikal lain
  • Tambah ciri pengenalan kitaran pasaran
  • Mempertingkatkan keputusan masa kemasukan
  1. Pengoptimuman kawalan risiko:
  • Memperkenalkan mekanisme hentian kerugian dinamik
  • Strategi pengurusan kedudukan yang optimum
  • Tambah mekanisme kawalan anjakan semula

ringkaskan

Ini adalah strategi perdagangan penyesuaian diri yang inovatif, yang menyelesaikan batasan strategi RSI tradisional melalui pengoptimuman penurunan nilai dinamik. Strategi ini mengambil kira trend dan turun naik pasaran secara menyeluruh, mempunyai kemampuan penyesuaian dan kawalan risiko yang kuat. Walaupun terdapat cabaran seperti pengoptimuman parameter, tetapi dengan peningkatan dan pengoptimuman yang berterusan, strategi ini dijangka dapat mencapai prestasi yang stabil dalam perdagangan sebenar.

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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © PineCodersTASC

//  TASC Issue: October 2024
//     Article: Overbought/Oversold
//              Oscillators: Useless Or Just Misused
//  Article By: Francesco P. Bufi
//    Language: TradingView's Pine Script™ v5
// Provided By: PineCoders, for tradingview.com

//@version=5
title  ='TASC 2024.10 Adaptive Oscillator Threshold'
stitle = 'AdapThrs'
strategy(title, stitle, false, default_qty_type = strategy.percent_of_equity,
         default_qty_value = 10, slippage = 5)

// --- Inputs ---
string sys    = input.string("BAT", "System", options=["Traditional", "BAT"])
int rsiLen    = input.int(2, "RSI Length", 1)
int buyLevel  = input.int(14, "Buy Level", 0)
int adapLen   = input.int(8, "Adaptive Length", 2) 
float adapK   = input.float(6, "Adaptive Coefficient")
int exitBars  = input.int(28, "Fixed-Bar Exit", 1, group = "Strategy Settings")
float DSL     = input.float(1600, "Dollar Stop-Loss", 0, group = "Strategy Settings")

// --- Functions --- 
//  Bufi's Adaptive Threshold
BAT(float price, int length) =>
    float sd = ta.stdev(price, length)
    float lr = ta.linreg(price, length, 0)
    float slope = (lr - price[length]) / (length + 1)
    math.min(0.5, math.max(-0.5, slope / sd))

// --- Calculations ---
float osc = ta.rsi(close, rsiLen)

// Strategy entry rules
// - Traditional system
if sys == "Traditional" and osc < buyLevel
    strategy.entry("long", strategy.long)
// - BAT system 
float thrs = buyLevel * adapK * BAT(close, adapLen)
if sys == "BAT" and osc < thrs
    strategy.entry("long", strategy.long)

// Strategy exit rules
// - Fixed-bar exit
int nBar = bar_index - strategy.opentrades.entry_bar_index(0)
if exitBars > 0 and nBar >= exitBars
    strategy.close("long", "exit")
// - Dollar stop-loss
if DSL > 0 and strategy.opentrades.profit(0) <= - DSL
    strategy.close("long", "Stop-loss", immediately = true)

// Visuals
rsiColor  = #1b9e77
thrsColor = #d95f02
rsiLine   = plot(osc, "RSI", rsiColor, 1)
thrsLine  = plot(sys == "BAT" ? thrs : buyLevel, "Threshold", thrsColor, 1)
zeroLine  = plot(0.0, "Zero", display = display.none)
fill(zeroLine, thrsLine, sys == "BAT" ? thrs : buyLevel, 0.0, color.new(thrsColor, 60), na)