
Strategi pelacakan dinamik multi ruang adalah strategi yang menggunakan nilai purata dinamik untuk mengesan trend harga. Ia menentukan trend semasa dengan mengira purata bergerak harga tertinggi dan terendah dalam tempoh tertentu, dan digabungkan dengan ATR untuk mencapai stop loss dinamik.
Strategi ini pertama-tama mengira purata bergerak harga tertinggi dan terendah dalam tempoh tertentu (default 200 hari) dan mengambil titik tengah keduanya sebagai garis asas. Kemudian mengira sejauh mana harga menyimpang dari garis asas, dianggap sebagai tren naik apabila harga lebih tinggi daripada ATR garis asas (default 0.5 kali ATR 10 hari) dan dianggap sebagai tren menurun apabila harga lebih rendah daripada ATR garis asas.
Isyarat Keluar dihasilkan apabila harga kembali ke garis asas. Selain itu, perubahan dinamik ATR dapat membuat stop loss berlarutan mengikut trend besar, sehingga mengurangkan perdagangan terlalu kerap yang disebabkan oleh turun naik bukan trend.
Anda boleh mengurangkan sensitiviti hentian dengan menyesuaikan parameter ATR dengan betul, atau menyertakan indikator lain untuk memfilter masa perdagangan yang pasti. Anda juga boleh menilai selera risiko dengan menggabungkan pergerakan saham besar, memilih untuk melakukan lebih banyak hanya dalam keadaan saham besar.
Strategi pengesanan dinamik pelbagai ruang secara keseluruhan adalah strategi pengesanan trend yang mudah dan praktikal. Ia menentukan arah trend melalui purata dinamik, dan menggunakan ATR untuk mewujudkan stop loss dinamik, yang dapat mengawal risiko dengan berkesan. Strategi ini sesuai untuk keadaan pasaran yang jelas trend, dengan menangkap perubahan trend tepat pada masanya dapat memperoleh keuntungan tambahan yang disimpan dalam jangka panjang.
/*backtest
start: 2022-10-10 00:00:00
end: 2023-10-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Trend Following Long Only Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
lookback_length = input(200, type=input.integer, minval=1, title="Lookback Length")
smoother_length = input(5, type=input.integer, minval=1, title="Smoother Length")
atr_length = input(10, type=input.integer, minval=1, title="ATR Length")
atr_multiplier = input(0.5, type=input.float, minval=0.5, title="ATR Multiplier")
vola = atr(atr_length) * atr_multiplier
price = sma(close, 3)
l = ema(lowest(low, lookback_length), smoother_length)
h = ema(highest(high, lookback_length), smoother_length)
center = (h + l) * 0.5
upper = center + vola
lower = center - vola
trend = ema(price > upper ? 1 : (price < lower ? -1 : 0), 3)
c = trend < 0 ? upper : lower
pcenter = plot(center, transp=100)
pclose = plot(close, transp=100)
pc = plot(c, transp=100)
buy_signal = crossover(trend, 0.0)
sell_signal = crossunder(trend, 0.0)
strategy.entry("Buy", strategy.long, when=buy_signal)
strategy.close("Buy", when=sell_signal)
bgcolor(trend >= 0 ? color.green : color.red, transp=95)
fill(pc, pclose, color=trend >= 0 ? color.green : color.red)