Strategi Perdagangan Momentum Penembusan Tren ADX

ADX DMI MA ATR
Tanggal Pembuatan: 2024-11-28 15:44:59 Akhirnya memodifikasi: 2024-11-28 15:44:59
menyalin: 0 Jumlah klik: 583
1
fokus pada
1617
Pengikut

Strategi Perdagangan Momentum Penembusan Tren ADX

Ringkasan

Ini adalah strategi perdagangan kuantitatif yang didasarkan pada indikator tren rata-rata (ADX) dan harga terobosan. Strategi ini terutama digunakan untuk menilai kekuatan tren pasar dengan memantau nilai indikator ADX, dan menggabungkan sinyal terobosan harga untuk menangkap gerakan pasar. Strategi ini diatur untuk beroperasi dalam jangka waktu perdagangan tertentu, dan manajemen risiko dilakukan dengan stop loss dan pembatasan jumlah transaksi per hari.

Prinsip Strategi

Logika inti dari strategi ini mencakup elemen-elemen kunci berikut:

  1. Pemantauan Indikator ADX: Indikator ADX digunakan untuk menilai kekuatan tren pasar, ketika nilai ADX di bawah 17,5 menunjukkan bahwa pasar mungkin akan membentuk tren baru.
  2. Penilaian Penembusan Harga: Strategi ini melacak harga penutupan tertinggi dalam 34 siklus terakhir dan memicu sinyal perdagangan saat harga saat ini menembus titik resistensi tersebut.
  3. Manajemen periode perdagangan: Strategi hanya beroperasi dalam periode perdagangan yang ditentukan (0730-1430) untuk menghindari risiko periode likuiditas rendah.
  4. Mekanisme pengendalian risiko:
    • Tetapkan stop loss dolar tetap untuk membatasi kerugian transaksi tunggal
    • Batas maksimum 3 transaksi per periode
    • Semua posisi yang dipegang pada akhir periode perdagangan secara otomatis dihapus

Keunggulan Strategis

  1. Kemampuan untuk menangkap tren: Menggunakan indikator ADX dan harga terobosan yang dikombinasikan untuk mengidentifikasi tren pasar pada tahap awal.
  2. Pengelolaan risiko yang baik: mencakup langkah-langkah pengendalian risiko bertingkat seperti stop loss tetap, pembatasan jumlah transaksi dan mekanisme penutupan otomatis.
  3. Tingkat otomatisasi yang tinggi: Strategi logis yang jelas, transaksi sepenuhnya otomatis, tanpa intervensi manusia.
  4. Adaptif: Parameter dapat disesuaikan sesuai dengan kondisi pasar yang berbeda, seperti jumlah stop loss, periode pengembalian, dll.

Risiko Strategis

  1. Risiko false breakout: kemungkinan terjadi false breakout dalam pasar yang bergejolak yang mengakibatkan stop loss berkelanjutan.
  2. Ketergantungan parameter: Efek strategi sangat bergantung pada ADX threshold dan pengaturan siklus mundur.
  3. Pembatasan waktu: Hanya berdagang pada waktu tertentu yang mungkin melewatkan kesempatan untuk berdagang pada waktu lain.
  4. Pengaturan Stop Loss: Stop loss dalam dolar tetap mungkin tidak cukup fleksibel dalam lingkungan fluktuasi yang berbeda.

Arah optimasi strategi

  1. Stop loss dinamis: disarankan untuk mengubah stop loss dolar tetap menjadi stop loss dinamis berbasis ATR, untuk menyesuaikan diri dengan lingkungan pasar yang berbeda.
  2. Filter lingkungan pasar: Tambahkan filter fluktuasi untuk menyesuaikan atau menghentikan perdagangan di lingkungan fluktuasi tinggi.
  3. Optimasi masuk: dapat dipertimbangkan untuk meningkatkan konfirmasi transaksi, meningkatkan keandalan sinyal terobosan.
  4. Penyesuaian parameter dinamis: mekanisme penyesuaian adaptif untuk mencapai ADX threshold dan siklus regresi.

Meringkaskan

Ini adalah strategi pelacakan tren yang terstruktur, logis dan jelas. Dengan menggabungkan indikator ADX dengan terobosan harga, peluang tren pasar ditangkap dalam kerangka manajemen risiko yang efektif. Meskipun ada beberapa ruang untuk optimasi, kerangka dasar strategi ini kokoh dan cocok sebagai komponen dasar sistem perdagangan kuantitatif.

Kode Sumber Strategi
/*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")