Strategi Indikator Momentum ADX、RSI

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

img

Gambaran umum

Strategi ini menggunakan indikator momentum ADX, RSI dan Bollinger Bands untuk menentukan tren pasar dan situasi overbought/oversold, untuk menerapkan perdagangan otomatis untuk membeli rendah dan menjual tinggi.

Prinsip Strategi

  1. Indikator ADX menentukan tren. Ketika ADX lebih besar dari 32, itu menunjukkan pasar yang sedang tren.

  2. Indikator RSI menentukan tingkat overbought/oversold. Ketika RSI melintasi di atas 30, itu menandakan pasar oversold. Ketika RSI melintasi di bawah 70, itu menandakan pasar overbought.

  3. Bollinger Bands menentukan konsolidasi dan breakout. Ketika harga tutup melanggar band atas, itu menandakan akhir konsolidasi dan breakout ke atas. Ketika harga tutup melanggar band bawah, itu menandakan akhir konsolidasi dan breakout ke bawah.

Berdasarkan indikator di atas, strategi perdagangan didefinisikan sebagai berikut:

Kondisi pembelian:

  1. ADX>32, dalam tren
  2. RSI melintasi di atas 30, oversold
  3. Harga penutupan di bawah Bollinger band bawah, akhir konsolidasi tren penurunan

Kondisi jual:

  1. ADX>32, dalam tren
  2. RSI melintasi di bawah 70, overbought
  3. Harga penutupan di atas band Bollinger atas, akhir konsolidasi tren naik

Analisis Keuntungan

Strategi ini menggunakan beberapa indikator untuk menentukan kondisi pasar, menghindari kemungkinan kesalahan ketika mengandalkan satu indikator. Dengan menentukan tren dan status overbought / oversold, secara efektif dapat menangkap titik balik pasar dan mencapai beli rendah jual tinggi.

Jika dibandingkan dengan menggunakan indikator tren saja, strategi ini dapat menangkap peluang jangka pendek dengan cara yang lebih tepat waktu. Dibandingkan dengan menggunakan osilator saja, strategi ini dapat lebih memahami arah tren. Oleh karena itu, strategi ini mempertahankan keuntungan melacak tren, sementara juga memiliki fleksibilitas perdagangan reversi rata-rata. Ini adalah strategi kuantitatif yang berpotensi efisien.

Analisis Risiko

Risiko utama dari strategi ini meliputi:

  1. Risiko sinyal palsu dari indikator. Indikator dapat gagal ketika pasar mengalami peristiwa ekstrem.

  2. Risiko stop terlalu ketat Fluktuasi pasar jangka pendek dapat mengambil posisi jika stop terlalu dekat.

  3. Risiko overfit: Jika parameter indikator hanya disesuaikan dengan data historis, stabilitasnya akan dipertanyakan dan mungkin tidak dapat beradaptasi dengan perubahan dinamika pasar.

Langkah-langkah manajemen risiko:

  1. Menindaklanjuti secara manual dalam kondisi pasar yang tidak normal untuk menghentikan strategi dan menghindari kerugian dari sinyal palsu.

  2. Tetapkan jarak berhenti yang wajar, menggabungkan dengan rata-rata bergerak untuk menentukan tingkat berhenti, menghindari berhenti terlalu dini.

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

Arahan Optimasi

Aspek utama untuk meningkatkan strategi ini meliputi:

  1. Mengoptimalkan parameter indikator, menggunakan algoritma pembelajaran mesin yang disesuaikan dengan setiap pasar.

  2. Fitur rekayasa, memperkenalkan lebih banyak indikator teknis dan model pelatihan seperti SVM untuk meningkatkan akurasi sinyal.

  3. Menggabungkan strategi breakout berdasarkan karakteristik masing-masing pasar menggunakan saluran harga, dukungan / resistensi dll untuk meningkatkan stabilitas.

  4. Mengoptimalkan mekanisme mengambil keuntungan dan menghentikan kerugian dengan memperkenalkan trailing stop, moving stop dll untuk memaksimalkan keuntungan dan mengontrol risiko secara efektif.

Kesimpulan

Strategi perdagangan kuantitatif jangka menengah ini menggunakan beberapa indikator teknis seperti ADX, RSI dan Bollinger Bands untuk menentukan kondisi pasar dan menempatkan perdagangan ketika perubahan struktural yang signifikan diidentifikasi. Logika jelas dan dapat ditafsirkan, secara drastis mengurangi ketergantungan pada satu indikator. Sementara itu, risiko seperti sinyal palsu, stop terlalu ketat dan parameter overfit perlu ditangani melalui manajemen risiko dan optimasi model untuk meningkatkan stabilitas dan efisiensi.


/*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 banyak