Stratégie de trading dynamique à trois lignes basée sur l'ATR et l'ADX

ATR ADX SL TP
Date de création: 2025-02-21 09:23:20 Dernière modification: 2025-02-27 17:20:50
Copier: 2 Nombre de clics: 405
2
Suivre
319
Abonnés

Stratégie de trading dynamique à trois lignes basée sur l’ATR et l’ADX Stratégie de trading dynamique à trois lignes basée sur l’ATR et l’ADX

Aperçu

La stratégie est un système de négociation avancé basé sur les formes de rupture classiques en trois lignes, qui offre une solution de négociation complète en intégrant l’indicateur de confirmation de tendance ADX et le mécanisme de stop-loss dynamique ATR. Le cœur de la stratégie est d’identifier les formes de rupture après trois lignes K consécutives et de les combiner avec la confirmation de la force de la tendance pour générer un signal de négociation précis.

Principe de stratégie

La stratégie fonctionne sur trois mécanismes principaux: d’abord, l’identification des formes de rupture classiques de trois lignes, y compris les formes de hausse (((trois lignes consécutives après les ruptures de l’axe) et les formes de baisse (((trois lignes consécutives après les ruptures de l’axe); ensuite, l’utilisation de l’ADX (((indicateur de tendance moyenne) pour filtrer la force de la tendance et confirmer le signal uniquement lorsque la valeur de l’ADX dépasse la limite définie; enfin, l’utilisation de l’ATR (((amplitude d’onde réelle) dynamique pour calculer la position de l’arrêt de la rupture et réaliser l’auto-adaptation de la gestion des risques. La stratégie garantit la qualité du signal techniquement par une détermination précise de la couleur de la ligne K et une vérification de la force de rupture.

Avantages stratégiques

  1. Mechanisme de confirmation de signal amélioré: amélioration de la fiabilité du signal par la combinaison de multiples indicateurs techniques (format de ligne K, ADX, ATR)
  2. Gestion intelligente des risques: paramètres d’arrêt et de perte dynamiques basés sur l’ATR qui s’adaptent automatiquement à la volatilité du marché
  3. Haute personnalisation: offre des options d’ajustement pour plusieurs paramètres clés, y compris les seuils ADX, les cycles ATR, etc.
  4. Suivi de la tendance amélioré: filtrage ADX assurant l’entrée uniquement dans un environnement de forte tendance
  5. Structure claire du code: la conception modulaire facilite la maintenance et l’extension

Risque stratégique

  1. Délai d’identification des formes: la confirmation de la forme de la rupture en trois lignes nécessite la réalisation de quatre lignes K, ce qui peut entraîner un retard de temps d’entrée
  2. Risque de fausse rupture: Faux signaux de rupture peuvent apparaître dans un marché en crise
  3. Défaillance de l’ADX: comme indicateur de confirmation de tendance, l’ADX a une certaine défaillance en soi
  4. Prise en compte de l’amplitude d’arrêt: les paramètres d’arrêt basés sur l’ATR peuvent être trop grands ou trop petits en cas de fortes fluctuations
  5. Environnement de marché dépendant: les stratégies sont plus efficaces dans les marchés en tendance, et moins efficaces dans les marchés en turbulence

Orientation de l’optimisation de la stratégie

  1. Amélioration du filtrage du signal: un mécanisme de confirmation de la quantité de livraison peut être ajouté pour améliorer la fiabilité du signal
  2. Optimisation des paramètres dynamiques: mise en place d’un mécanisme d’adaptation pour ajuster dynamiquement les seuils ADX et les cycles ATR
  3. Optimisation du moment d’entrée: peut être combiné avec la structure des prix (support / résistance) pour optimiser le point d’entrée
  4. Amélioration de la gestion des positions: ajout d’un mécanisme dynamique de gestion des positions basé sur la volatilité
  5. Identification des environnements de marché: ajout de logiques de classification des environnements de marché, en utilisant différents paramètres dans différentes conditions de marché

Résumer

Cette stratégie, en combinant la forme classique de la rupture en trois lignes avec des indicateurs techniques modernes, crée un système de négociation à la fois théorique et pratique. Son avantage central réside dans le mécanisme de confirmation de signaux multiples et la gestion intelligente des risques, mais son utilisation nécessite une attention particulière à l’adaptation à l’environnement du marché et à l’optimisation des paramètres.

Code source de la stratégie
/*backtest
start: 2024-08-05 00:00:00
end: 2024-12-24 00:00:00
period: 5h
basePeriod: 5h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

// Copyright ...
// Based on the TMA Overlay by Arty, converted to a simple strategy example.
// Pine Script v5

//@version=5
strategy(title='3 Line Strike [TTF] - Strategy with ATR and ADX Filter',
     shorttitle='3LS Strategy [TTF]',
     overlay=true,
     initial_capital=100000,
     default_qty_type=strategy.percent_of_equity,
     default_qty_value=100,
     pyramiding=0)

// -----------------------------------------------------------------------------
//                               INPUTS
// -----------------------------------------------------------------------------

// ATR and ADX Inputs
atrLength = input.int(title='ATR Length', defval=14, group='ATR & ADX')
adxLength = input.int(title='ADX Length', defval=14, group='ATR & ADX')
adxThreshold = input.float(title='ADX Threshold', defval=25, group='ATR & ADX')

// ### 3 Line Strike
showBear3LS = input.bool(title='Show Bearish 3 Line Strike', defval=true, group='3 Line Strike',
     tooltip="Bearish 3 Line Strike (3LS-Bear) = 3 zelené sviečky, potom veľká červená sviečka (engulfing).")
showBull3LS = input.bool(title='Show Bullish 3 Line Strike', defval=true, group='3 Line Strike',
     tooltip="Bullish 3 Line Strike (3LS-Bull) = 3 červené sviečky, potom veľká zelená sviečka (engulfing).")

// -----------------------------------------------------------------------------
//                          CALCULATIONS
// -----------------------------------------------------------------------------

// Calculate ATR
atr = ta.atr(atrLength)

// Calculate ADX components manually
tr = ta.tr(true)
plusDM = ta.change(high) > ta.change(low) and ta.change(high) > 0 ? ta.change(high) : 0
minusDM = ta.change(low) > ta.change(high) and ta.change(low) > 0 ? ta.change(low) : 0
smoothedPlusDM = ta.rma(plusDM, adxLength)
smoothedMinusDM = ta.rma(minusDM, adxLength)
smoothedTR = ta.rma(tr, adxLength)

plusDI = (smoothedPlusDM / smoothedTR) * 100
minusDI = (smoothedMinusDM / smoothedTR) * 100

dx = math.abs(plusDI - minusDI) / (plusDI + minusDI) * 100
adx = ta.rma(dx, adxLength)

// Helper Functions
getCandleColorIndex(barIndex) =>
    int ret = na
    if (close[barIndex] > open[barIndex])
        ret := 1
    else if (close[barIndex] < open[barIndex])
        ret := -1
    else
        ret := 0
    ret

isEngulfing(checkBearish) =>
    sizePrevCandle = close[1] - open[1]
    sizeCurrentCandle = close - open
    isCurrentLargerThanPrevious = math.abs(sizeCurrentCandle) > math.abs(sizePrevCandle)

    if checkBearish
        isGreenToRed = (getCandleColorIndex(0) < 0) and (getCandleColorIndex(1) > 0)
        isCurrentLargerThanPrevious and isGreenToRed
    else
        isRedToGreen = (getCandleColorIndex(0) > 0) and (getCandleColorIndex(1) < 0)
        isCurrentLargerThanPrevious and isRedToGreen

isBearishEngulfing() => isEngulfing(true)
isBullishEngulfing() => isEngulfing(false)

is3LSBear() =>
    is3LineSetup = (getCandleColorIndex(1) > 0) and (getCandleColorIndex(2) > 0) and (getCandleColorIndex(3) > 0)
    is3LineSetup and isBearishEngulfing()

is3LSBull() =>
    is3LineSetup = (getCandleColorIndex(1) < 0) and (getCandleColorIndex(2) < 0) and (getCandleColorIndex(3) < 0)
    is3LineSetup and isBullishEngulfing()

// Signals
is3LSBearSig = is3LSBear() and adx > adxThreshold
is3LSBullSig = is3LSBull() and adx > adxThreshold

// Take Profit and Stop Loss
longTP = close + 2 * atr
longSL = close - 1 * atr
shortTP = close - 2 * atr
shortSL = close + 1 * atr

// -----------------------------------------------------------------------------
//                          STRATEGY ENTRY PRÍKAZY
// -----------------------------------------------------------------------------
if (showBull3LS and is3LSBullSig)
    strategy.entry("3LS_Bull", strategy.long, comment="3LS Bullish")
    strategy.exit("Exit Bull", from_entry="3LS_Bull", limit=longTP, stop=longSL)

if (showBear3LS and is3LSBearSig)
    strategy.entry("3LS_Bear", strategy.short, comment="3LS Bearish")
    strategy.exit("Exit Bear", from_entry="3LS_Bear", limit=shortTP, stop=shortSL)