Strategi ini bertujuan untuk mempelajari perbedaan antara membeli aset ketika volatilitas rendah dan ketika volatilitas tinggi.
Strategi ini menentukan volatilitas dengan menghitung ATR dan SMA-nya. Secara khusus, ia menghitung SMA ATR, dan kemudian menghitung rasio antara ATR dan SMA-nya. Jika rasio ini lebih tinggi dari volatilitas ambang batas yang ditentukan penggunaTargetRatio, volatilitas dianggap tinggi. Jika lebih rendah dari ambang batas, volatilitas dianggap rendah.
Bergantung pada mode yang dipilih oleh pengguna, strategi menghasilkan sinyal beli ketika volatilitas tinggi atau rendah. Setelah dibeli, strategi akan bertahan selama sejumlah bar yang ditentukan oleh sellAfterNBarsLength, dan kemudian menutup posisi.
Keuntungan utama dari strategi ini adalah:
Risiko utama dari strategi ini adalah:
Risiko di atas dapat dikurangi dengan menyesuaikan parameter dan menggabungkan pembelian dari tingkat volatilitas yang berbeda.
Strategi ini dapat lebih dioptimalkan dengan:
Strategi ini dapat secara efektif membandingkan kinerja strategi pembelian volatilitas rendah dan strategi pembelian volatilitas tinggi. Ini menggunakan SMA untuk merata ATR dan menghasilkan sinyal perdagangan berdasarkan tingkat volatilitas. Strategi dapat ditingkatkan melalui penyesuaian parameter dan pengoptimalan kondisi. Secara keseluruhan, strategi ini menyediakan alat yang efektif untuk meneliti strategi berbasis volatilitas.
/*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)