ATR Trend Breakout Strategi

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

img

Ringkasan

Ini adalah strategi perdagangan kuantitatif yang menangkap gangguan trend menggunakan penunjuk ATR dan harga penutupan. Strategi ini secara dinamik mengira garis trend atas dan bawah untuk menentukan arah trend dan menghasilkan isyarat perdagangan apabila harga penutupan memecahkan garis trend. Strategi ini juga menetapkan tahap stop-loss dan harga sasaran dan membolehkan berhenti yang mengikut berdasarkan turun naik.

Prinsip Strategi

  1. Mengira isyarat ATR: atr_signal = atr(atr_period)
  2. Mengira garis trend atas dan bawah:
    • Garis trend bawah: lower_trend = rendah - atr_mult*atr_signal
    • Garis trend atas: upper_trend = tinggi + atr_mult*atr_signal
  3. Dinamis menyesuaikan garis trend, mengekalkan mereka tidak berubah jika mereka rosak, jika tidak mengemas kini kepada nilai terkini
  4. Kod warna garis trend berdasarkan kedudukan relatif harga penutupan untuk mengenal pasti arah trend
  5. Menghasilkan isyarat perdagangan:
    • Isyarat panjang: Tiada kedudukan semasa dan harga penutupan pecah di atas garis trend atas
    • Isyarat pendek: Tiada kedudukan semasa dan harga penutupan pecah di bawah garis trend bawah
  6. Tetapkan harga stop-loss dan sasaran:
    • Stop-loss: Harga kemasukan terkini ± julat ATR * faktor pada masa pecah
    • Harga sasaran: Harga kemasukan terkini ± julat stop-loss * nisbah ganjaran/risiko (rr)
  7. Hentikan penunggang:
    • Henti panjang: Garis trend atas tertinggi
    • Hentian pendek: Garis trend bawah terendah

Analisis Kelebihan

  1. Menyesuaikan garis trend secara dinamik berdasarkan turun naik untuk menyesuaikan diri dengan keadaan pasaran yang berbeza
  2. Garis trend yang dikodkan warna dengan arah untuk pengenalan trend yang mudah
  3. Menggunakan ATR sebagai ukuran turun naik untuk menetapkan harga stop-loss dan sasaran yang munasabah
  4. Fungsi trailing stop untuk mengunci keuntungan sambil mengurangkan pengeluaran
  5. Parameter yang tinggi untuk menyesuaikan instrumen dan jangka masa yang berbeza

Analisis Risiko

  1. Strategi trend breakout boleh menghasilkan isyarat yang berlebihan yang membawa kepada kerugian di pasaran yang bergolak
  2. Pemilihan parameter ATR yang tidak betul boleh menyebabkan garis trend yang terlalu sensitif atau perlahan, mempengaruhi kualiti isyarat
  3. Nisbah ganjaran / risiko tetap mungkin tidak disesuaikan dengan baik dengan ciri pasaran yang berbeza
  4. Penghentian yang beransur-ansur boleh mengurangkan kerugian dan kehilangan pergerakan trend

Penyelesaian:

  1. Memperkenalkan penapis trend atau penunjuk osilator untuk mengelakkan kerugian di pasaran pelbagai
  2. Mengoptimumkan parameter ATR secara berasingan berdasarkan ciri instrumen dan jangka masa
  3. Mengoptimumkan nisbah ganjaran/risiko dan logik hentian untuk meningkatkan pulangan yang disesuaikan dengan risiko strategi
  4. Gabungkan dengan kaedah pengiktirafan trend untuk meningkatkan hentian penghujung dan menangkap lebih banyak keuntungan trend

Arahan pengoptimuman

  1. Menggabungkan pelbagai jangka masa, menggunakan jangka masa yang lebih tinggi untuk mengenal pasti trend dan jangka masa yang lebih rendah untuk mencetuskan isyarat
  2. Tambah penunjuk jumlah dan harga untuk pengesahan sebelum pecah garis trend untuk meningkatkan kesahihan isyarat
  3. Mengoptimumkan saiz kedudukan dan menggabungkan perdagangan ayunan
  4. Melakukan pengoptimuman parameter untuk stop-loss dan nisbah ganjaran/risiko
  5. Meningkatkan logik hentian untuk mengurangkan hentian awal semasa pergerakan trend

Analisis jangka masa berbilang membantu menapis bunyi bising untuk pengenalan trend yang lebih stabil. Pengesahan jumlah dan harga sebelum pecah boleh menghapuskan isyarat palsu. Pengoptimuman saiz kedudukan meningkatkan kecekapan modal. Mengoptimumkan parameter stop-loss dan ganjaran / risiko dapat meningkatkan pulangan yang disesuaikan dengan risiko. Memperhalusi logik berhenti menyusul membolehkan menangkap lebih banyak keuntungan trend sambil mengawal penarikan.

Ringkasan

Strategi ini menggunakan ATR sebagai pengukur turun naik untuk menyesuaikan kedudukan garis trend secara dinamik dan menangkap penembusan trend. Ia menetapkan sasaran stop-loss dan keuntungan yang munasabah, menggunakan berhenti yang menarik untuk mengunci keuntungan. Parameternya boleh diselaraskan untuk kebolehsesuaian yang kuat. Walau bagaimanapun, strategi penembusan trend terdedah kepada kerugian whipsaw dalam keadaan yang bergolak dan memerlukan pengoptimuman dan penyempurnaan lanjut. Menggabungkan pelbagai jangka masa, menapis isyarat, mengoptimumkan saiz kedudukan, pengoptimuman parameter, dan teknik lain dapat meningkatkan prestasi 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 lanjut