Strategi dagangan pelarian tiga baris dinamik berdasarkan ATR dan ADX

ATR ADX SL TP
Tarikh penciptaan: 2025-02-21 09:23:20 Akhirnya diubah suai: 2025-02-27 17:20:50
Salin: 2 Bilangan klik: 405
2
fokus pada
319
Pengikut

Strategi dagangan pelarian tiga baris dinamik berdasarkan ATR dan ADX Strategi dagangan pelarian tiga baris dinamik berdasarkan ATR dan ADX

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan yang lebih tinggi berdasarkan tiga garisan klasik bentuk pecah, yang menyediakan penyelesaian perdagangan yang lengkap dengan mengintegrasikan penunjuk pengesahan trend ADX dan mekanisme stop loss ATR yang dinamik. Inti strategi adalah untuk mengenal pasti tiga garisan K yang berturut-turut dan menggabungkan pengesahan kekuatan trend untuk menghasilkan isyarat perdagangan yang tepat.

Prinsip Strategi

Strategi ini beroperasi berdasarkan tiga mekanisme teras: pertama adalah untuk mengenal pasti tiga bentuk pecah garisan klasik, termasuk bentuk bullish ((( tiga garisan berturut-turut selepas pecah garisan) dan bentuk bearish ((( tiga garisan berturut-turut selepas pecah garisan); kedua menggunakan ADX ((( indikator trend purata) untuk pengaliran kekuatan trend, dan hanya mengesahkan isyarat apabila nilai ADX melebihi nilai yang ditetapkan; dan terakhir menggunakan ATR ((( true amplitude) untuk mengira kedudukan stop loss, mewujudkan penyesuaian diri untuk pengurusan risiko. Strategi ini secara teknikal memastikan kualiti isyarat dengan penentuan warna K garisan yang tepat dan pengujian kekuatan pecah.

Kelebihan Strategik

  1. Mekanisme pengesahan isyarat diperbaiki: meningkatkan kebolehpercayaan isyarat dengan menggabungkan pelbagai petunjuk teknikal (K-line form, ADX, ATR)
  2. Pengurusan risiko yang cerdas: Tetapan stop loss dinamik berasaskan ATR yang dapat disesuaikan secara automatik dengan turun naik pasaran
  3. Kemudahan penyesuaian yang tinggi: menawarkan pilihan penyesuaian untuk pelbagai parameter utama, termasuk ADX threshold, kitaran ATR dan sebagainya
  4. Pengesanan trend dipertingkatkan: penapisan ADX memastikan hanya masuk dalam keadaan trend yang kuat
  5. Struktur kod yang jelas: reka bentuk modular memudahkan penyelenggaraan dan pengembangan

Risiko Strategik

  1. Penangguhan pengenalan bentuk: Pengesahan bentuk penembusan tiga baris memerlukan empat baris K untuk diselesaikan, yang boleh menyebabkan kelewatan masa masuk
  2. Risiko Penembusan Palsu: Isyarat Penembusan Palsu Mungkin Terjadi di Pasaran Bergolak
  3. Keterlambatan ADX: Sebagai penanda trend, ADX sendiri mempunyai keterlambatan
  4. Pertimbangan stop loss: Tetapan stop loss berasaskan ATR mungkin terlalu besar atau terlalu kecil semasa turun naik yang kuat
  5. Kepercayaan kepada keadaan pasaran: strategi lebih baik dalam pasaran yang jelas bercenderungan, dan mungkin kurang berkesan dalam pasaran yang bergolak

Arah pengoptimuman strategi

  1. Peningkatan penapisan isyarat: mekanisme pengesahan jumlah pesanan boleh ditambah untuk meningkatkan kebolehpercayaan isyarat
  2. Pengoptimuman parameter dinamik: memperkenalkan mekanisme penyesuaian diri untuk menyesuaikan nilai ADX dan kitaran ATR secara dinamik
  3. Pengoptimuman masa masuk: boleh digabungkan dengan struktur harga (support / resistance) untuk mengoptimumkan tempat masuk
  4. Pengurusan kedudukan yang lebih baik: meningkatkan mekanisme pengurusan kedudukan dinamik berdasarkan kadar turun naik
  5. Pengiktirafan persekitaran pasaran: menambah logik klasifikasi persekitaran pasaran, menggunakan tetapan parameter yang berbeza dalam keadaan pasaran yang berbeza

ringkaskan

Strategi ini mewujudkan sistem perdagangan yang mempunyai asas teori dan praktikal dengan menggabungkan bentuk terobosan tiga baris klasik dengan penunjuk teknologi moden. Kelebihan utamanya adalah mekanisme pengesahan isyarat berganda dan pengurusan risiko yang cerdas, tetapi penggunaan memerlukan perhatian terhadap kesesuaian dan pengoptimuman parameter dalam keadaan pasaran.

Kod sumber strategi
/*backtest
start: 2024-08-05 00:00:00
end: 2024-12-24 00:00:00
period: 5h
basePeriod: 5h
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)