Suivi des tendances croisées dynamiques à moyennes mobiles lissées multiples et stratégie de trading quantitative à confirmations multiples

MA EMA RSI ATR SMA RMA WMA SL TP
Date de création: 2025-01-17 15:53:16 Dernière modification: 2025-01-17 15:53:16
Copier: 2 Nombre de clics: 388
1
Suivre
1617
Abonnés

Suivi des tendances croisées dynamiques à moyennes mobiles lissées multiples et stratégie de trading quantitative à confirmations multiples

Aperçu

La stratégie est un système de suivi de tendance basé sur plusieurs moyennes mobiles lissées, qui utilise un triple lissage pour filtrer le bruit du marché tout en combinant l’indicateur de momentum RSI, l’indicateur de volatilité ATR et un filtre de tendance EMA de 200 périodes pour confirmer les signaux de trading. La stratégie utilise une période d’une heure, qui est un laps de temps qui équilibre efficacement la fréquence des transactions et la fiabilité des tendances tout en correspondant au comportement des transactions institutionnelles.

Principe de stratégie

Le cœur de la stratégie consiste à construire la ligne de tendance principale en lissant le prix trois fois et en utilisant la ligne de signal de période plus courte pour la traverser afin de générer des signaux de trading. Les signaux de trading ne seront exécutés que si les conditions suivantes sont remplies en même temps :

  1. La relation entre la position du prix et le 200EMA confirme la direction de la tendance principale
  2. La position de l’indicateur RSI confirme la dynamique
  3. L’indicateur ATR confirme une volatilité suffisante
  4. Le croisement de la ligne de signal et de la moyenne mobile triplement lissée confirme le point d’entrée spécifique Le stop loss adopte un stop loss dynamique basé sur l’ATR, et le take profit est fixé à 2 fois l’ATR pour assurer un bon rapport risque-rendement.

Avantages stratégiques

  1. Le triple lissage réduit considérablement les faux signaux et améliore la fiabilité du jugement de tendance
  2. Plusieurs mécanismes de confirmation garantissent que la direction de la transaction est cohérente avec la tendance principale
  3. Paramètres dynamiques de stop loss et de take profit pour s’adapter aux différentes fluctuations du marché
  4. La stratégie fonctionne sur un cycle d’une heure, ce qui permet d’éviter efficacement les chocs lors de cycles de temps inférieurs.
  5. La fonction sans redessin garantit la fiabilité des résultats des backtests

Risque stratégique

  1. Dans un marché latéral, de petites pertes continues peuvent survenir
  2. Plusieurs mécanismes de confirmation peuvent conduire à des opportunités de trading manquées
  3. Le décalage du signal peut affecter l’optimisation des points d’entrée
  4. Une volatilité suffisante est nécessaire pour générer des signaux valides
  5. Le stop loss dynamique peut ne pas être suffisamment opportun dans des conditions de marché extrêmes

Orientation de l’optimisation de la stratégie

  1. Vous pouvez ajouter des indicateurs de volume comme confirmation auxiliaire
  2. Envisager d’introduire un mécanisme d’optimisation adaptative des paramètres
  3. Peut augmenter le jugement quantitatif de la force de la tendance
  4. Optimiser les multiples paramètres de stop loss et take profit
  5. Envisagez d’ajouter des oscillateurs pour optimiser les performances latérales du marché

Résumer

Il s’agit d’une stratégie de suivi de tendance avec une structure complète et une logique rigoureuse. Grâce à de multiples processus de lissage et à de multiples mécanismes de confirmation, la fiabilité des signaux de trading est efficacement améliorée. Le mécanisme de gestion dynamique des risques le rend hautement adaptable. Bien qu’il y ait un certain décalage, il y a encore beaucoup de marge d’amélioration dans la stratégie grâce à l’optimisation des paramètres et à l’ajout d’indicateurs auxiliaires.

Code source de la stratégie
/*backtest
start: 2024-12-17 00:00:00
end: 2025-01-16 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=6
strategy("Optimized Triple Smoothed MA Crossover Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=200)

// === Input Settings ===
slength = input.int(7, "Main Smoothing Length", group="Moving Average Settings")
siglen = input.int(12, "Signal Length", group="Moving Average Settings")
src = input.source(close, "Data Source", group="Moving Average Settings")
mat = input.string("EMA", "Triple Smoothed MA Type", ["EMA", "SMA", "RMA", "WMA"], group="Moving Average Settings")
mat1 = input.string("EMA", "Signal Type", ["EMA", "SMA", "RMA", "WMA"], group="Moving Average Settings")

// === Trend Confirmation (Higher Timeframe Filter) ===
useTrendFilter = input.bool(true, "Enable Trend Filter (200 EMA)", group="Trend Confirmation")
trendMA = ta.ema(close, 200)

// === Momentum Filter (RSI Confirmation) ===
useRSIFilter = input.bool(true, "Enable RSI Confirmation", group="Momentum Confirmation")
rsi = ta.rsi(close, 14)
rsiThreshold = input.int(50, "RSI Threshold", group="Momentum Confirmation")

// === Volatility Filter (ATR) ===
useATRFilter = input.bool(true, "Enable ATR Filter", group="Volatility Filtering")
atr = ta.atr(14)
atrMa = ta.sma(atr, 14)

// === Risk Management (ATR-Based Stop Loss) ===
useAdaptiveSL = input.bool(true, "Use ATR-Based Stop Loss", group="Risk Management")
atrMultiplier = input.float(1.5, "ATR Multiplier for SL", minval=0.5, maxval=5, group="Risk Management")
takeProfitMultiplier = input.float(2, "Take Profit Multiplier", group="Risk Management")

// === Moving Average Function ===
ma(source, length, MAtype) =>
    switch MAtype
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "RMA" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)

// === Triple Smoothed Calculation ===
tripleSmoothedMA = ma(ma(ma(src, slength, mat), slength, mat), slength, mat)
signalLine = ma(tripleSmoothedMA, siglen, mat1)

// === Crossovers (Entry Signals) ===
bullishCrossover = ta.crossunder(signalLine, tripleSmoothedMA)
bearishCrossover = ta.crossover(signalLine, tripleSmoothedMA)

// === Additional Confirmation Conditions ===
trendLongCondition = not useTrendFilter or (close > trendMA)  // Only long if price is above 200 EMA
trendShortCondition = not useTrendFilter or (close < trendMA) // Only short if price is below 200 EMA

rsiLongCondition = not useRSIFilter or (rsi > rsiThreshold)  // RSI above 50 for longs
rsiShortCondition = not useRSIFilter or (rsi < rsiThreshold) // RSI below 50 for shorts

atrCondition = not useATRFilter or (atr > atrMa)  // ATR must be above its MA for volatility confirmation

// === Final Trade Entry Conditions ===
longCondition = bullishCrossover and trendLongCondition and rsiLongCondition and atrCondition
shortCondition = bearishCrossover and trendShortCondition and rsiShortCondition and atrCondition

// === ATR-Based Stop Loss & Take Profit ===
longSL = close - (atr * atrMultiplier)
longTP = close + (atr * takeProfitMultiplier)

shortSL = close + (atr * atrMultiplier)
shortTP = close - (atr * takeProfitMultiplier)

// === Strategy Execution ===
if longCondition
    strategy.entry("Long", strategy.long)
    strategy.exit("Long Exit", from_entry="Long", stop=longSL, limit=longTP)

if shortCondition
    strategy.entry("Short", strategy.short)
    strategy.exit("Short Exit", from_entry="Short", stop=shortSL, limit=shortTP)

// === Plots ===
plot(tripleSmoothedMA, title="Triple Smoothed MA", color=color.blue)
plot(signalLine, title="Signal Line", color=color.red)
plot(trendMA, title="200 EMA", color=color.gray)

// === Alerts ===
alertcondition(longCondition, title="Bullish Signal", message="Triple Smoothed MA Bullish Crossover Confirmed")
alertcondition(shortCondition, title="Bearish Signal", message="Triple Smoothed MA Bearish Crossover Confirmed")