Strategi ini bertujuan untuk mengkaji perbezaan antara membeli aset apabila turun naik rendah dan apabila ia tinggi. Ia membolehkan pengguna memilih sama ada untuk membeli semasa tempoh turun naik rendah atau tinggi dengan mengubah pembolehubah input mod.
Strategi ini menentukan turun naik dengan mengira ATR dan SMA. Khususnya, ia mengira SMA ATR, dan kemudian mengira nisbah antara ATR dan SMA. Jika nisbah ini lebih tinggi daripada volatiliti ambang yang ditakrifkan penggunaTargetRatio, turun naik dianggap tinggi. Jika lebih rendah daripada ambang, turun naik dianggap rendah.
Bergantung pada mod yang dipilih oleh pengguna, strategi menghasilkan isyarat beli apabila turun naiknya tinggi atau rendah. Setelah dibeli, strategi akan bertahan selama beberapa bar yang ditentukan oleh sellAfterNBarsLength, dan kemudian menutup kedudukan.
Kelebihan utama strategi ini ialah:
Risiko utama strategi ini ialah:
Risiko di atas boleh dikurangkan dengan menyesuaikan parameter dan menggabungkan pembelian dari tahap turun naik yang berbeza.
Strategi ini boleh dioptimumkan lagi dengan:
Strategi ini dapat membandingkan dengan berkesan prestasi strategi pembelian turun naik rendah dan strategi pembelian turun naik tinggi. Ia menggunakan SMA untuk meluruskan ATR dan menghasilkan isyarat perdagangan berdasarkan tahap turun naik. Strategi ini boleh ditingkatkan melalui penyesuaian parameter dan pengoptimuman keadaan. Secara keseluruhan, strategi ini menyediakan alat yang berkesan untuk meneliti strategi berasaskan turun naik.
/*backtest start: 2023-01-01 00:00:00 end: 2024-01-07 00:00:00 period: 1d basePeriod: 1h 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/ // © I11L //@version=5 strategy("I11L - Better Buy Low Volatility or High Volatility?", overlay=false) mode = input.string("Buy low Volatility",options = ["Buy low Volatility","Buy high Volatility"]) volatilityTargetRatio = input.float(1,minval = 0, maxval = 100,step=0.1, tooltip="1 equals the average atr for the security, a lower value means that the volatility is lower") atrLength = input.int(14) atr = ta.atr(atrLength) / close avg_atr = ta.sma(atr,atrLength*5) ratio = atr / avg_atr sellAfterNBarsLength = input.int(5, step=5, minval=0) var holdingBarsCounter = 0 if(strategy.opentrades > 0) holdingBarsCounter := holdingBarsCounter + 1 isBuy = false if(mode == "Buy low Volatility") isBuy := ratio < volatilityTargetRatio else isBuy := ratio > volatilityTargetRatio isClose = holdingBarsCounter > sellAfterNBarsLength if(isBuy) strategy.entry("Buy",strategy.long) if(isClose) holdingBarsCounter := 0 strategy.exit("Close",limit=close) plot(ratio, color=isBuy[1] ? color.green : isClose[1] ? color.red : color.white) plot(1, color=color.white)