Strategi Hentian Terakhir ATR

Penulis:ChaoZhang, Tarikh: 2023-09-26 20:23:13
Tag:

Gambaran keseluruhan: Strategi hentian trailing ATR adalah strategi perdagangan yang secara dinamik menetapkan tahap hentian kerugian berdasarkan penunjuk Julat Benar Purata (ATR).

Logika Strategi

Strategi ini mengira penunjuk AVERAGE (purata bergerak harga) dan jalur atas / bawah DIFF / DIFFLOW berdasarkan nilai ATR, membentuk saluran perdagangan.

Secara khusus, ia mula-mula mengira purata bergerak sederhana AVERAGE dan penunjuk ATR. Band atas DIFF dan band bawah DIFFLOW kemudian dikira dengan mengalikan nilai ATR dengan pekali. Ini membentuk saluran perdagangan yang dibatasi oleh DIFF dan DIFFLOW. Apabila harga melanggar band atas, kedudukan panjang diambil. Apabila harga melanggar band bawah, kedudukan pendek diambil. Di samping itu, tahap stop loss bergerak secara dinamik dengan nilai ATR. Ini membolehkan berhenti adaptif.

Oleh itu, strategi ini boleh terus-menerus pergi panjang / pendek untuk menangkap keuntungan dalam trend utama, sambil menggunakan ATR trailing berhenti untuk mengawal risiko.

Analisis Kelebihan

Kelebihan strategi ini termasuk:

  1. Hentian dinamik berasaskan ATR menyesuaikan diri dengan turun naik pasaran, mengelakkan hentian yang terlalu dekat atau terlalu jauh.

  2. Saluran perdagangan bertujuan untuk menangkap pembalikan purata dalam trend. penggunaan modal yang baik apabila harga berayun dalam saluran.

  3. Perdagangan trend berterusan tanpa meramalkan penembusan.

  4. Parameter dan peraturan yang mudah difahami dan automatik.

  5. Penggunaan modal yang tinggi, perdagangan berterusan memberikan lebih banyak peluang keuntungan.

Risiko dan Penambahbaikan

Beberapa risiko yang perlu dipertimbangkan:

  1. Pekali ATR yang besar membawa kepada hentian terlalu jauh, gagal mengawal risiko.

  2. Whipsaws di pasaran yang terikat julat mencetuskan hentian yang kerap.

  3. Kemungkinan kerugian apabila harga berbalik selepas pecah awal.

  4. Peningkatan tinggi boleh membuat berhenti tidak berkesan.

Kemungkinan pengoptimuman:

  1. Mengoptimumkan parameter ATR untuk mencari keseimbangan yang betul antara mengesan turun naik dan mengelakkan hentian yang berlebihan.

  2. Tambah penunjuk trend, hanya perdagangan pecah ke arah trend.

  3. Uji parameter secara berasingan untuk setiap instrumen untuk mencari nilai optimum.

  4. Mengoptimumkan kemasukan, mempertimbangkan untuk memasuki saluran pertengahan.

  5. Meningkatkan saiz kedudukan sambil mengawal jumlah risiko/drawdown.

Kesimpulan

Strategi ATR trailing stop berdagang secara berterusan dalam trend sambil menguruskan risiko secara dinamik. Ia sesuai dengan instrumen yang tidak menentu dan menyediakan penggunaan modal yang baik. Pengoptimuman parameter dan penambahan penapis dapat memperbaiki prestasi. Secara keseluruhan strategi trend yang mudah dan praktikal.


/*backtest
start: 2023-09-18 00:00:00
end: 2023-09-25 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Investoz

//@version=4
strategy("ATR Strategy FOREX", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

len = input(26, type=input.integer, minval=1, title="Length")
mul = input(1, type=input.float, minval=0, title="Length")
mullow = input(2, type=input.float, minval=0, title="Length")

price = sma(close, 1)
average = ema(close, len)
diff = atr(len) * mul
difflow = atr(len) * mullow

bull_level = average + diff
bear_level = average - difflow
bull_cross = crossunder(price, bear_level)
bear_cross = crossunder(bull_level, price)

FromMonth = input(defval = 8, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 18, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2008, title = "From Year", minval = 2008)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2020, title = "To Year", minval = 2019)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       
startTimeOk()  => true

if (startTimeOk())
    strategy.entry("KOP", strategy.long, when=bull_cross)
    strategy.close("KOP", when=bear_cross)  
    strategy.entry("SALJ", strategy.short, when=bear_cross)
    strategy.close("SALJ", when=bull_cross)

plot(price, title="price", color=color.black, transp=50, linewidth=2)
a0 = plot(average, title="average", color=color.red, transp=50, linewidth=1)
a1 = plot(bull_level, title="bull", color=color.green, transp=50, linewidth=1)
a2 = plot(bear_level, title="bear", color=color.red, transp=50, linewidth=1)
fill(a0, a1, color=color.green, transp=97)
fill(a0, a2, color=color.red, transp=97)

Lebih lanjut