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.
Indikator ADX menentukan tren. Ketika ADX lebih besar dari 32, itu menunjukkan pasar yang sedang tren.
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.
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:
Kondisi jual:
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.
Risiko utama dari strategi ini meliputi:
Risiko sinyal palsu dari indikator. Indikator dapat gagal ketika pasar mengalami peristiwa ekstrem.
Risiko stop terlalu ketat Fluktuasi pasar jangka pendek dapat mengambil posisi jika stop terlalu dekat.
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:
Menindaklanjuti secara manual dalam kondisi pasar yang tidak normal untuk menghentikan strategi dan menghindari kerugian dari sinyal palsu.
Tetapkan jarak berhenti yang wajar, menggabungkan dengan rata-rata bergerak untuk menentukan tingkat berhenti, menghindari berhenti terlalu dini.
Memperkenalkan modul Parameter Tuning, secara dinamis mengoptimalkan parameter menggunakan Walk Forward Analysis untuk memastikan ketahanan.
Aspek utama untuk meningkatkan strategi ini meliputi:
Mengoptimalkan parameter indikator, menggunakan algoritma pembelajaran mesin yang disesuaikan dengan setiap pasar.
Fitur rekayasa, memperkenalkan lebih banyak indikator teknis dan model pelatihan seperti SVM untuk meningkatkan akurasi sinyal.
Menggabungkan strategi breakout berdasarkan karakteristik masing-masing pasar menggunakan saluran harga, dukungan / resistensi dll untuk meningkatkan stabilitas.
Mengoptimalkan mekanisme mengambil keuntungan dan menghentikan kerugian dengan memperkenalkan trailing stop, moving stop dll untuk memaksimalkan keuntungan dan mengontrol risiko secara efektif.
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)