Stratégie de suivi de tendance de cassure de pivot dynamique

EMA ATR VOLUME BREAKOUT Pivot TRAILING
Date de création: 2025-05-22 10:09:54 Dernière modification: 2025-05-22 10:09:54
Copier: 2 Nombre de clics: 349
2
Suivre
319
Abonnés

Stratégie de suivi de tendance de cassure de pivot dynamique Stratégie de suivi de tendance de cassure de pivot dynamique

Aperçu

La stratégie de suivi des tendances de rupture de l’axe dynamique est une stratégie de négociation quantitative complète qui intègre les idées de trois grands traders légendaires: la technique de rupture de l’axe de Jesse Livermore, la méthode de confirmation de la tendance d’Ed Seykota et les principes de gestion du risque de Paul Tudor Jones. La stratégie consiste à identifier les points critiques de rupture de prix, combinés à des mécanismes de confirmation multiples, pour effectuer une entrée précise dans des opportunités de négociation à forte probabilité.

Principe de stratégie

Le principe de fonctionnement de la stratégie est basé sur un cadre d’analyse technique à plusieurs niveaux. Premièrement, la stratégie utilise les hauts et les bas de l’axe pour identifier les points de résistance de soutien critiques, qui représentent souvent des prix psychologiques importants du marché. Lorsque le prix franchit ces points clés, il est souvent le signe du début d’une nouvelle tendance ou de la poursuite d’une tendance existante. Pour les signaux à plusieurs têtes, la stratégie exige que le prix de clôture franchisse le sommet de l’axe le plus proche et que le prix soit au-dessus de la période de 50 EMA, tandis que la période de 20 EMA doit être au-dessus de la période de 200 EMA pour confirmer la tendance à la hausse.

Avantages stratégiques

La stratégie présente plusieurs avantages significatifs: premièrement, le mécanisme de confirmation multiple améliore considérablement l’exactitude des signaux de négociation, évitant ainsi les faux signaux que pourrait générer un seul indicateur. Deuxièmement, le système de gestion des risques ATR dynamique est capable d’ajuster automatiquement les niveaux de stop loss et de tracking stop loss en fonction de la volatilité du marché. Ce mécanisme d’adaptation assure l’efficacité du contrôle des risques dans différents environnements de marché.

Risque stratégique

La stratégie peut être soumise à de fréquentes fausses ruptures, entraînant de petites pertes consécutives. Les mécanismes de confirmation multiples peuvent aider à réduire ce phénomène, mais ne peuvent pas être complètement évités. Deuxièmement, la stratégie dépend de la présence d’un marché tendanciel, qui peut se démarquer pendant la phase de compostage horizontal à long terme. L’identification des axes centraux présente un certain retard et peut manquer les premières opportunités de tendance.

Orientation de l’optimisation de la stratégie

Il existe plusieurs directions d’optimisation de la stratégie pour améliorer ses performances. Tout d’abord, un système de paramètres d’adaptation peut être introduit pour ajuster dynamiquement les cycles EMA et les multiples ATR en fonction de la volatilité du marché et de l’intensité de la tendance, ce qui permettra à la stratégie de mieux s’adapter aux différents environnements du marché. Deuxièmement, un module d’identification de l’état du marché peut être ajouté pour différencier les marchés tendance et les marchés chocs et appliquer différentes logiques de négociation dans différents états.

Résumer

La stratégie de suivi des tendances de rupture de l’axe dynamique est une stratégie de négociation quantitative complète, solide en théorie. Elle combine avec succès les concepts classiques de l’analyse technique et les techniques modernes de gestion des risques, formant un système de négociation relativement complet.

Code source de la stratégie
/*backtest
start: 2024-05-22 00:00:00
end: 2025-05-20 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"DOGE_USDT"}]
*/

//@version=6
strategy("Livermore-Seykota Breakout Strategy", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// ----- Inputs -----
emaMainLen = input.int(50, title="Main EMA (e.g., 50)")
emaFastLen = input.int(20, title="Fast EMA (Seykota)")
emaSlowLen = input.int(200, title="Slow EMA (Seykota)")
pivotLen = input.int(3, title="Left/Right Bars for Pivot (Livermore)")
atrLen = input.int(14, title="ATR Length")
stopATRmult = input.float(3.0, title="ATR Multiplier for Stop-Loss", step=0.1)
trailATRmult = input.float(2.0, title="ATR Multiplier for Trailing Stop", step=0.1)
volSmaLen = input.int(20, title="SMA of Volume")

// ----- Indicators -----
emaMain = ta.ema(close, emaMainLen)
emaFast = ta.ema(close, emaFastLen)
emaSlow = ta.ema(close, emaSlowLen)
volSMA = ta.sma(volume, volSmaLen)
atr = ta.atr(atrLen)

// ----- Livermore Pivot High/Low -----
ph = ta.pivothigh(high, pivotLen, pivotLen)
pl = ta.pivotlow(low, pivotLen, pivotLen)
var float lastPivotHigh = na
var float lastPivotLow = na
if (not na(ph))
    lastPivotHigh := ph
if (not na(pl))
    lastPivotLow := pl

// ----- Entry Conditions -----
// Livermore Breakout: price breaks above last pivot high and is above main EMA
buyCondition = not na(lastPivotHigh) and close > lastPivotHigh and close > emaMain
// Seykota Trend Filter: EMA20 > EMA200 (uptrend)
buyTrend = emaFast > emaSlow
// Volume Confirmation: volume > SMA(volume)
buyVolume = volume > volSMA

// Livermore Breakdown: price breaks below last pivot low and is below main EMA
sellCondition = not na(lastPivotLow) and close < lastPivotLow and close < emaMain
// Seykota Trend Filter: EMA20 < EMA200 (downtrend)
sellTrend = emaFast < emaSlow
// Volume Confirmation for Short: volume > SMA(volume)
sellVolume = volume > volSMA

// Entry logic for Long/Short positions
if (buyCondition and buyTrend and buyVolume)
    strategy.entry("Long", strategy.long)
if (sellCondition and sellTrend and sellVolume)
    strategy.entry("Short", strategy.short)

// ----- Stop-loss and Trailing Stop (Paul Tudor Jones style) -----
// Initial Stop-Loss based on ATR
stopLevelLong = strategy.position_avg_price - atr * stopATRmult
stopLevelShort = strategy.position_avg_price + atr * stopATRmult
// Trailing Stop Distance based on ATR
trailPoints = atr * trailATRmult

// Apply stop and trailing exit rules
if (strategy.position_size > 0)
    strategy.exit("Exit Long", from_entry="Long", stop=stopLevelLong, trail_points=0, trail_offset=trailPoints)
if (strategy.position_size < 0)
    strategy.exit("Exit Short", from_entry="Short", stop=stopLevelShort, trail_points=0, trail_offset=trailPoints)