Stratégie de rupture de Momentum de Richard Bookstaber


Date de création: 2023-11-02 15:12:46 Dernière modification: 2023-11-02 15:12:46
Copier: 1 Nombre de clics: 695
1
Suivre
1617
Abonnés

Stratégie de rupture de Momentum de Richard Bookstaber

Aperçu

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.

Principe de stratégie

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.

Analyse des avantages

  • Le stop ATR dynamique permet de contrôler efficacement le risque et de modifier le point de stop en fonction de la volatilité du marché.
  • Les signaux d’opérations sont générés par des ruptures, permettant de saisir les changements de tendance du marché.
  • Les paramètres sont optimisés et peuvent être ajustés pour différentes variétés et périodes.
  • Les idées stratégiques sont simples, claires, faciles à comprendre et à mettre en œuvre.

Analyse des risques

  • L’indicateur ATR réagit lentement aux événements soudains et risque de manquer la première percée.
  • L’équilibre multi-marché est mauvais, le fait de faire plus ou de ne faire que du temps libre est nettement plus efficace que le commerce bidirectionnel.
  • Les paramètres de la stratégie sont faciles à sur-optimiser et peuvent avoir un effet négatif.
  • Les transactions sont fréquentes et les coûts peuvent être élevés.

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.

Direction d’optimisation

  • Il est possible de considérer la direction de la tendance en combinaison avec d’autres indicateurs afin d’éviter les erreurs de trading. Par exemple, le RSI, le MACD, etc.
  • Un module de gestion des positions peut être ajouté pour ajuster les positions en fonction des conditions du marché.
  • La combinaison de paramètres optimale pour les différentes variétés.
  • Les paramètres d’optimisation automatique peuvent être combinés avec la technologie d’apprentissage automatique.

Résumer

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.

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