Stratégie de trading ADX Trend Breakout Momentum

ADX DMI MA ATR
Date de création: 2024-11-28 15:44:59 Dernière modification: 2024-11-28 15:44:59
Copier: 0 Nombre de clics: 583
1
Suivre
1617
Abonnés

Stratégie de trading ADX Trend Breakout Momentum

Aperçu

Il s’agit d’une stratégie de négociation quantitative basée sur l’indicateur de tendance moyen (ADX) et les ruptures de prix. La stratégie consiste principalement à déterminer la force de la tendance du marché en surveillant la valeur de l’indicateur ADX et, en combinaison avec les signaux de rupture de prix, à capturer la dynamique du marché.

Principe de stratégie

La logique fondamentale de la stratégie comprend les éléments clés suivants :

  1. Surveillance de l’indicateur ADX: utilisation de l’indicateur ADX pour évaluer la force d’une tendance du marché, lorsque la valeur de l’ADX est inférieure à 17.5 indique que le marché est susceptible de se former.
  2. La stratégie suit le prix de clôture le plus élevé des 34 derniers cycles et déclenche un signal de transaction lorsque le prix actuel franchit cette résistance.
  3. Gestion des périodes de négociation: la stratégie ne fonctionne que pendant les périodes de négociation désignées (0730-1430) afin d’éviter le risque de périodes de faible liquidité.
  4. Les mécanismes de contrôle des risques:
    • Mise en place d’un stop-loss en dollars fixes pour limiter les pertes sur une seule transaction
    • Limiter le nombre de transactions à 3 au maximum par période
    • La liquidation automatique de toutes les positions à la fin de la période de négociation

Avantages stratégiques

  1. Capture de tendance: en combinant l’indicateur ADX et les ruptures de prix, il est possible d’identifier efficacement les phases initiales de la tendance du marché.
  2. La gestion des risques est améliorée: elle comprend des mesures de contrôle des risques à plusieurs niveaux, telles que des arrêts fixes, des limites de nombre de transactions et des mécanismes de liquidation automatique.
  3. Le niveau d’automatisation est élevé: la logique de la stratégie est claire, les transactions sont entièrement automatisées et ne nécessitent aucune intervention humaine.
  4. Adaptabilité: les paramètres peuvent être ajustés en fonction des différentes conditions du marché, comme le montant de la perte, le cycle de rétrocession, etc.

Risque stratégique

  1. Risque de fausse rupture: une fausse rupture peut se produire dans un marché en crise et entraîner des pertes continues.
  2. Paramétralité: l’efficacité de la stratégie dépend fortement des paramètres de la threshold ADX et du cycle de rétrocession.
  3. Limite de temps: les transactions à une heure donnée peuvent passer inaperçues aux autres heures.
  4. Paramètres de stop-loss: le stop-loss en dollars fixes peut ne pas être suffisamment flexible dans différents environnements de volatilité.

Orientation de l’optimisation de la stratégie

  1. Stop-loss dynamique: il est recommandé de remplacer le stop-loss fixe en dollars par un stop-loss dynamique basé sur l’ATR, afin de s’adapter à différents environnements de fluctuation du marché.
  2. Filtrage des conditions de marché: augmentation des filtres de volatilité, ajustement ou suspension des transactions dans des conditions de forte volatilité.
  3. Optimisation de l’entrée: on peut envisager d’augmenter la confirmation de la transaction et d’améliorer la fiabilité du signal de rupture.
  4. Ajustement des paramètres dynamiques: un mécanisme d’ajustement adaptatif permettant de réaliser des valeurs de seuil ADX et des cycles de rétrocession.

Résumer

Il s’agit d’une stratégie de suivi de tendance structurée et logiquement claire. En combinant les indicateurs ADX avec les ruptures de prix, les opportunités de tendance du marché sont capturées dans un cadre de gestion efficace des risques. Bien qu’il y ait de la place pour l’optimisation, le cadre de base de la stratégie est solide et convient aux composants de base du système de trading quantifié.

Code source de la stratégie
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © HuntGatherTrade
// ========================
// NQ 30 minute, ES 30 minute

//@version=5
strategy("ADX Breakout", overlay=false, initial_capital=25000, default_qty_value=1)

// ===============================
// Input parameters
// ===============================
stopLoss = input(1000.0, title="Stop Loss ($)", group="Exits")
session = input("0730-1430:1234567", group="Trade Session")
highestLB = input(34, title="Highest lookback window", group="Indicator values")

// ===============================
// Trade Session Handling
// ===============================
t = time(timeframe.period, session)

// Reset numTrades at the start of each session
var int numTrades = 0
is_new_session = ta.change(time("D")) != 0
if is_new_session
    numTrades := 0

// ===============================
// Entry Conditions
// ===============================
[plusDI, minusDI, adxValue] = ta.dmi(50, 14)
entryCondition = (close >= ta.highest(close, highestLB)[1]) and (adxValue < 17.5) and (strategy.position_size == 0) and (numTrades < 3) and not na(t)

// ===============================
// 7. Execute Entry
// ===============================
var float stopPricePlot = na

if entryCondition
    entryPrice = close + syminfo.mintick
    strategy.entry("Long Entry", strategy.long, stop=entryPrice)
    //stopPrice = strategy.position_avg_price - (stopLoss / syminfo.pointvalue)
    //strategy.exit("Stop Loss", "Long Entry", stop=stopPrice)
    numTrades += 1

if (strategy.position_size > 0) and (strategy.position_size[1] == 0)
    stopPoints = stopLoss / syminfo.pointvalue
    stopPrice = strategy.position_avg_price - stopPoints
    stopPrice := math.round(stopPrice / syminfo.mintick) * syminfo.mintick
    strategy.exit("Stop Loss", from_entry="Long Entry", stop=stopPrice)


if ta.change(strategy.opentrades) == 1
    float entryPrice = strategy.opentrades.entry_price(0)
    stopPricePlot := entryPrice - (stopLoss / syminfo.pointvalue)

if ta.change(strategy.closedtrades) == 1
    stopPricePlot   := na

plot(stopPricePlot, "Stop-loss level", color.red, 1, plot.style_linebr)

// ===============================
// Exit at End of Session
// ===============================
if na(t) and strategy.position_size != 0
    strategy.close_all(comment="End of Day Exit")