
Le but de cette stratégie est d’étudier la différence entre l’achat d’actifs pendant les périodes de faible volatilité et de forte volatilité. Elle permet aux utilisateurs de choisir d’acheter pendant les périodes de faible volatilité et de forte volatilité en modifiant les variables d’entrée de mode.
Cette stratégie détermine le taux de volatilité en calculant l’ATR et son SMA. Plus précisément, elle calcule l’SMA de l’ATR, puis le ratio de l’ATR à son SMA. Si ce ratio est supérieur au seuil de volatilité défini par l’utilisateur, le taux de volatilité est considéré comme élevé; si il est inférieur à ce seuil, le taux de volatilité est considéré comme faible.
Selon le mode choisi par l’utilisateur, la stratégie génère un signal d’achat lorsque la volatilité est élevée ou faible. Une fois achetée, la stratégie détient un certain nombre de bars (défini par sellAfterNBarsLength) et ensuite est en position de vente.
Les principaux avantages de cette stratégie sont les suivants:
Les principaux risques de cette stratégie sont les suivants:
Les risques ci-dessus peuvent être atténués en ajustant les paramètres et en combinant des achats à différents niveaux de volatilité.
Cette stratégie peut être optimisée:
Cette stratégie permet de comparer efficacement la performance des stratégies d’achat à basse volatilité et à haute volatilité. Elle utilise le SMA pour lisser l’ATR et générer un signal de transaction en fonction du niveau de volatilité. La stratégie peut être améliorée en ajustant les paramètres et en optimisant les conditions.
/*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)