Adaptive ATR Trend Breakout Strategi

Penulis:ChaoZhang, Tanggal: 2023-10-31 15:58:46
Tag:

img

Gambaran umum

Strategi ini adalah strategi trend breakout berdasarkan indikator ATR. Ide utamanya adalah mengambil perdagangan trend breakout ketika harga melebihi kelipatan tertentu dari ATR. Strategi ini juga mencakup konfirmasi tren dan membatasi perdagangan dalam kisaran tanggal.

Prinsip

Strategi ini menggunakan indikator ATR untuk mengukur volatilitas harga. ATR adalah singkatan dari Average True Range dan mengukur volatilitas rata-rata selama periode. Parameter panjang dalam strategi menghitung periode ATR dan numATRs mewakili pengganda ATR untuk breakout.

Ketika harga pecah di atas multipel numATRs atas ATR, posisi panjang diambil.

Selain itu, strategi ini mencakup variabel bool needlong dan needshort untuk mengontrol hanya perdagangan panjang atau hanya perdagangan pendek.

Strategi ini menggunakan variabel ukuran untuk menentukan ukuran posisi dan menghitung ukuran order berdasarkan persentase ekuitas akun.

Keuntungan

  • Menggunakan ATR untuk menyesuaikan diri secara otomatis dengan volatilitas pasar tanpa pengaturan profit/loss manual.

  • Fleksibel untuk memilih panjang, pendek atau panjang/pendek saja.

  • Dapat mengatur rentang tanggal untuk menghindari perdagangan pada acara penting.

  • Ukuran posisi yang fleksibel berdasarkan persentase ekuitas akun.

Risiko dan Solusi

  • ATR hanya mempertimbangkan volatilitas harga. mungkin tidak memiliki stop loss yang cukup selama perubahan pasar yang besar. indikator lain dapat dikombinasikan.

  • Batas rentang tanggal dapat kehilangan kesempatan jika tidak ada pengaturan yang baik sebelum / setelah.

  • Ukuran persentase ekuitas berisiko kerugian besar pada perdagangan tunggal.

Ide-ide Optimasi

  • Tambahkan rata-rata bergerak untuk filter tren untuk mengurangi perdagangan kebisingan pecah palsu.

  • Uji periode ATR untuk menemukan parameter optimal.

  • Gabungkan dengan strategi lain untuk memanfaatkan kekuatan dan meningkatkan stabilitas.

Kesimpulan

Ini adalah tren yang dapat dimengerti setelah strategi menggunakan ATR untuk beradaptasi dengan volatilitas. Optimasi parameter dan menggabungkan dengan strategi lain dapat lebih meningkatkan kinerja dan stabilitas.


/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-30 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's Volty Strategy v1.0", shorttitle = "Volty 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 100)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
length = input(5)
numATRs = input(0.75)
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Indicator
atrs = sma(tr, length) * numATRs

//Trading
size = strategy.position_size
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]
if (not na(close[length])) and needlong
    strategy.entry("L", strategy.long, lot, stop = close + atrs, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if (not na(close[length])) and needlong == false
    strategy.entry("L", strategy.long, 0, stop = close + atrs, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if (not na(close[length])) and needshort
    strategy.entry("S", strategy.short, lot, stop = close - atrs, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if (not na(close[length])) and needshort == false
    strategy.entry("S", strategy.short, 0, stop = close - atrs, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

Lebih banyak