Stratégie de trading à terme Nasdaq adaptative et dynamique de suivi des tendances et de volatilité des moyennes mobiles

EMA VWAP ATR TP SL BE MNQ
Date de création: 2025-02-24 10:25:47 Dernière modification: 2025-02-27 16:44:56
Copier: 1 Nombre de clics: 499
2
Suivre
319
Abonnés

Stratégie de trading à terme Nasdaq adaptative et dynamique de suivi des tendances et de volatilité des moyennes mobiles Stratégie de trading à terme Nasdaq adaptative et dynamique de suivi des tendances et de volatilité des moyennes mobiles

Aperçu

Il s’agit d’une stratégie de négociation intraday conçue spécifiquement pour les micro-futures du Nasdaq 100. Le cœur de la stratégie utilise un système bi-linéaire combinant une confirmation de tendance du prix moyen pondéré par la transaction (VWAP) et un ajustement dynamique de la position d’arrêt par l’amplitude de fluctuation réelle (ATR). La stratégie capture les tendances du marché grâce à un contrôle strict des risques et à une gestion dynamique des positions, tout en maintenant la sécurité des fonds.

Principe de stratégie

La stratégie repose sur les éléments fondamentaux suivants :

  1. Le système de signaux utilise la croisée d’une moyenne mobile indicielle de 9 cycles et d’une moyenne mobile indicielle de 21 cycles (EMA) pour identifier la direction de la tendance. Un signal de plus est produit lorsque la moyenne à court terme traverse la moyenne à long terme vers le haut et un signal de moins lorsque la moyenne à court terme traverse la moyenne à long terme vers le haut.
  2. En utilisant le VWAP comme indicateur de confirmation de tendance, le prix doit être au-dessus du VWAP pour ouvrir une position plus élevée et au-dessous du VWAP pour ouvrir une position vide.
  3. Le système de gestion des risques utilise un stop-loss dynamique basé sur l’ATR, le stop-loss multiposition étant réglé à 2 fois l’ATR et le stop-loss vide à 1,5 fois l’ATR.
  4. L’objectif de profit est une conception asymétrique, avec un ratio de gain/risque de 3:1 pour les positions multiples et de 2:1 pour les positions vides.
  5. Un stop-loss mobile et un stop-loss de garantie ont été mis en place, le point de stop-loss est déplacé vers le niveau de coût lorsque le prix atteint 50% du profit cible.

Avantages stratégiques

  1. Adaptabilité dynamique - avec l’ATR pour ajuster les paramètres de stop loss et de stop loss mobile, la stratégie est capable de s’adapter automatiquement à différents environnements de fluctuation du marché
  2. Le contrôle des risques est parfait - le risque est limité à 1500 \( par transaction et la limite de perte maximale hebdomadaire est de 7500 \).
  3. La conception asymétrique des gains - compte tenu des caractéristiques du marché, la stratégie multi-espaces utilise différents rapports de gains-risques et tailles de positions, ce qui est plus conforme à la réalité du marché.
  4. Mécanisme de confirmation multiple - en combinaison avec la confirmation croisée EMA et VWAP, pour réduire efficacement les signaux de fausse percée.
  5. Système complet de coupe de pertes - incluant une triple protection contre les pertes fixes, mobiles et garanties.

Risque stratégique

  1. Risque de choc du marché - Dans un marché de choc horizontal, les signaux de croisement de ligne moyenne peuvent produire plus de faux signaux.
  2. Risque de glissement - dans des conditions de marché rapides, le prix de transaction réel peut être très éloigné du prix du signal.
  3. Risque systémique - les arrêts de perte peuvent être annulés en cas d’événement majeur sur le marché.
  4. Risque de surtransaction - des signaux fréquents peuvent entraîner une augmentation des coûts de transaction.
  5. Risque de gestion des fonds - un plan complet de gestion des positions peut ne pas être exécuté efficacement si le capital initial est faible.

Orientation de l’optimisation de la stratégie

  1. Introduction d’un filtre de transaction - un mécanisme de confirmation de transaction peut être ajouté pour exécuter des transactions uniquement lorsque les conditions de transaction sont remplies.
  2. Optimiser le filtrage des heures - envisagez d’ajouter des fenêtres de temps de négociation spécifiques pour éviter les heures d’ouverture et de fermeture les plus volatiles.
  3. Paramètres d’ajustement dynamique - les périodes et les multiples ATR peuvent être ajustés automatiquement en fonction des différentes conditions du marché.
  4. L’augmentation des indicateurs de l’humeur du marché - l’introduction d’indicateurs de volatilité tels que VIX pour ajuster la fréquence des transactions et la taille des positions.
  5. Amélioration de l’arrêt mobile - Des algorithmes d’arrêt mobiles plus flexibles peuvent être conçus pour améliorer la capacité de saisir les tendances.

Résumer

La stratégie est caractérisée par sa capacité d’adaptation et de gestion des risques, qui lui permet d’ajuster les paramètres de manière dynamique via l’ATR, ce qui lui permet de maintenir une performance stable dans différents environnements de marché. La stratégie est particulièrement adaptée pour le day trading des micro-futures NASDAQ 100, mais nécessite que les traders appliquent strictement les règles de contrôle des risques et ajustent les paramètres en fonction des changements du marché.

Code source de la stratégie
/*backtest
start: 2024-02-25 00:00:00
end: 2025-02-22 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/

//@version=5
strategy("Nasdaq 100 Micro - Optimized Risk Management", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// === INPUTS ===
riskPerTrade = input(1500, title="Max Risk Per Trade ($)")
profitTarget = input(3000, title="Target Profit Per Trade ($)")
maxWeeklyLoss = input(7500, title="Max Weekly Loss ($)")
emaShort = input(9, title="Short EMA Period")
emaLong = input(21, title="Long EMA Period")
vwapEnabled = input(true, title="Use VWAP?")
contractSizeMax = input(50, title="Max Micro Contracts per Trade")
atrLength = input(14, title="ATR Length")

// === INDICATORS ===
emaFast = ta.ema(close, emaShort)
emaSlow = ta.ema(close, emaLong)
vwapLine = ta.vwap(close)
atrValue = ta.atr(atrLength)

// === CONDITIONS ===
// Long Entry: EMA Crossover + Above VWAP
longCondition = ta.crossover(emaFast, emaSlow) and (not vwapEnabled or close > vwapLine)

// Short Entry: EMA Crossunder + Below VWAP
shortCondition = ta.crossunder(emaFast, emaSlow) and (not vwapEnabled or close < vwapLine)

// Position Size Calculation (Adjusted for Shorts)
riskPerPoint = 5 // MNQ Micro Futures = $5 per point per contract
stopLossPointsLong = atrValue * 2   // More room for longs
stopLossPointsShort = atrValue * 1.5 // Tighter for shorts
contractsLong = math.min(contractSizeMax, math.floor(riskPerTrade / (stopLossPointsLong * riskPerPoint)))
contractsShort = math.min(math.floor(contractsLong * 0.75), contractSizeMax) // Shorts use 75% of long size

// Stop Loss & Take Profit
longSL = close - stopLossPointsLong
longTP = close + (stopLossPointsLong * 3) // 1:3 Risk-Reward for longs
shortSL = close + stopLossPointsShort
shortTP = close - (stopLossPointsShort * 2) // 1:2 Risk-Reward for shorts

// === BREAK-EVEN STOP MECHANISM ===
longBE = close + (stopLossPointsLong * 1.5) // If price moves 50% to TP, move SL to entry
shortBE = close - (stopLossPointsShort * 1) // More aggressive on shorts

// === TRAILING STOP LOGIC ===
trailStopLong = close - (atrValue * 1.5)
trailStopShort = close + (atrValue * 1)

// === EXECUTION ===
// Check for weekly loss limit
weeklyLoss = strategy.netprofit < -maxWeeklyLoss

if (longCondition and not weeklyLoss)
    strategy.entry("Long", strategy.long, contractsLong)
    strategy.exit("TakeProfitLong", from_entry="Long", limit=longTP, stop=longSL, trail_points=atrValue * 1.5, trail_offset=atrValue * 0.5)
    strategy.exit("BreakEvenLong", from_entry="Long", stop=longBE, when=close >= longBE)

if (shortCondition and not weeklyLoss)
    strategy.entry("Short", strategy.short, contractsShort)
    strategy.exit("TakeProfitShort", from_entry="Short", limit=shortTP, stop=shortSL, trail_points=atrValue * 1, trail_offset=atrValue * 0.5)
    strategy.exit("BreakEvenShort", from_entry="Short", stop=shortBE, when=close <= shortBE)

// === STOP TRADING IF WEEKLY LOSS EXCEEDED ===
if (weeklyLoss)
    strategy.close_all()