
La stratégie de rupture dynamique est basée sur l’idée, développée en 1984 par Richard Buchstaber, que lorsque de grandes fluctuations surviennent, le marché tend à continuer à fonctionner dans cette direction. Par conséquent, la stratégie utilise l’ATR pour mesurer la volatilité et émet un signal de transaction lorsque la variation des prix de clôture dépasse plusieurs fois la valeur de la marge ATR.
La stratégie commence par calculer l’indicateur ATR pour mesurer la volatilité du marché. Ensuite, elle calcule la valeur absolue des variations quotidiennes du prix de clôture. Elle génère un signal de transaction lorsque le prix de clôture change de plusieurs fois la valeur de l’indicateur ATR.
La stratégie utilise l’indicateur ATR pour déterminer dynamiquement les seuils de rupture. Lorsque la volatilité du marché augmente, la valeur de la rupture augmente, ce qui réduit les erreurs de transaction. Lorsque la volatilité du marché diminue, la valeur de la rupture diminue, ce qui permet de saisir les opportunités de rupture en temps opportun.
On peut envisager d’améliorer l’efficacité de la sélection des transactions en les combinant avec d’autres indicateurs. On peut également choisir des paramètres plus avantageux en fonction des caractéristiques de la variété. La fréquence des transactions est contrôlée par des technologies telles que l’algorithme Martinegger.
La stratégie de rupture dynamique est simple et directe, elle utilise la rupture pour générer un signal de transaction. La rupture dynamique permet de s’adapter à la volatilité du marché. La stratégie peut obtenir de bons résultats en s’appuyant sur l’optimisation des paramètres.
/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 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/
// © EduardoMattje
//@version=5
strategy("Volatility System", overlay=false, margin_long=0, margin_short=0, default_qty_type=strategy.percent_of_equity,
default_qty_value=100, process_orders_on_close=true, initial_capital=20000)
// Inputs
var averageLength = input.int(14, "Average length", 2)
var multiplier = input.float(2.0, "Multiplier", 0.0, step=0.1)
// Calculations
atr = ta.atr(averageLength) * multiplier
closingChange = ta.change(close, 1)
atrPenetration(int signal) =>
res = closingChange * signal > atr[1]
longCondition = atrPenetration(1)
shortCondition = atrPenetration(-1)
// Order calls
if (longCondition)
strategy.entry(strategy.direction.long, strategy.long)
if (shortCondition)
strategy.entry(strategy.direction.short, strategy.short)
// Visuals
plot(atr, "ATR", color.white, 2)
plot(math.abs(closingChange), "Absolute close change", color.red)