Stratégie de négociation de rupture de volatilité

Auteur:ChaoZhang est là., Date: 2023-10-30 16:58:03 Je suis désolé
Les étiquettes:

img

Résumé

La stratégie de trading de rupture de volatilité vise à capturer les ruptures de prix résultant d'une volatilité accrue du marché. La stratégie utilise l'indicateur Average True Range (ATR) pour mesurer la volatilité d'un actif sur une période spécifiée.

La logique de la stratégie

La stratégie calcule d'abord l'ATR sur une période choisie. Elle utilise ensuite l'ATR pour calculer un niveau de rupture supérieur et inférieur. Lorsque le prix de clôture dépasse le niveau supérieur, un signal long est généré. Lorsque le prix de clôture dépasse le niveau inférieur, un signal court est généré. Pour confirmer davantage les signaux, la barre actuelle doit se fermer pour sa partie du corps.

Lorsque le prix de clôture dépasse les niveaux supérieur ou inférieur, la zone de rupture est remplie d'une couleur indiquant la direction de la rupture.

Lorsqu'un signal long est généré et qu'il n'y a pas de position actuelle, la stratégie est longue.

L'entrée de longueur détermine la période pendant laquelle la volatilité est mesurée. Une valeur de longueur plus élevée implique de se concentrer sur des mouvements de prix plus longs. Par exemple, avec la longueur définie sur 20, chaque transaction s'étend sur environ 100 barres, capturant plusieurs oscillations.

L'abaissement de la valeur de la longueur permet de cibler les mouvements de prix à court terme et d'augmenter potentiellement la fréquence des transactions.

Analyse des avantages

L'indicateur ATR calcule dynamiquement les niveaux de rupture au lieu d'utiliser des paramètres fixes.

L'utilisation de fermetures de barres solides pour confirmer les signaux filtre les fausses ruptures.

L'entrée Longueur offre une flexibilité pour optimiser la stratégie pour des conditions de marché spécifiques.

Analyse des risques

Les opérations de rupture comportent le risque d'être arrêtées.

Les signaux de rupture peuvent générer de faux signaux conduisant à un sur-échange.

L'optimisation des paramètres nécessite suffisamment de données commerciales.

Des possibilités d'optimisation

Les bandes de Bollinger peuvent être introduites dans la période ATR pour calculer de nouveaux niveaux de rupture.

Les tendances peuvent être suivies après les ruptures au lieu de s'arrêter immédiatement.

Des paramètres différents ou l'évitement total des transactions peuvent être envisagés sur les marchés à fourchette pour éviter les fléchettes.

Conclusion

L'indicateur ATR définit dynamiquement les niveaux de rupture et les barres solides filtrent les fausses ruptures. L'entrée de longueur fournit une flexibilité pour ajuster la période de la stratégie. La stratégie convient à la tendance à moyen et long terme, mais les risques de rupture doivent être gérés par l'optimisation des paramètres.


/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 1h
basePeriod: 15m
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/

//@version=5
strategy("Volatility Breakout Strategy [Angel Algo]", overlay = true)

// Inputs
length = input(title="Length", defval=20)

// Calculate the average true range (ATR)
atr = ta.atr(length)

// Plot the ATR on the chart
plot(atr, color=color.blue, linewidth=2, title="ATR")

// Calculate the upper and lower breakouts
upper_breakout = high + atr
lower_breakout = low - atr

// Plot the upper and lower breakouts on the chart
ul = plot(upper_breakout[1], color = color.new(color.green, 100), linewidth=2, title="Upper Breakout Level")
ll = plot(lower_breakout[1], color = color.new(color.red, 100), linewidth=2, title="Lower Breakout Level")

// Create the signals
long_entry = ta.crossover(close, upper_breakout[1]) and barstate.isconfirmed
short_entry = ta.crossunder(close, lower_breakout[1]) and barstate.isconfirmed

active_signal_color =ta.barssince(long_entry) < ta.barssince(short_entry) ? 
   color.new(color.green,85) : color.new(color.red,85)

// Plot the signals on the chart
plotshape(long_entry and ta.barssince(long_entry[1]) > ta.barssince(short_entry[1]), location=location.belowbar, style=shape.triangleup, 
   color=color.green, size=size.normal, text = "Bullish breakout", textcolor = color.green)
plotshape(short_entry and ta.barssince(long_entry[1]) < ta.barssince(short_entry[1]), location=location.abovebar, style=shape.triangledown, 
   color=color.red, size=size.normal,text = "Bearish breakout",  textcolor = color.red)

// Fill the space between the upper and lower levels with the color that indicates the latest signal direction
fill(ul,ll, color=active_signal_color)   

long_condition = long_entry and strategy.position_size <= 0 and barstate.isconfirmed
short_condition = short_entry and strategy.position_size >= 0 and barstate.isconfirmed

if long_condition
    strategy.entry("Volatility Breakout Long", strategy.long)


if short_condition
    strategy.entry("Volatility Breakout Short", strategy.short)


Plus de