Stratégie de suivi de tendance Momentum Breakout à trois lignes combinée avec un filtre ADX

ADX ATR TMA TP SL 3LS
Date de création: 2025-02-20 17:46:30 Dernière modification: 2025-02-20 17:46:30
Copier: 0 Nombre de clics: 459
2
Suivre
319
Abonnés

Stratégie de suivi de tendance Momentum Breakout à trois lignes combinée avec un filtre ADX Stratégie de suivi de tendance Momentum Breakout à trois lignes combinée avec un filtre ADX

Aperçu

La stratégie est un système de suivi de la tendance basé sur trois lignes de rupture et un filtrage de la tendance ADX. La stratégie identifie la force de la tendance en identifiant trois ruptures consécutives de la courbe post-simétrique, en combinaison avec l’indicateur ADX, et utilise l’ATR pour définir dynamiquement la position de stop-loss. Cette méthode garantit à la fois la fiabilité du signal d’entrée et permet de contrôler efficacement le risque.

Principe de stratégie

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

  1. Identification des formes de rupture à trois lignes: les formes à plusieurs têtes nécessitent une rupture de ligne plus grande après trois lignes consécutives; les formes à tête vide nécessitent une rupture de ligne plus grande après trois lignes consécutives.
  2. Confirmation de la force de la tendance ADX: l’indicateur ADX est utilisé pour déterminer la force de la tendance actuelle. Un signal de transaction est généré uniquement lorsque la valeur ADX dépasse la limite définie (la valeur par défaut de 25).
  3. Stop loss ATR dynamique: utilisez les valeurs ATR pour calculer dynamiquement la position de stop et de stop loss, avec un stop à 2 fois l’ATR et un stop loss à 1 fois l’ATR.
  4. Logique d’exécution des transactions: lorsque les conditions de reconnaissance de la forme et de l’intensité de la tendance sont remplies, le système exécute automatiquement l’opération d’ouverture de position et définit simultanément les ordres stop-loss correspondants.

Avantages stratégiques

  1. Haute fiabilité des signaux: la double confirmation combinée de la forme des prix et de l’indicateur de tendance améliore considérablement la fiabilité des signaux de négociation.
  2. Le contrôle des risques est raisonnable: avec le paramètre ATR dynamique de stop loss, il est possible d’ajuster les paramètres de contrôle des risques en fonction de la volatilité du marché.
  3. Systématisation élevée: la logique de la stratégie est claire, les paramètres sont réglables, ce qui facilite la transaction systématique.
  4. Adaptabilité: peut être appliqué à différents marchés et périodes de temps, avec une bonne universalité.

Risque stratégique

  1. Risque de fausse rupture: Des signaux de fausse rupture peuvent survenir dans des marchés en crise, entraînant des pertes de transactions.
  2. Risque de glissement: des glissements importants peuvent survenir dans des marchés moins liquides en raison de la stratégie d’entrée à prix unique.
  3. Sensitivité des paramètres: les effets de la stratégie sont sensibles à des paramètres tels que les seuils ADX et les cycles ATR, et doivent être optimisés pour différents marchés.
  4. La dépendance à la tendance: les stratégies peuvent être moins performantes dans les marchés en turbulence et mieux adaptées aux conditions de marché où la tendance est évidente.

Orientation de l’optimisation de la stratégie

  1. Renforcement de la reconnaissance des formes: il est possible d’ajouter plus de conditions de validation des formes de prix, telles que le rapport entre les entités et les ombres des lignes de fil.
  2. Amélioration de la confirmation de la tendance: d’autres indicateurs de tendance tels que le MACD ou le croisement des moyennes mobiles peuvent être introduits comme confirmation auxiliaire.
  3. Optimisation des stop-loss: vous pouvez ajuster le multiplicateur ATR en fonction de la dynamique des caractéristiques du marché, ou utiliser le suivi des stop-loss.
  4. Optimisation des heures de négociation: vous pouvez ajouter des filtres pour les heures de négociation afin d’éviter de négocier pendant les périodes de volatilité.

Résumer

La stratégie de suivi de la tendance de la dynamique de rupture de trois lignes est un système de négociation complet qui combine les formes de prix classiques et les indicateurs techniques. Grâce au filtrage des tendances ADX et au contrôle dynamique de l’ATR, la stratégie maîtrise mieux les risques tout en garantissant des opportunités de négociation. Bien qu’elle présente certaines limitations, la stratégie a une bonne valeur d’application sur le terrain grâce à une optimisation des paramètres et à des améliorations de la stratégie raisonnables.

Code source de la stratégie
/*backtest
start: 2024-08-11 00:00:00
end: 2025-02-19 00:00:00
period: 1h
basePeriod: 1h
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)