Strategi Indikator Momentum ADX、RSI

Penulis:ChaoZhang, Tarikh: 2023-12-11 16:06:30
Tag:

img

Ringkasan

Strategi ini menggunakan penunjuk momentum ADX, RSI dan Bollinger Bands untuk menentukan trend pasaran dan situasi overbought / oversold, untuk melaksanakan perdagangan automatik untuk membeli rendah dan menjual tinggi.

Prinsip Strategi

  1. Indikator ADX menentukan trend. Apabila ADX lebih besar daripada 32, ia menunjukkan pasaran trend.

  2. Indikator RSI menentukan tahap overbought / oversold. Apabila RSI melintasi di atas 30, ia menandakan pasaran oversold. Apabila RSI melintasi di bawah 70, ia menandakan pasaran overbought.

  3. Bollinger Bands menentukan penyatuan dan pecah. Apabila harga menutup pecah di atas band atas, ia menandakan akhir penyatuan dan pecah ke atas. Apabila harga menutup pecah di bawah band bawah, ia menandakan akhir penyatuan dan pecah ke bawah.

Berdasarkan penunjuk di atas, strategi dagangan ditakrifkan seperti berikut:

Syarat beli:

  1. ADX>32, dalam trend
  2. RSI melintasi di atas 30, oversold
  3. Harga penutupan di bawah band Bollinger yang lebih rendah, akhir penyatuan trend penurunan

Syarat jual:

  1. ADX>32, dalam trend
  2. RSI melintasi di bawah 70, overbought
  3. Harga penutupan di atas band Bollinger atas, pengukuhan trend menaik

Analisis Kelebihan

Strategi ini menggunakan pelbagai penunjuk untuk menentukan keadaan pasaran, mengelakkan kemungkinan kesilapan apabila bergantung pada satu penunjuk. Dengan menentukan trend dan status overbought / oversold, ia dapat menangkap titik perubahan pasaran dengan berkesan dan mencapai harga jual rendah.

Perbandingan dengan menggunakan penunjuk trend sahaja, strategi ini dapat menangkap peluang jangka pendek dengan cara yang lebih tepat pada masanya. Berbanding dengan hanya menggunakan osilator, strategi ini dapat memahami arah trend dengan lebih baik. Oleh itu, ia mengekalkan kelebihan mengesan trend, sementara juga mempunyai fleksibiliti perdagangan pembalikan purata. Ini adalah strategi kuantitatif yang berpotensi cekap.

Analisis Risiko

Risiko utama strategi ini termasuk:

  1. Risiko isyarat palsu dari penunjuk. Penunjuk mungkin gagal apabila pasaran mengalami peristiwa melampau.

  2. Risiko hentian terlalu ketat. turun naik pasaran jangka pendek boleh mengambil kedudukan jika hentian terlalu dekat.

  3. Risiko terlalu sesuai: Jika parameter penunjuk hanya disesuaikan dengan data sejarah, kestabilan akan dipersoalkan dan mungkin tidak dapat menyesuaikan diri dengan perubahan dinamik pasaran.

Langkah pengurusan risiko:

  1. Menyerang secara manual di bawah keadaan pasaran yang tidak normal untuk menghentikan strategi dan mengelakkan kerugian daripada isyarat palsu.

  2. Tetapkan jarak henti yang munasabah, digabungkan dengan purata bergerak untuk menentukan tahap henti, mengelakkan henti sebelum waktunya.

  3. Memperkenalkan modul Tuning Parameter, secara dinamik mengoptimumkan parameter menggunakan Walk Forward Analysis untuk memastikan ketahanan.

Arahan pengoptimuman

Aspek utama untuk meningkatkan strategi ini termasuk:

  1. Mengoptimumkan parameter penunjuk, menggunakan algoritma pembelajaran mesin yang disesuaikan dengan setiap pasaran.

  2. Kejuruteraan ciri, memperkenalkan lebih banyak penunjuk teknikal dan model latihan seperti SVM untuk meningkatkan ketepatan isyarat.

  3. Menggabungkan strategi pecah berdasarkan ciri-ciri setiap pasaran menggunakan saluran harga, sokongan / rintangan dll untuk meningkatkan kestabilan.

  4. Mengoptimumkan mekanisme mengambil keuntungan dan menghentikan kerugian dengan memperkenalkan hentian, hentian bergerak dan lain-lain untuk memaksimumkan keuntungan dan mengawal risiko dengan berkesan.

Kesimpulan

Strategi perdagangan kuantitatif jangka sederhana ini menggunakan beberapa penunjuk teknikal seperti ADX, RSI dan Bollinger Bands untuk menentukan keadaan pasaran dan meletakkan perdagangan apabila perubahan struktur yang signifikan dikenal pasti. Logiknya jelas dan dapat ditafsirkan, secara drastik mengurangkan pergantungan pada satu penunjuk sahaja. Sementara itu, risiko seperti isyarat palsu, berhenti terlalu ketat dan parameter yang berlebihan perlu ditangani melalui pengurusan risiko dan pengoptimuman model untuk meningkatkan kestabilan dan kecekapan.


/*backtest
start: 2023-11-10 00:00:00
end: 2023-12-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("DAX Shooter 5M Strategy", overlay=true)

//Creo ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
th = input(title="threshold", type=input.integer, defval=20)
dirmov(len) =>
    up = change(high)
    down = -change(low)
    plusDM = na(up) ? na : up > down and up > 0 ? up : 0
    minusDM = na(down) ? na : down > up and down > 0 ? down : 0
    truerange = rma(tr, len)

    plus = fixnan(100 * rma(plusDM, len) / truerange)
    minus = fixnan(100 * rma(minusDM, len) / truerange)

    [plus, minus]

adx(dilen, adxlen) =>
    [plus, minus] = dirmov(dilen)
    sum = plus + minus
    adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
    adx


[plus, minus] = dirmov(dilen)
sig = adx(dilen, adxlen)

//Creo RSI

src = close
len = input(7, minval=1, title="Periodo RSI")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)
bandainf = input(30, title="Livello Ipervenduto")
bandasup = input(70, title="Livello Ipercomprato")


//Creo Bande di Bollinger

source = close
length = input(50, minval=1, title="Periodo BB")
mult = input(2.0, minval=0.001, maxval=50, title="Dev BB")

basis = sma(source, length)
dev = mult * stdev(source, length)

upper = basis + dev
lower = basis - dev

plot(basis, color=color.white)
p1 = plot(upper, color=color.aqua)
p2 = plot(lower, color=color.aqua)
fill(p1, p2)

//Stabilisco regole di ingresso

if crossover(rsi, bandainf) and adx(dilen, adxlen) > 32 and low < lower
    strategy.entry("COMPRA", strategy.long, limit=upper, oca_name="DaxShooter", comment="COMPRA")
else
    //strategy.exit("exit", "COMPRA", loss = 90) 
    strategy.cancel(id="COMPRA")

if crossunder(rsi, bandasup) and adx(dilen, adxlen) > 32 and high > upper
    strategy.entry("VENDI", strategy.short, limit=lower, oca_name="DaxShooter",comment="VENDI")
else
    //strategy.exit("exit", "VENDI", loss = 90)
    strategy.cancel(id="VENDI")

//Imposto gli alert
buy= crossover(rsi, bandainf) and adx(dilen, adxlen) > 32 and low < lower
sell= crossunder(rsi, bandasup) and adx(dilen, adxlen) > 32 and high > upper
alertcondition(buy, title='Segnale Acquisto', message='Compra DAX')
alertcondition(sell, title='Segnale Vendita', message='Vendi DAX')

//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)


Lebih lanjut