Stratégie d'achat à faible volatilité Stratégie d'achat à forte volatilité


Date de création: 2024-01-08 11:33:58 Dernière modification: 2024-01-08 11:33:58
Copier: 0 Nombre de clics: 607
1
Suivre
1617
Abonnés

Stratégie d’achat à faible volatilité Stratégie d’achat à forte volatilité

Aperçu

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.

Principe de stratégie

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.

Analyse des avantages

Les principaux avantages de cette stratégie sont les suivants:

  1. Il est possible de comparer intuitivement la performance de la stratégie d’achat pendant les périodes de faible volatilité et de forte volatilité.
  2. L’ATR peut être réglé avec le SMA et filtrer les fausses percées.
  3. Il est possible de tester différents niveaux de volatilité en ajustant les paramètres.

Analyse des risques

Les principaux risques de cette stratégie sont les suivants:

  1. Si vous achetez uniquement à basse volatilité, vous risquez de manquer une occasion de voir les prix augmenter.
  2. Si vous achetez uniquement pour des taux de volatilité élevés, cela peut augmenter le risque systémique.
  3. Une mauvaise configuration des paramètres peut entraîner une perte d’opportunité d’achat ou une liquidation prématurée.

Les risques ci-dessus peuvent être atténués en ajustant les paramètres et en combinant des achats à différents niveaux de volatilité.

Direction d’optimisation

Cette stratégie peut être optimisée:

  1. Tester différents paramètres de longueur ATR.
  2. Une stratégie de stop-loss supplémentaire
  3. Le nombre de fausses percées a été filtré en combinaison avec d’autres indicateurs.
  4. Optimiser les conditions d’achat et de placement des actions.

Résumer

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.

Code source de la stratégie
/*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)