Strategi Mengikuti Trend Super ATR


Tarikh penciptaan: 2024-02-19 11:41:20 Akhirnya diubah suai: 2024-02-19 11:41:20
Salin: 0 Bilangan klik: 669
1
fokus pada
1617
Pengikut

Strategi Mengikuti Trend Super ATR

Gambaran keseluruhan

SuperATR Trend Tracking Strategy adalah strategi trend tracking berdasarkan ATR Indicator. Ia menggunakan ATR Indicator untuk mengukur turun naik pasaran dan melakukan trend tracking dengan beberapa kali ganda ATR sebagai garis hentian.

Prinsip Strategi

Strategi ini mula-mula mengira ATR, di mana ATR adalah purata bergerak untuk turun naik harga saham dalam masa N hari yang lalu, untuk mewakili risiko dan turun naik pasaran. Strategi ini membolehkan kita mengubah cara pengiraan ATR, dan boleh memilih cara pengiraan ATR biasa atau SMA.

Laluan naik dan turun dihitung dengan menggunakan ATR yang dikali dengan satu kali ganda, iaitu:close - Multiplier * ATRPengiraan tren bawah:close + Multiplier * ATRIa merupakan saluran trend berdasarkan ATR.

Kemudian kita menilai apakah harga semasa telah menembusi saluran naik atau turun. Jika harga telah menembusi saluran naik, maka kita menilai bahawa ia telah memasuki aliran menurun. Jika harga telah menembusi saluran turun, maka kita menilai bahawa ia telah memasuki aliran naik.

Selain itu, strategi ini juga menetapkan tetingkap masa perdagangan, yang hanya berdagang dalam tempoh masa yang ditetapkan.

Kelebihan Strategik

Strategi trend-tracking yang berasaskan saluran indikator ini mempunyai beberapa kelebihan:

  1. Mengubah kedudukan hentian secara automatik menggunakan penunjuk ATR untuk mengawal risiko dengan berkesan
  2. Indeks ATR mempertimbangkan turun naik harga saham, garis hentian lebih munasabah
  3. Pendaftaran lebih tepat dengan penembusan laluan
  4. Membolehkan penyesuaian cara pengiraan ATR, meningkatkan fleksibiliti strategi
  5. Menetapkan tetingkap masa perdagangan untuk mengelakkan kegagalan strategi peristiwa besar

Secara keseluruhannya, ini adalah strategi trend-following yang mudah dan praktikal yang dapat mengawal risiko dengan berkesan, dan pada masa yang sama menghasilkan keuntungan yang lebih baik.

Analisis risiko

Strategi ini juga mempunyai beberapa risiko, terutamanya:

  1. Apabila pasaran berubah secara mendadak, ATR mungkin tidak bertindak balas dengan cepat terhadap perubahan pasaran, menyebabkan stop loss terlalu longgar
  2. Harga boleh bergoyang di dalam saluran apabila terdapat perbezaan pendapat, meningkatkan risiko perdagangan
  3. Tetapan kelipatan tetap mungkin tidak sesuai untuk semua jenis dan perlu disesuaikan untuk pelbagai jenis
  4. setWindow mengehadkan peluang perdagangan, dan jika tidak ditetapkan dengan baik, anda mungkin akan terlepas peluang perdagangan yang lebih baik

Untuk mengawal risiko ini, kita boleh mengambil langkah-langkah berikut:

  1. Mengelakkan bergantung kepada ATR secara bersendirian untuk menilai keadaan pasaran dengan menggunakan indikator lain
  2. Menambah syarat penapisan untuk mengelakkan risiko penembusan yang tidak berkesan
  3. Memilih bilangan ganda yang sesuai mengikut ciri-ciri sejarah pelbagai jenis
  4. Mengoptimumkan dan menguji parameter setWindow untuk memastikan ia betul

Arah pengoptimuman

Strategi ini masih boleh dioptimumkan lagi:

  1. Algoritma pembelajaran mesin boleh diperkenalkan untuk mencapai pengoptimuman dinamik perkalian
  2. Menggabungkan penilaian emosi dan lain-lain dengan leverage kosong, optimumkan ruang laluan
  3. Meningkatkan jumlah dagangan atau pengesahan turun naik untuk mengelakkan penembusan yang tidak sah
  4. Backtest menggunakan kerangka dasar berasaskan masa yang tinggi

Dengan pengoptimuman ini, anda dapat meningkatkan lagi kestabilan dan kadar pulangan strategi anda.

ringkaskan

Strategi ini overall adalah strategi trend-tracking yang sangat praktikal. Ia menggunakan indikator ATR untuk membina saluran penyesuaian dan memutuskan masa untuk membeli atau menjual dengan menerobos saluran. Strategi ini mudah digunakan, dapat mengawal risiko dengan berkesan, sesuai untuk mengesan trend garis panjang.

Kod sumber strategi
/*backtest
start: 2023-02-12 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('B厂长 @超级趋势精简优化版', overlay=true)
Periods = input(title='ATR周期', defval=10)
src = input(hl2, title='价格数据源')
Multiplier = input.float(title='ATR 乘数', step=0.1, defval=3.0)
changeATR = input(title='更改ATR计算方法', defval=true,tooltip = '默认为art否则sma(ta.tr,ATR周期)')
showsignals = input(title='显示买入/卖出信号', defval=false)
atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2
up = src - Multiplier * atr
up1 = nz(up[1], up)
up := close[1] > up1 ? math.max(up, up1) : up
dn = src + Multiplier * atr
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title='上涨趋势', style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0))
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal and showsignals ? up : na, title='买点', text='买点', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.new(color.white, 0))
dnPlot = plot(trend == 1 ? na : dn, title='下跌趋势', style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0))
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal and showsignals ? dn : na, title='卖点', text='卖点', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.new(color.white, 0))
FromMonth = input.int(defval=9, title='From Month', minval=1, maxval=12)
FromDay = input.int(defval=1, title='From Day', minval=1, maxval=31)
FromYear = input.int(defval=2018, title='From Year', minval=999)
ToMonth = input.int(defval=1, title='To Month', minval=1, maxval=12)
ToDay = input.int(defval=1, title='To Day', minval=1, maxval=31)
ToYear = input.int(defval=9999, title='To Year', minval=999)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)
window() =>
    time >= start and time <= finish ? true : false
longCondition = buySignal
if longCondition and window()
    strategy.entry('BUY', strategy.long, comment = '做多')
shortCondition = sellSignal
if shortCondition and window()
    strategy.entry('SAL', strategy.short, comment = '做空')

buy1 = ta.barssince(buySignal)
sell1 = ta.barssince(sellSignal)
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na