Stratégie de swing trading basée sur le momentum


Date de création: 2024-02-05 10:44:19 Dernière modification: 2024-02-05 10:44:19
Copier: 1 Nombre de clics: 678
1
Suivre
1617
Abonnés

Stratégie de swing trading basée sur le momentum

Aperçu

Cette stratégie est une stratégie de trading à intervalles réguliers basée sur la technologie dynamique, utilisant le stop loss ATR. La stratégie a été créée par Kory Hoang de Stable.

La stratégie utilise l’indicateur de dynamique pour identifier la direction de la tendance, en combinaison avec l’indicateur ATR pour définir une ligne de stop-loss, pour réaliser une stratégie de trading de choc bas à bas.

Principe de stratégie

Le code définit d’abord le délai de réponse.

Ensuite, il y a la partie des indicateurs, qui comptera les indicateurs suivants:

  • atr(): Calcule l’indicateur ATR, qui est utilisé pour définir le stop loss;
  • max/min: enregistrer le prix le plus élevé/le plus bas d’une ligne K;
  • is_uptrend: détermine si la tendance est à la hausse;
  • L’entrée: une ligne de stop loss;

La logique principale pour juger de la tendance est la suivante:

Si la clôture est supérieure à la ligne d’arrêt vstop précédant la baisse, elle est considérée comme tendance à la hausse; si la clôture est inférieure à la ligne d’arrêt vstop précédant la hausse, elle est considérée comme tendance à la baisse.

Ajustez la position de la ligne de stop lorsque la tendance change.

Plus précisément, dans une tendance à la hausse, le stop loss est défini comme le prix le plus élevé de la ligne K précédente moins le montant de l’ATR; dans une tendance à la baisse, le stop loss est défini comme le prix le plus bas de la ligne K précédente plus le montant de l’ATR.

Il s’agit d’une méthode qui permet de suivre la tendance et d’arrêter les pertes.

Dans la section des règles de négociation, il est recommandé de faire plus de couverture en cas de rupture de la ligne de stop-loss.

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. Utilisez la technologie dynamique pour déterminer la direction de la tendance, saisir les points de basculement à temps et éviter les faux sauts.
  2. ATR Stop Loss traque les prix les plus élevés/les plus bas, ce qui permet une bonne maîtrise des risques.
  3. La logique de la stratégie est simple, claire et facile à comprendre.
  4. Il est possible d’effectuer des transactions de choc entre les tendances.

Analyse des risques

Cette stratégie comporte aussi des risques:

  1. Une mauvaise sélection des valeurs d’ATR peut entraîner un arrêt trop lâche ou trop serré.
  2. Les tremblements de terre peuvent entraîner de fortes fluctuations et des pertes continues.
  3. Le nombre de transactions peut être plus élevé et les frais de traitement plus élevés.

L’optimisation peut être réalisée dans les domaines suivants:

  1. Testez différents paramètres ATR pour trouver la combinaison optimale des paramètres.
  2. Optimisation de la ligne de stop-loss combinée à un indicateur de volatilité basé sur l’ATR.
  3. Il n’y a pas de raison de faire des investissements pour éviter les chocs, en combinant le filtrage des tendances.

Direction d’optimisation

Cette stratégie peut être optimisée dans les directions suivantes:

  1. Tester différents paramètres ATR pour trouver la combinaison optimale des paramètres. Les paramètres de plusieurs groupes peuvent être retestés pour évaluer le rapport bénéfice-risque.

  2. La ligne d’arrêt optimisée en combinaison avec un indicateur de volatilité basé sur l’ATR. Des indicateurs de volatilité peuvent être introduits, assouplissant de manière appropriée la marge d’arrêt lorsque la volatilité augmente.

  3. Le filtrage des tendances permet d’éviter que les marchés oscillants n’ouvrent des positions. Il est possible d’augmenter les indicateurs de jugement des tendances et de ne les ouvrir que lorsque la tendance est claire.

  4. Augmentation du mécanisme de gestion des positions. Les positions peuvent être ajustées en fonction de l’utilisation des fonds, du nombre de arrêts de pertes consécutifs, etc.

  5. Augmentation du contrôle des risques de la nuit. Il est possible d’arrêter activement les pertes avant la clôture pour éviter les sauts de prix de nuit.

Résumer

Cette stratégie sert de base à la stratégie de trading sur les chocs intra-jour, la pensée générale est claire, l’utilisation de la dynamique technique pour juger de la tendance et l’utilisation de l’indicateur ATR pour le suivi des points de glissement et des arrêts de perte permettent de contrôler efficacement le risque.

Il y a beaucoup de place pour l’optimisation, et des améliorations peuvent être apportées à la suite de plusieurs aspects tels que le jugement de la tendance, la méthode de stop-loss et la gestion de la position, afin de rendre la stratégie plus adaptée à la négociation en bourse. Dans l’ensemble, cette stratégie fournit un bon cadre de base pour la négociation quantitative.

Code source de la stratégie
/*backtest
start: 2023-01-29 00:00:00
end: 2024-02-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("BTC Swinger", overlay=true, commission_value = 0.25, default_qty_type=strategy.percent_of_equity, default_qty_value = 100)

/////////////////////////////////////////////////////////////
//START - SET DATE RANGE

// === BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1)
FromDay   = input(defval = 1, title = "From Day", minval = 1)
FromYear  = input(defval = 2010, title = "From Year")
ToMonth   = input(defval = 12, title = "To Month", minval = 1)
ToDay     = input(defval = 31, title = "To Day", minval = 1)
ToYear    = input(defval = 2020, title = "To Year")

startDate = time > timestamp(FromYear, FromMonth, FromDay, 1, 1)
endDate = time < timestamp(ToYear, ToMonth, ToDay, 23, 59)
withinTimeRange = true

/////////////////////////////////////////////////////////////
//END - SET DATE RANGE



/////////////////////////////////////////////////////////////
//START - INDICATORS

length = input(3)
mult = input(1, minval = 0.01)
atr_ = atr(length)
max1 = max(nz(max_[1]), close)
min1 = min(nz(min_[1]), close)
is_uptrend_prev = nz(is_uptrend[1], true)
stop = is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_
vstop_prev = nz(vstop[1])
vstop1 = is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend = close - vstop1 >= 0
is_trend_changed = is_uptrend != is_uptrend_prev
max_ = is_trend_changed ? close : max1
min_ = is_trend_changed ? close : min1
vstop = is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1
plot(vstop, color = is_uptrend ? yellow : red, style=circles, linewidth=2)

/////////////////////////////////////////////////////////////
//END - INDICATORS



/////////////////////////////////////////////////////////////
//START - TRADING RULES
direction = input(defval=1, title = "Strategy Direction", minval=-1, maxval=1)
strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))

condition1 = close > vstop and withinTimeRange
condition2 = close < vstop and withinTimeRange

strategy.entry("BUY", strategy.long, when = condition1)
strategy.entry("SELL", strategy.short, when = condition2)

/////////////////////////////////////////////////////////////
//END - TRADING RULES