Pelacakan tren dinamis ATR dan strategi perdagangan masuk kembali

ATR SMA MA
Tanggal Pembuatan: 2025-02-18 15:11:28 Akhirnya memodifikasi: 2025-02-18 15:11:28
menyalin: 1 Jumlah klik: 362
1
fokus pada
1617
Pengikut

Pelacakan tren dinamis ATR dan strategi perdagangan masuk kembali

Ringkasan

Ini adalah strategi pelacakan tren berdasarkan ATR yang disesuaikan secara dinamis, yang menggabungkan rata-rata bergerak dan indikator ATR untuk menentukan titik masuk dan keluar. Karakteristik utama strategi ini adalah naik ke bawah melalui ATR yang disesuaikan secara dinamis pada rata-rata bergerak, melakukan lebih banyak masuk ketika harga menembus lintasan, dan mengatur stop loss dan stop loss berdasarkan kelipatan ATR.

Prinsip Strategi

Strategi ini didasarkan pada beberapa faktor kunci berikut:

  1. Menggunakan rata-rata bergerak ATR yang disesuaikan sebagai dasar untuk menilai tren, membentuk orbit naik turun yang dinamis
  2. Ketika harga menembus tren, sinyal multiplikasi terjadi, harga masuk adalah harga penutupan saat ini.
  3. Stop loss diatur untuk 2 kali jarak ATR di bawah harga masuk
  4. Stop loss diatur di atas harga masuk ((5+ pengganda kustom) × jarak ATR
  5. Setelah stop loss atau stop loss dipicu, jika harga kembali ke harga masuk awal, strategi akan secara otomatis masuk kembali
  6. Menggunakan batas tampilan hingga 30 K-line untuk mengoptimalkan tampilan grafik

Keunggulan Strategis

  1. Adaptif dinamis: Rata-rata bergerak yang disesuaikan dengan ATR dapat beradaptasi dengan perubahan volatilitas pasar
  2. Ilmu manajemen risiko: Stop loss dan stop loss berdasarkan ATR yang dinamis, sesuai dengan karakteristik pasar yang berfluktuasi
  3. Inovasi mekanisme re-entry: memungkinkan re-entry ketika harga kembali ke posisi yang menguntungkan, meningkatkan peluang untuk mendapatkan keuntungan
  4. Efek visualisasi yang sangat baik: Strategi memberikan tampilan entry, stop loss, dan stop loss yang jelas untuk memantau perdagangan
  5. Fleksibilitas parameter: Periode penilaian tren dan stop loss dapat disesuaikan dengan parameter input

Risiko Strategis

  1. Risiko reversal: kemungkinan seringnya trigger stop loss di pasar yang bergejolak
  2. Risiko Re-Entry: Pengembalian harga ke titik masuk dan pembentukan kembali mungkin menghadapi penghentian kerugian berkelanjutan
  3. Risiko slippage: Pada periode fluktuasi yang kuat, harga transaksi aktual dapat menyimpang dari harga sinyal
  4. Sensitivitas parameter: parameter optimal dapat bervariasi dalam kondisi pasar yang berbeda
  5. Beban komputasi: perlu menghitung beberapa indikator teknis secara real time, yang dapat meningkatkan beban sistem

Arah optimasi strategi

  1. Memperkenalkan filter lingkungan pasar: Anda dapat menambahkan filter tingkat fluktuasi, menyesuaikan parameter strategi atau menghentikan perdagangan selama fluktuasi tinggi
  2. Optimalkan logika re-entry: pertimbangkan untuk menggunakan batasan kondisi yang lebih ketat saat re-entry, seperti indikator konfirmasi tren
  3. Perbaikan mekanisme stop loss: memungkinkan stop loss mobile untuk melindungi lebih banyak keuntungan jika tren berlanjut
  4. Tambahkan filter waktu: Anda dapat menambahkan batasan periode transaksi untuk menghindari periode likuiditas rendah
  5. Optimalkan efisiensi komputasi: meningkatkan efisiensi operasi strategi dengan mengurangi perhitungan dan pemetaan yang tidak perlu

Meringkaskan

Ini adalah strategi pelacakan tren yang dirancang secara rasional, logis, dan jelas, yang memberikan adaptasi pasar yang baik melalui penyesuaian dinamis ATR. Mekanisme masuk kembali strategi adalah inovasi yang dapat memberikan peluang keuntungan tambahan dalam kondisi pasar yang baik. Meskipun ada beberapa risiko yang perlu diperhatikan, stabilitas dan profitabilitas strategi dapat ditingkatkan lebih lanjut dengan arah optimasi yang disarankan.

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