Strategi Mengikuti Tren Momentum Breakout Tiga Garis Dikombinasikan dengan Filter ADX

ADX ATR TMA TP SL 3LS
Tanggal Pembuatan: 2025-02-20 17:46:30 Akhirnya memodifikasi: 2025-02-20 17:46:30
menyalin: 0 Jumlah klik: 459
2
fokus pada
319
Pengikut

Strategi Mengikuti Tren Momentum Breakout Tiga Garis Dikombinasikan dengan Filter ADX Strategi Mengikuti Tren Momentum Breakout Tiga Garis Dikombinasikan dengan Filter ADX

Ringkasan

Strategi ini adalah sistem perdagangan pelacakan tren yang didasarkan pada tiga garis breakout dan penyaringan tren ADX. Strategi ini mengkonfirmasi kekuatan tren dengan mengidentifikasi tiga breakout yang berturut-turut di belakang simetris, digabungkan dengan indikator ADX, dan menggunakan ATR untuk mengatur posisi stop loss stop loss secara dinamis. Metode ini menjamin keandalan sinyal masuk dan dapat mengontrol risiko secara efektif.

Prinsip Strategi

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

  1. Identifikasi bentuk terobosan tiga baris: bentuk multi-kepala membutuhkan tiga baris berturut-turut yang diikuti oleh terobosan yang lebih besar; bentuk kepala kosong membutuhkan tiga baris berturut-turut yang diikuti oleh terobosan yang lebih besar.
  2. Konfirmasi kekuatan tren ADX: menggunakan indikator ADX untuk menilai kekuatan tren saat ini, sinyal perdagangan hanya akan dihasilkan ketika nilai ADX melebihi batas yang ditetapkan (default 25).
  3. Stop loss ATR dinamis: Menggunakan nilai ATR dinamis untuk menghitung posisi stop dan stop loss, di mana stop set 2 kali ATR dan stop loss set 1 kali ATR.
  4. Logika eksekusi perdagangan: Sistem secara otomatis melakukan operasi pembukaan posisi ketika kondisi identifikasi bentuk dan kekuatan tren terpenuhi, dan pada saat yang sama mengatur stop loss yang sesuai.

Keunggulan Strategis

  1. Keandalan sinyal yang tinggi: Kombinasi dengan pengesahan ganda dari pola harga dan indikator tren, secara signifikan meningkatkan keandalan sinyal perdagangan.
  2. Pengendalian risiko yang masuk akal: Menggunakan pengaturan stop loss ATR dinamis, dapat menyesuaikan parameter kontrol risiko sesuai dengan volatilitas pasar.
  3. Tingkat sistematisasi yang tinggi: logika strategi yang jelas, parameter yang dapat disesuaikan, memudahkan transaksi sistematis.
  4. Adaptabilitas: dapat diterapkan di berbagai pasar dan periode waktu, memiliki fleksibilitas yang baik.

Risiko Strategis

  1. Risiko False Breakout: Dalam pasar yang bergejolak, sinyal false breakout dapat muncul dan menyebabkan kerugian perdagangan.
  2. Risiko slippage: Terhadap slippage yang signifikan di pasar yang kurang likuiditas karena strategi masuk dengan harga pasar tunggal.
  3. Sensitivitas parameter: Efek strategi sensitif terhadap parameter seperti ADX threshold dan siklus ATR, yang perlu dioptimalkan untuk pasar yang berbeda.
  4. Tergantung pada tren: Strategi mungkin tidak bekerja dengan baik di pasar yang bergoyang, lebih cocok untuk lingkungan pasar yang jelas tren.

Arah optimasi strategi

  1. Peningkatan pengenalan bentuk: Anda dapat menambahkan lebih banyak kriteria validasi bentuk harga, seperti perbandingan entitas dan bayangan yang mempertimbangkan garis miring.
  2. Peningkatan konfirmasi tren: Indikator tren lain seperti MACD atau crossover rata-rata bergerak dapat diperkenalkan sebagai konfirmasi tambahan.
  3. Optimasi Stop Loss: ATR dapat disesuaikan sesuai dengan dinamika karakteristik pasar yang berbeda, atau menggunakan metode tracking stop loss.
  4. Optimalisasi waktu perdagangan: Anda dapat menambahkan filter waktu perdagangan untuk menghindari perdagangan pada saat volatilitas pasar lebih tinggi.

Meringkaskan

Strategi pelacakan tren tren tren tiga jalur adalah sistem perdagangan lengkap yang menggabungkan bentuk harga klasik dan indikator teknis. Strategi ini memiliki nilai aplikasi nyata yang lebih baik melalui penyaringan tren ADX dan pengendalian risiko dinamis ATR sambil menjamin peluang perdagangan. Meskipun ada beberapa keterbatasan, strategi ini memiliki nilai aplikasi nyata dengan pengoptimalan parameter dan perbaikan strategi yang masuk akal.

Kode Sumber Strategi
/*backtest
start: 2024-08-11 00:00:00
end: 2025-02-19 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

// Copyright ...
// Based on the TMA Overlay by Arty, converted to a simple strategy example.
// Pine Script v5

//@version=5
strategy(title='3 Line Strike [TTF] - Strategy with ATR and ADX Filter',
     shorttitle='3LS Strategy [TTF]',
     overlay=true,
     initial_capital=100000,
     default_qty_type=strategy.percent_of_equity,
     default_qty_value=100,
     pyramiding=0)

// -----------------------------------------------------------------------------
//                               INPUTS
// -----------------------------------------------------------------------------

// ATR and ADX Inputs
atrLength = input.int(title='ATR Length', defval=14, group='ATR & ADX')
adxLength = input.int(title='ADX Length', defval=14, group='ATR & ADX')
adxThreshold = input.float(title='ADX Threshold', defval=25, group='ATR & ADX')

// ### 3 Line Strike
showBear3LS = input.bool(title='Show Bearish 3 Line Strike', defval=true, group='3 Line Strike',
     tooltip="Bearish 3 Line Strike (3LS-Bear) = 3 zelené sviečky, potom veľká červená sviečka (engulfing).")
showBull3LS = input.bool(title='Show Bullish 3 Line Strike', defval=true, group='3 Line Strike',
     tooltip="Bullish 3 Line Strike (3LS-Bull) = 3 červené sviečky, potom veľká zelená sviečka (engulfing).")

// -----------------------------------------------------------------------------
//                          CALCULATIONS
// -----------------------------------------------------------------------------

// Calculate ATR
atr = ta.atr(atrLength)

// Calculate ADX components manually
tr = ta.tr(true)
plusDM = ta.change(high) > ta.change(low) and ta.change(high) > 0 ? ta.change(high) : 0
minusDM = ta.change(low) > ta.change(high) and ta.change(low) > 0 ? ta.change(low) : 0
smoothedPlusDM = ta.rma(plusDM, adxLength)
smoothedMinusDM = ta.rma(minusDM, adxLength)
smoothedTR = ta.rma(tr, adxLength)

plusDI = (smoothedPlusDM / smoothedTR) * 100
minusDI = (smoothedMinusDM / smoothedTR) * 100

dx = math.abs(plusDI - minusDI) / (plusDI + minusDI) * 100
adx = ta.rma(dx, adxLength)

// Helper Functions
getCandleColorIndex(barIndex) =>
    int ret = na
    if (close[barIndex] > open[barIndex])
        ret := 1
    else if (close[barIndex] < open[barIndex])
        ret := -1
    else
        ret := 0
    ret

isEngulfing(checkBearish) =>
    sizePrevCandle = close[1] - open[1]
    sizeCurrentCandle = close - open
    isCurrentLargerThanPrevious = math.abs(sizeCurrentCandle) > math.abs(sizePrevCandle)

    if checkBearish
        isGreenToRed = (getCandleColorIndex(0) < 0) and (getCandleColorIndex(1) > 0)
        isCurrentLargerThanPrevious and isGreenToRed
    else
        isRedToGreen = (getCandleColorIndex(0) > 0) and (getCandleColorIndex(1) < 0)
        isCurrentLargerThanPrevious and isRedToGreen

isBearishEngulfing() => isEngulfing(true)
isBullishEngulfing() => isEngulfing(false)

is3LSBear() =>
    is3LineSetup = (getCandleColorIndex(1) > 0) and (getCandleColorIndex(2) > 0) and (getCandleColorIndex(3) > 0)
    is3LineSetup and isBearishEngulfing()

is3LSBull() =>
    is3LineSetup = (getCandleColorIndex(1) < 0) and (getCandleColorIndex(2) < 0) and (getCandleColorIndex(3) < 0)
    is3LineSetup and isBullishEngulfing()

// Signals
is3LSBearSig = is3LSBear() and adx > adxThreshold
is3LSBullSig = is3LSBull() and adx > adxThreshold

// Take Profit and Stop Loss
longTP = close + 2 * atr
longSL = close - 1 * atr
shortTP = close - 2 * atr
shortSL = close + 1 * atr

// -----------------------------------------------------------------------------
//                          STRATEGY ENTRY PRÍKAZY
// -----------------------------------------------------------------------------
if (showBull3LS and is3LSBullSig)
    strategy.entry("3LS_Bull", strategy.long, comment="3LS Bullish")
    strategy.exit("Exit Bull", from_entry="3LS_Bull", limit=longTP, stop=longSL)

if (showBear3LS and is3LSBearSig)
    strategy.entry("3LS_Bear", strategy.short, comment="3LS Bearish")
    strategy.exit("Exit Bear", from_entry="3LS_Bear", limit=shortTP, stop=shortSL)