ATR Trend Breakout Strategi

Penulis:ChaoZhang, Tanggal: 2024-03-22 14:48:37
Tag:

img

Gambaran umum

Ini adalah strategi perdagangan kuantitatif yang menangkap trend breakout menggunakan indikator ATR dan harga penutupan. Strategi ini secara dinamis menghitung garis tren atas dan bawah untuk menentukan arah tren dan menghasilkan sinyal perdagangan ketika harga penutupan melanggar garis tren. Strategi ini juga menetapkan level stop loss dan target harga dan memungkinkan trailing stop berdasarkan volatilitas.

Prinsip Strategi

  1. Menghitung sinyal ATR: atr_signal = atr(atr_period)
  2. Menghitung garis tren atas dan bawah:
    • Garis tren bawah: lower_trend = rendah - atr_mult*atr_signal
    • Garis tren atas: upper_trend = tinggi + atr_mult*atr_signal
  3. Secara dinamis menyesuaikan garis tren, menjaga mereka tidak berubah jika mereka rusak, jika tidak memperbarui ke nilai terbaru
  4. Kode warna garis tren berdasarkan posisi relatif harga penutupan untuk mengidentifikasi arah tren
  5. Menghasilkan sinyal perdagangan:
    • Sinyal panjang: Tidak ada posisi saat ini dan harga penutupan melanggar garis tren atas
    • Sinyal pendek: Tidak ada posisi saat ini dan harga penutupan melanggar di bawah garis tren bawah
  6. Tetapkan harga stop loss dan target:
    • Stop-loss: Harga masuk terbaru ± rentang ATR * faktor pada saat keluar
    • Harga target: Harga masuk terbaru ± rentang stop-loss * rasio reward/risiko (rr)
  7. Hentikan penundaan:
    • Stop panjang: Garis tren atas tertinggi
    • Stop singkat: Garis tren bawah terendah

Analisis Keuntungan

  1. Mengatur garis tren secara dinamis berdasarkan volatilitas untuk beradaptasi dengan kondisi pasar yang berbeda
  2. Garis tren yang dikodekan warna dengan arah untuk mudah mengidentifikasi tren
  3. Menggunakan ATR sebagai ukuran volatilitas untuk menetapkan harga stop loss dan target yang wajar
  4. Fungsi trailing stop untuk mengunci keuntungan sambil meminimalkan penarikan
  5. Parameter tinggi untuk menyesuaikan instrumen dan kerangka waktu yang berbeda

Analisis Risiko

  1. Strategi trend breakout dapat menghasilkan sinyal yang berlebihan yang menyebabkan kerugian di pasar yang bergolak
  2. Pemilihan parameter ATR yang tidak benar dapat mengakibatkan garis tren yang terlalu sensitif atau lambat, mempengaruhi kualitas sinyal
  3. Rasio reward/risiko tetap mungkin tidak sesuai dengan karakteristik pasar yang berbeda
  4. Trailing stop dapat mengurangi kerugian dan kehilangan pergerakan tren

Solusi:

  1. Memperkenalkan filter tren atau indikator osilator untuk menghindari kerugian di pasar yang bervariasi
  2. Mengoptimalkan parameter ATR secara terpisah berdasarkan karakteristik instrumen dan kerangka waktu
  3. Mengoptimalkan rasio reward/risiko dan logika trailing stop untuk meningkatkan strategi pengembalian yang disesuaikan dengan risiko
  4. Gabungkan dengan metode pengenalan tren untuk meningkatkan trailing stop dan menangkap lebih banyak keuntungan tren

Arahan Optimasi

  1. Menggabungkan beberapa kerangka waktu, menggunakan kerangka waktu yang lebih tinggi untuk mengidentifikasi tren dan kerangka waktu yang lebih pendek untuk memicu sinyal
  2. Menambahkan indikator volume dan harga untuk validasi sebelum trend line breakouts untuk meningkatkan validitas sinyal
  3. Mengoptimalkan ukuran posisi dan menggabungkan perdagangan swing
  4. Melakukan optimasi parameter untuk stop-loss dan reward/risk ratio
  5. Memperbaiki logika trailing stop untuk mengurangi stop prematur selama pergerakan tren

Analisis multi-frame waktu membantu menyaring kebisingan untuk identifikasi tren yang lebih stabil. Konfirmasi volume dan harga sebelum breakout dapat menghilangkan sinyal palsu. Optimasi ukuran posisi meningkatkan efisiensi modal. Mengoptimalkan parameter stop-loss dan reward/risiko dapat meningkatkan pengembalian yang disesuaikan dengan risiko. Memperbaiki logika trailing stop memungkinkan menangkap lebih banyak keuntungan tren sambil mengendalikan penarikan.

Ringkasan

Strategi ini menggunakan ATR sebagai pengukur volatilitas untuk menyesuaikan posisi garis tren secara dinamis dan menangkap trend breakout. Ini menetapkan target stop-loss dan profit yang wajar, menggunakan trailing stop untuk mengunci keuntungan. Parameternya dapat disesuaikan untuk kemampuan beradaptasi yang kuat. Namun, strategi trend breakout rentan terhadap kerugian whipsaw dalam kondisi bergolak dan memerlukan optimalisasi dan penyempurnaan lebih lanjut. Menggabungkan beberapa kerangka waktu, menyaring sinyal, mengoptimalkan ukuran posisi, optimalisasi parameter, dan teknik lainnya dapat meningkatkan kinerja dan ketahanan strategi.


/*backtest
start: 2023-03-16 00:00:00
end: 2024-03-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title = "Claw-Pattern", overlay=true, calc_on_every_tick=true, default_qty_type= strategy.percent_of_equity,default_qty_value=10, currency="USD")
//Developer: Trading Strategy Guides
//Creator: Trading Strategy Guides
//Date: 3/18/2024
//Description: A trend trading system strategy 

atr_period = input(title="ATR Period", defval=120, type=input.integer)
atr_mult = input(title="ATR Multiplier", defval=2, type=input.integer)
dir = input(title="Direction (Long=1, Short=-1, Both = 0)", defval=1, type=input.integer)
factor = input(title="Stop Level Deviation (% Chan.)", defval=0.75, type=input.float)
rr = input(title="Reward to Risk Multiplier", defval=2, type=input.integer)
trail_bar_start = input(title="Trail Stop Bar Start", defval=20, type=input.integer)
col_candles = input(title="Enable Colored Candles", defval=false, type=input.bool)

atr_signal = atr(atr_period)

lower_trend = low - atr_mult*atr_signal
upper_trend = high + atr_mult*atr_signal

upper_trend := upper_trend > upper_trend[1] and close < upper_trend[1] ? upper_trend[1] : upper_trend
lower_trend := lower_trend < lower_trend[1] and close > lower_trend[1] ? lower_trend[1] : lower_trend

upper_color = barssince(cross(close, upper_trend[1])) > barssince(cross(close, lower_trend[1])) ? color.red : na
lower_color = barssince(cross(close, upper_trend[1])) > barssince(cross(close, lower_trend[1])) ? na : color.green

trend_line = lower_trend

plot(lower_trend, color=lower_color, title="Lower Trend Color")
plot(upper_trend, color=upper_color, title="Upper Trend Color")

is_buy = strategy.position_size == 0 and crossover(close, upper_trend[1]) and upper_color[1]==color.red and (dir == 1 or dir == 0)
is_sell = strategy.position_size == 0 and crossover(close, lower_trend[1]) and lower_color[1]==color.green and (dir == -1 or dir == 0)

if is_buy
    strategy.entry("Enter Long", strategy.long)
else if is_sell
    strategy.entry("Enter Short", strategy.short)

Lebih banyak