Sumber daya yang dimuat... Pemuatan...

ADX Trend Breakout Momentum Strategi Perdagangan

Penulis:ChaoZhang, Tanggal: 2024-11-28 15:44:59
Tag:ADXDMIMAATR

img

Gambaran umum

Ini adalah strategi perdagangan kuantitatif berdasarkan Indeks Arah Rata-rata (ADX) dan price breakout. Strategi ini terutama memantau nilai indikator ADX untuk menilai kekuatan tren pasar dan menggabungkan sinyal price breakout untuk menangkap momentum pasar. Strategi ini beroperasi dalam sesi perdagangan tertentu dan menerapkan manajemen risiko melalui stop-loss dan batas perdagangan harian.

Prinsip Strategi

Logika inti mencakup elemen kunci berikut:

  1. Pemantauan ADX: Menggunakan indikator ADX untuk mengevaluasi kekuatan tren, dengan nilai ADX di bawah 17,5 menunjukkan pembentukan tren baru yang potensial.
  2. Price Breakout Detection: Melacak harga penutupan tertinggi selama 34 periode terakhir, memicu sinyal perdagangan ketika harga saat ini melanggar di atas resistensi ini.
  3. Manajemen sesi: Hanya beroperasi selama jam perdagangan tertentu (0730-1430) untuk menghindari periode likuiditas rendah.
  4. Mekanisme Kontrol Risiko:
    • Stop loss tetap dalam dolar untuk membatasi kerugian perdagangan tunggal
    • Batas maksimal 3 perdagangan per sesi
    • Penutupan posisi otomatis pada akhir sesi

Keuntungan Strategi

  1. Kemampuan menangkap tren: Mengidentifikasi tahap tren awal secara efektif melalui kombinasi indikator ADX dan price breakout.
  2. Manajemen Risiko yang Komprehensif: Beberapa langkah pengendalian risiko termasuk stop loss tetap, batas perdagangan, dan mekanisme penutupan otomatis.
  3. Otomatisasi Tinggi: Logika strategi yang jelas memungkinkan perdagangan sepenuhnya otomatis tanpa intervensi manual.
  4. Adaptifitas yang kuat: Parameter dapat disesuaikan untuk kondisi pasar yang berbeda.

Risiko Strategi

  1. Risiko Pemecahan Palsu: Mungkin mengalami berhenti berturut-turut di berbagai pasar.
  2. Ketergantungan Parameter: Efektivitas strategi sangat bergantung pada ambang ADX dan pengaturan periode lookback.
  3. Pembatasan waktu: Perdagangan hanya selama sesi tertentu dapat kehilangan peluang.
  4. Konfigurasi Stop-Loss: Stop dollar tetap mungkin tidak fleksibel dalam lingkungan volatilitas yang berbeda.

Arahan Optimasi

  1. Dynamic Stop-Loss: Rekomendasi untuk menerapkan dynamic stop berbasis ATR untuk kondisi volatilitas pasar yang berbeda.
  2. Filter Lingkungan Pasar: Tambahkan filter volatilitas untuk menyesuaikan atau menghentikan perdagangan di lingkungan volatilitas tinggi.
  3. Optimasi entri: Pertimbangkan untuk menambahkan konfirmasi volume untuk meningkatkan keandalan sinyal pecah.
  4. Penyesuaian Parameter Dinamis: Menerapkan mekanisme penyesuaian adaptif untuk ambang batas ADX dan periode lookback.

Ringkasan

Ini adalah strategi trend-mengikuti terstruktur dengan logika yang jelas. Ini menangkap tren pasar dengan menggabungkan indikator ADX dengan price breakout di bawah kerangka manajemen risiko yang efektif. Meskipun ada ruang untuk optimasi, dasar strategi ini kuat dan cocok sebagai komponen dasar dari sistem perdagangan kuantitatif. Pedagang disarankan untuk melakukan backtesting menyeluruh dan optimasi parameter sebelum perdagangan langsung, dan membuat perbaikan khusus berdasarkan kondisi pasar.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 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/
// © HuntGatherTrade
// ========================
// NQ 30 minute, ES 30 minute

//@version=5
strategy("ADX Breakout", overlay=false, initial_capital=25000, default_qty_value=1)

// ===============================
// Input parameters
// ===============================
stopLoss = input(1000.0, title="Stop Loss ($)", group="Exits")
session = input("0730-1430:1234567", group="Trade Session")
highestLB = input(34, title="Highest lookback window", group="Indicator values")

// ===============================
// Trade Session Handling
// ===============================
t = time(timeframe.period, session)

// Reset numTrades at the start of each session
var int numTrades = 0
is_new_session = ta.change(time("D")) != 0
if is_new_session
    numTrades := 0

// ===============================
// Entry Conditions
// ===============================
[plusDI, minusDI, adxValue] = ta.dmi(50, 14)
entryCondition = (close >= ta.highest(close, highestLB)[1]) and (adxValue < 17.5) and (strategy.position_size == 0) and (numTrades < 3) and not na(t)

// ===============================
// 7. Execute Entry
// ===============================
var float stopPricePlot = na

if entryCondition
    entryPrice = close + syminfo.mintick
    strategy.entry("Long Entry", strategy.long, stop=entryPrice)
    //stopPrice = strategy.position_avg_price - (stopLoss / syminfo.pointvalue)
    //strategy.exit("Stop Loss", "Long Entry", stop=stopPrice)
    numTrades += 1

if (strategy.position_size > 0) and (strategy.position_size[1] == 0)
    stopPoints = stopLoss / syminfo.pointvalue
    stopPrice = strategy.position_avg_price - stopPoints
    stopPrice := math.round(stopPrice / syminfo.mintick) * syminfo.mintick
    strategy.exit("Stop Loss", from_entry="Long Entry", stop=stopPrice)


if ta.change(strategy.opentrades) == 1
    float entryPrice = strategy.opentrades.entry_price(0)
    stopPricePlot := entryPrice - (stopLoss / syminfo.pointvalue)

if ta.change(strategy.closedtrades) == 1
    stopPricePlot   := na

plot(stopPricePlot, "Stop-loss level", color.red, 1, plot.style_linebr)

// ===============================
// Exit at End of Session
// ===============================
if na(t) and strategy.position_size != 0
    strategy.close_all(comment="End of Day Exit")

Berkaitan

Lebih banyak