Strategi Mengikuti Trend Momentum Pecah Tiga Talian Digabungkan dengan Penapis ADX

ADX ATR TMA TP SL 3LS
Tarikh penciptaan: 2025-02-20 17:46:30 Akhirnya diubah suai: 2025-02-20 17:46:30
Salin: 0 Bilangan klik: 459
2
fokus pada
319
Pengikut

Strategi Mengikuti Trend Momentum Pecah Tiga Talian Digabungkan dengan Penapis ADX Strategi Mengikuti Trend Momentum Pecah Tiga Talian Digabungkan dengan Penapis ADX

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan pengesanan trend yang berdasarkan tiga garis bentuk penembusan dan penapisan trend ADX. Strategi ini mengiktiraf kekuatan trend dengan mengenal pasti tiga bentuk penembusan berturut-turut di belakang simetris, digabungkan dengan indikator ADX, dan menggunakan ATR untuk menetapkan kedudukan stop loss secara dinamik.

Prinsip Strategi

Logik teras strategi merangkumi elemen utama berikut:

  1. Pengiktirafan bentuk pecah tiga baris: bentuk berbilang kepala memerlukan satu pecah yang lebih besar selepas tiga baris yang berturut-turut; bentuk kepala kosong memerlukan satu pecah yang lebih besar selepas tiga baris yang berturut-turut.
  2. Pengesahan Kekuatan Trend ADX: menggunakan indikator ADX untuk menilai kekuatan trend semasa, isyarat perdagangan hanya akan dihasilkan apabila nilai ADX melebihi paras set (default 25)
  3. ATR Dinamik Stop Loss: menggunakan nilai ATR Dinamik untuk mengira kedudukan stop dan stop loss, di mana stop diletakkan pada 2 kali ATR dan stop loss diletakkan pada 1 kali ATR.
  4. Logik pelaksanaan perdagangan: Apabila syarat pengenalan bentuk dan kekuatan trend dipenuhi, sistem akan melakukan operasi pembukaan kedudukan secara automatik, dan pada masa yang sama menetapkan pesanan hentian dan kerugian yang sesuai.

Kelebihan Strategik

  1. Kebolehpercayaan isyarat yang tinggi: Gabungan dua kali pengesahan bentuk harga dan indikator trend, meningkatkan kebolehpercayaan isyarat perdagangan dengan ketara.
  2. Pengendalian risiko yang munasabah: Dengan ATR yang dinamika, parameter kawalan risiko boleh disesuaikan mengikut turun naik pasaran.
  3. Tingkat sistematisasi yang tinggi: Logik strategi jelas, parameter boleh disesuaikan, memudahkan perdagangan sistematik.
  4. Ketabahan: boleh digunakan untuk pasaran dan tempoh masa yang berbeza, dengan keserasian yang baik.

Risiko Strategik

  1. Risiko penembusan palsu: Isyarat penembusan palsu boleh berlaku dalam pasaran yang bergolak, menyebabkan kerugian perdagangan.
  2. Risiko tergelincir: Tergelincir yang ketara mungkin berlaku di pasaran yang kurang cair kerana strategi menggunakan harga pasaran.
  3. Sensitiviti parameter: Kesan strategi sensitif terhadap parameter seperti ADX threshold dan kitaran ATR, yang memerlukan pengoptimuman untuk pasaran yang berbeza.
  4. Kepercayaan trend: Strategi mungkin tidak berfungsi dengan baik dalam pasaran yang bergolak, lebih sesuai untuk keadaan pasaran yang jelas trend.

Arah pengoptimuman strategi

  1. Pengujian bentuk yang dipertingkatkan: Syarat pengesahan bentuk harga yang lebih banyak boleh ditambah, seperti perkadaran entiti dan garis bayangan yang dipertimbangkan.
  2. Peningkatan pengesahan trend: Indikator trend lain seperti MACD atau persilangan purata bergerak boleh diperkenalkan sebagai pengesahan tambahan.
  3. Pengoptimuman Stop Loss: ATR boleh disesuaikan mengikut dinamika ciri pasaran yang berbeza, atau menggunakan kaedah Tracking Stop Loss.
  4. Pengoptimuman masa dagangan: penapis masa dagangan boleh ditambah untuk mengelakkan dagangan pada masa pasaran yang tidak menentu.

ringkaskan

Strategi pelacakan trend momentum tiga baris adalah sistem perdagangan lengkap yang menggabungkan bentuk harga klasik dan petunjuk teknikal. Strategi ini mempunyai nilai aplikasi sebenar yang lebih baik, walaupun terdapat beberapa batasan, dengan pengoptimuman parameter dan penambahbaikan strategi yang munasabah.

Kod 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)