Penjejakan arah aliran dinamik ATR dan strategi perdagangan kemasukan semula

ATR SMA MA
Tarikh penciptaan: 2025-02-18 15:11:28 Akhirnya diubah suai: 2025-02-18 15:11:28
Salin: 1 Bilangan klik: 362
1
fokus pada
1617
Pengikut

Penjejakan arah aliran dinamik ATR dan strategi perdagangan kemasukan semula

Gambaran keseluruhan

Ini adalah strategi pengesanan trend berdasarkan penyesuaian dinamik ATR, yang menggabungkan purata bergerak dan penunjuk ATR untuk menentukan titik masuk dan keluar. Ciri utama strategi ini adalah melalui ATR untuk menyesuaikan pergerakan rata-rata ke atas dan ke bawah, melakukan lebih banyak masuk apabila harga menembusi, dan menetapkan titik berhenti dan berhenti berdasarkan kelipatan ATR.

Prinsip Strategi

Strategi ini berdasarkan kepada beberapa faktor utama:

  1. Menggunakan purata bergerak ATR yang diselaraskan sebagai asas untuk menilai trend, membentuk trajectory naik dan turun yang dinamik
  2. Apabila harga menembusi tren, ia menghasilkan isyarat ganda, harga masuk adalah harga penutupan semasa
  3. Stop loss ditetapkan sebagai 2 kali jarak ATR di bawah harga kemasukan
  4. Tetapan stop-loss di atas harga kemasukan ((5 + kelipatan tersuai) × jarak ATR
  5. Selepas penangguhan atau hentian berlaku, strategi akan secara automatik memasuki semula jika harga kembali ke harga masuk asal
  6. Menggunakan had paparan sehingga 30 baris K untuk mengoptimumkan paparan carta

Kelebihan Strategik

  1. Beradaptasi dinamik: Rata-rata bergerak yang diselaraskan oleh ATR dapat menyesuaikan diri dengan perubahan kadar turun naik pasaran
  2. Sains Pengurusan Risiko: Stop loss dan stop loss berdasarkan ATR dinamik yang sesuai dengan ciri-ciri turun naik pasaran
  3. Inovasi mekanisme kemasukan semula: membolehkan kemasukan semula untuk meningkatkan peluang keuntungan apabila harga kembali ke kedudukan yang menguntungkan
  4. Kesan visual yang sangat baik: Strategi memberikan garis masuk, berhenti, dan berhenti yang jelas untuk pemantauan perdagangan
  5. Fleksibiliti parameter: dengan parameter input, anda boleh menyesuaikan kitaran penghakiman trend dan kelipatan hentian

Risiko Strategik

  1. Risiko trend reversal: kemungkinan sering mencetuskan stop loss dalam pasaran yang bergolak
  2. Risiko kemasukan semula: harga kembali ke titik kemasukan untuk membina semula gudang mungkin menghadapi kerugian berterusan
  3. Risiko slippage: Dalam tempoh turun naik yang kuat, harga transaksi sebenar mungkin menyimpang dari harga isyarat
  4. Sensitiviti parameter: parameter optimum mungkin berubah-ubah dalam keadaan pasaran yang berbeza
  5. Beban pengiraan: memerlukan pengiraan pelbagai petunjuk teknikal dalam masa nyata, yang mungkin meningkatkan beban sistem

Arah pengoptimuman strategi

  1. Memperkenalkan penapis keadaan pasaran: penapis kadar turun naik boleh ditambah, menyesuaikan parameter strategi atau menangguhkan perdagangan semasa turun naik tinggi
  2. Logik kemasukan semula yang dioptimumkan: pertimbangkan untuk menggunakan sekatan syarat yang lebih ketat semasa kemasukan semula, seperti indikator pengesahan trend
  3. Peningkatan mekanisme penangguhan: membolehkan penangguhan kehilangan bergerak untuk melindungi lebih banyak keuntungan apabila trend berterusan
  4. Menambah penapis masa: boleh menambah sekatan tempoh dagangan, mengelakkan tempoh kecairan rendah
  5. Mengoptimumkan kecekapan pengiraan: meningkatkan kecekapan operasi strategi dengan mengurangkan pengiraan dan lukisan yang tidak perlu

ringkaskan

Ini adalah strategi trend-following yang direka dengan logik yang jelas dan logik, yang memberikan adaptasi pasaran yang baik melalui penyesuaian dinamik ATR. Mekanisme kemasukan semula strategi adalah satu inovasi yang dapat memberikan peluang keuntungan tambahan dalam keadaan pasaran yang baik. Walaupun terdapat beberapa risiko yang perlu diperhatikan, dengan arah pengoptimuman yang disyorkan, kestabilan dan keuntungan strategi dapat ditingkatkan lagi.

Kod sumber strategi
/*backtest
start: 2024-02-19 00:00:00
end: 2025-02-16 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("KON SET By Sai", overlay=true, max_lines_count=40)

// INPUTS
length = input.int(10, "Trend Length")
target_multiplier = input.int(0, "Set Targets") // Target adjustment
max_bars = 30  // Number of bars to display the lines after signal

// VARIABLES
var bool inTrade = false
var float entryPrice = na
var float stopLoss = na
var float targetPrice = na
var int barCount = na  // Counter to track how many bars have passed since signal

// ATR for stop-loss and target calculation
atr_value = ta.sma(ta.atr(200), 200) * 0.8

// Moving averages for trend detection
sma_high = ta.sma(high, length) + atr_value
sma_low = ta.sma(low, length) - atr_value

// Signal conditions for trend changes
signal_up = ta.crossover(close, sma_high)
signal_down = ta.crossunder(close, sma_low)

// Entry conditions
if not inTrade and signal_up
    entryPrice := close
    stopLoss := close - atr_value * 2
    targetPrice := close + atr_value * (5 + target_multiplier)
    strategy.entry("Long", strategy.long)
    strategy.exit("Exit Long", "Long", stop=stopLoss, limit=targetPrice)
    inTrade := true
    barCount := 0  // Reset bar count when signal occurs

// Exit conditions
if inTrade and (close <= stopLoss or close >= targetPrice)
    inTrade := false
    entryPrice := na
    stopLoss := na
    targetPrice := na
    barCount := na  // Reset bar count on exit

// Re-entry logic
if not inTrade and close == entryPrice
    entryPrice := close
    stopLoss := close - atr_value * 2
    targetPrice := close + atr_value * (5 + target_multiplier)
    strategy.entry("Re-Long", strategy.long)
    strategy.exit("Re-Exit Long", "Re-Long", stop=stopLoss, limit=targetPrice)
    inTrade := true
    barCount := 0  // Reset bar count when re-entry happens

// Count bars since the signal appeared (max 30 bars)
if inTrade and barCount < max_bars
    barCount := barCount + 1

// Plotting lines for entry, stop-loss, and targets (Only during active trade and within max_bars)
entry_line = plot(inTrade and barCount <= max_bars ? entryPrice : na, title="Entry Price", color=color.new(color.green, 0), linewidth=1, style=plot.style_cross)
sl_line = plot(inTrade and barCount <= max_bars ? stopLoss : na, title="Stop Loss", color=color.new(color.red, 0), linewidth=1, style=plot.style_cross)
target_line = plot(inTrade and barCount <= max_bars ? targetPrice : na, title="Target Price", color=color.new(color.blue, 0), linewidth=1, style=plot.style_cross)

// Background color between entry and target/stop-loss (Only when inTrade and within max_bars)
fill(entry_line, target_line, color=color.new(color.green, 90), title="Target Zone")
fill(entry_line, sl_line, color=color.new(color.red, 90), title="Stop-Loss Zone")

// Label updates (reduce overlap and clutter)
if bar_index % 50 == 0 and inTrade and barCount <= max_bars  // Adjust label frequency for performance
    label.new(bar_index + 1, entryPrice, text="Entry: " + str.tostring(entryPrice, "#.##"), style=label.style_label_left, color=color.green, textcolor=color.white, size=size.small)
    label.new(bar_index + 1, stopLoss, text="Stop Loss: " + str.tostring(stopLoss, "#.##"), style=label.style_label_left, color=color.red, textcolor=color.white, size=size.small)
    label.new(bar_index + 1, targetPrice, text="Target: " + str.tostring(targetPrice, "#.##"), style=label.style_label_left, color=color.blue, textcolor=color.white, size=size.small)