Strategi Penembusan Trend ATR yang Sesuai

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

img

Ringkasan

Strategi ini adalah strategi trend breakout berdasarkan penunjuk ATR. Idea utamanya adalah untuk mengambil perdagangan trend breakout apabila harga melebihi kelipatan tertentu ATR. Strategi ini juga termasuk pengesahan trend dan mengehadkan perdagangan dalam julat tarikh.

Prinsip

Strategi ini menggunakan penunjuk ATR untuk mengukur turun naik harga. ATR bermaksud Julat Benar Purata dan mengukur turun naik purata dalam tempoh. Parameter panjang dalam strategi mengira tempoh ATR dan numATRs mewakili pengganda ATR untuk pecah.

Apabila harga pecah di atas kelipatan numATRs atas ATR, kedudukan panjang diambil. Apabila harga pecah di bawah kelipatan numATRs bawah ATR, kedudukan pendek diambil.

Di samping itu, strategi ini merangkumi pembolehubah bool needlong dan needshort untuk mengawal hanya perdagangan panjang atau hanya perdagangan pendek.

Strategi ini menggunakan pembolehubah saiz untuk menentukan saiz kedudukan dan mengira saiz pesanan berdasarkan peratusan ekuiti akaun.

Kelebihan

  • Menggunakan ATR untuk menyesuaikan diri secara automatik dengan turun naik pasaran tanpa tetapan keuntungan / kerugian manual.

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

  • Boleh menetapkan julat tarikh untuk mengelakkan perdagangan pada peristiwa penting.

  • Ukuran kedudukan yang fleksibel berdasarkan peratusan ekuiti akaun.

Risiko dan Penyelesaian

  • ATR hanya mempertimbangkan turun naik harga. Ia mungkin tidak mempunyai stop loss yang mencukupi semasa turun naik pasaran yang besar. Penunjuk lain boleh digabungkan.

  • Had julat tarikh mungkin terlepas peluang jika tidak ada persediaan yang baik sebelum / selepas.

  • Ukuran peratusan ekuiti berisiko kerugian besar pada perdagangan tunggal.

Idea pengoptimuman

  • Tambah purata bergerak untuk penapis trend untuk mengurangkan perdagangan bunyi pecah palsu.

  • Uji tempoh ATR untuk mencari parameter optimum.

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

Kesimpulan

Ini adalah trend yang dapat difahami mengikuti strategi menggunakan ATR untuk menyesuaikan diri dengan turun naik. pengoptimuman parameter dan menggabungkan dengan strategi lain dapat meningkatkan prestasi dan kestabilan. tetapi kerugian tunggal yang besar harus dielakkan dan berhenti yang tidak mencukupi semasa turun naik yang besar harus diperhatikan.


/*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 lanjut