Système de trading de suivi de tendance sur plusieurs périodes (MTF-ATR-MACD)

EMA RSI ATR MACD MTF SL TP
Date de création: 2024-11-25 14:42:33 Dernière modification: 2024-11-25 14:42:33
Copier: 4 Nombre de clics: 540
1
Suivre
1617
Abonnés

Système de trading de suivi de tendance sur plusieurs périodes (MTF-ATR-MACD)

Aperçu

La stratégie est un système de trading intégré de suivi de la tendance, combinant l’analyse de plusieurs périodes, le système de la moyenne, les indicateurs de dynamique et les indicateurs de volatilité. Le système identifie la direction de la tendance par le croisement des moyennes mobiles des indices à court et à long terme (EMA), utilise l’indicateur relativement faible (RSI) pour les jugements de survente et de survente, la confirmation de la dynamique en combinaison avec le MACD et utilise le cadre de temps plus élevé (EMA) comme filtre de tendance.

Principe de stratégie

La stratégie utilise des mécanismes de vérification à plusieurs niveaux pour prendre des décisions commerciales:

  1. La couche d’identification des tendances: utilise le croisement des périodes 9 et 21 de l’EMA pour capturer les changements de tendance
  2. Couche de confirmation de la dynamique: la dynamique de la tendance est vérifiée par le croisement et la direction de l’indicateur MACD ((12, 26, 9)
  3. Filtre sur-achat et sur-vente: utilisez le RSI ((14) pour filtrer au niveau 7030
  4. Confirmation du cadre de temps élevé: utilisation sélective de l’EMA au niveau de la ligne solaire comme filtre de tendance
  5. Gestion des risques: utilisez 1,5 fois l’ATR pour suivre les arrêts de perte et 2 fois l’ATR pour définir des objectifs de profit

Le système ouvre une position après que plusieurs conditions ont été remplies: EMA croisée, RSI en dessous de la limite, MACD dans la bonne direction et confirmation d’une tendance à haute période. La sortie est effectuée en utilisant une combinaison de tracking stop loss et de fixation des objectifs de profit.

Avantages stratégiques

  1. Les mécanismes de vérification multiple réduisent considérablement les faux signaux
  2. Filtrage des tendances à des périodes élevées
  3. Dynamique d’arrêt basée sur la volatilité
  4. Un système complet de gestion des risques
  5. Les paramètres peuvent être adaptés en fonction des caractéristiques du marché
  6. Prise en charge des transactions bidirectionnelles et adaptée aux différents environnements de marché
  7. Le portefeuille d’indicateurs suit à la fois la tendance et la dynamique

Risque stratégique

  1. Les conditions multiples peuvent entraîner la perte de certaines opportunités commerciales
  2. Peut être amené à négocier fréquemment sur des marchés volatils
  3. L’optimisation des paramètres peut conduire à un surapprentissage
  4. La confirmation à des délais élevés peut entraîner des retards d’entrée Solution:
  • Paramètres d’ajustement dynamique en fonction des caractéristiques du marché
  • Une plus grande flexibilité dans le choix de la direction des transactions
  • Introduction d’un mécanisme de filtrage du taux de fluctuation
  • Mécanisme d’adaptation des paramètres d’optimisation

Orientation de l’optimisation de la stratégie

  1. Introduction d’un mécanisme de filtrage de la volatilité pour ajuster les positions pendant les périodes de forte volatilité
  2. Mécanisme d’adaptation des paramètres de développement, adapté à la dynamique des conditions du marché
  3. Augmentation de l’efficacité des signaux de confirmation des indicateurs de trafic
  4. Optimisation de la logique de jugement des tendances à haute période
  5. Améliorer le plan de coupe des pertes et envisager d’augmenter le délai de coupe des pertes
  6. Développer un module d’évaluation de la performance stratégique

Résumer

La stratégie est un système de trading complet de suivi de la tendance, capable de générer des rendements stables dans un marché tendance grâce à une combinaison de multiples indicateurs techniques et à un système de gestion des risques rigoureux. Le système est extensible et peut s’adapter à différents environnements de marché grâce à une optimisation.

Code source de la stratégie
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-24 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5 
strategy("Trend Following with ATR, MTF Confirmation, and MACD", overlay=true)

// Parameters
emaShortPeriod = input.int(9, title="Short EMA Period", minval=1)
emaLongPeriod = input.int(21, title="Long EMA Period", minval=1)
rsiPeriod = input.int(14, title="RSI Period", minval=1)
rsiOverbought = input.int(70, title="RSI Overbought", minval=50)
rsiOversold = input.int(30, title="RSI Oversold", minval=1)
atrPeriod = input.int(14, title="ATR Period", minval=1)
atrMultiplier = input.float(1.5, title="ATR Multiplier", minval=0.1)
takeProfitATRMultiplier = input.float(2.0, title="Take Profit ATR Multiplier", minval=0.1)

// Multi-timeframe settings
htfEMAEnabled = input.bool(true, title="Use Higher Timeframe EMA Confirmation?", inline="htf")
htfEMATimeframe = input.timeframe("D", title="Higher Timeframe", inline="htf")

// MACD Parameters
macdShortPeriod = input.int(12, title="MACD Short Period", minval=1)
macdLongPeriod = input.int(26, title="MACD Long Period", minval=1)
macdSignalPeriod = input.int(9, title="MACD Signal Period", minval=1)

// Select trade direction
tradeDirection = input.string("Both", title="Trade Direction", options=["Both", "Long", "Short"])

// Calculating indicators
emaShort = ta.ema(close, emaShortPeriod)
emaLong = ta.ema(close, emaLongPeriod)
rsiValue = ta.rsi(close, rsiPeriod)
atrValue = ta.atr(atrPeriod)

// Calculate MACD
[macdLine, macdSignalLine, _] = ta.macd(close, macdShortPeriod, macdLongPeriod, macdSignalPeriod)

// Higher timeframe EMA confirmation
htfEMALong = request.security(syminfo.tickerid, htfEMATimeframe, ta.ema(close, emaLongPeriod))

// Trading conditions
longCondition = ta.crossover(emaShort, emaLong) and rsiValue < rsiOverbought and (not htfEMAEnabled or close > htfEMALong) and macdLine > macdSignalLine
shortCondition = ta.crossunder(emaShort, emaLong) and rsiValue > rsiOversold and (not htfEMAEnabled or close < htfEMALong) and macdLine < macdSignalLine

// Plotting EMAs
plot(emaShort, title="EMA Short", color=color.green)
plot(emaLong, title="EMA Long", color=color.red)

// Plotting MACD
hline(0, "Zero Line", color=color.gray)
plot(macdLine - macdSignalLine, title="MACD Histogram", color=color.green, style=plot.style_histogram)
plot(macdLine, title="MACD Line", color=color.blue)
plot(macdSignalLine, title="MACD Signal Line", color=color.red)

// Trailing Stop-Loss and Take-Profit levels
var float trailStopLoss = na
var float trailTakeProfit = na

if (strategy.position_size > 0) // Long Position
    trailStopLoss := na(trailStopLoss) ? close - atrValue * atrMultiplier : math.max(trailStopLoss, close - atrValue * atrMultiplier)
    trailTakeProfit := close + atrValue * takeProfitATRMultiplier
    strategy.exit("Exit Long", "Long", stop=trailStopLoss, limit=trailTakeProfit, when=shortCondition)

if (strategy.position_size < 0) // Short Position
    trailStopLoss := na(trailStopLoss) ? close + atrValue * atrMultiplier : math.min(trailStopLoss, close + atrValue * atrMultiplier)
    trailTakeProfit := close - atrValue * takeProfitATRMultiplier
    strategy.exit("Exit Short", "Short", stop=trailStopLoss, limit=trailTakeProfit, when=longCondition)

// Strategy Entry
if (longCondition and (tradeDirection == "Both" or tradeDirection == "Long"))
    strategy.entry("Long", strategy.long)
    
if (shortCondition and (tradeDirection == "Both" or tradeDirection == "Short"))
    strategy.entry("Short", strategy.short)

// Plotting Buy/Sell signals
plotshape(series=longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")

// Plotting Trailing Stop-Loss and Take-Profit levels
plot(strategy.position_size > 0 ? trailStopLoss : na, title="Long Trailing Stop Loss", color=color.red, linewidth=2, style=plot.style_line)
plot(strategy.position_size < 0 ? trailStopLoss : na, title="Short Trailing Stop Loss", color=color.green, linewidth=2, style=plot.style_line)
plot(strategy.position_size > 0 ? trailTakeProfit : na, title="Long Take Profit", color=color.blue, linewidth=2, style=plot.style_line)
plot(strategy.position_size < 0 ? trailTakeProfit : na, title="Short Take Profit", color=color.orange, linewidth=2, style=plot.style_line)