Tendance de la moyenne mobile sur plusieurs périodes en suivant la stratégie de trading

EMA ATR KC SMA LR
Date de création: 2024-11-12 16:35:41 Dernière modification: 2024-11-12 16:35:41
Copier: 4 Nombre de clics: 640
1
Suivre
1617
Abonnés

Tendance de la moyenne mobile sur plusieurs périodes en suivant la stratégie de trading

Aperçu

Il s’agit d’une stratégie de trading quantitative combinant le suivi de la tendance des moyennes à plusieurs périodes et l’analyse de la dynamique. La stratégie consiste principalement à négocier une combinaison d’indicateurs dynamiques de l’indice des moyennes mobiles à 20, 50, 100 et 200 jours (EMA) en combinaison avec la ligne du jour et la ligne de la périphérie. La stratégie utilise le mode d’arrêt ATR, qui entre en jeu lorsque les conditions de la dynamique de l’EMA sont réunies, et gère le risque en définissant des objectifs d’arrêt et de prise de pertes et des objectifs de gain de multiples ATR.

Principe de stratégie

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

  1. Système d’alignement EMA: il faut que l’EMA du 20e jour soit situé au-dessus de l’EMA du 50e jour, l’EMA du 50e jour soit situé au-dessus de l’EMA du 100e jour et l’EMA du 100e jour soit situé au-dessus de l’EMA du 200e jour pour former un alignement multicouche parfait.
  2. Système de confirmation de dynamique: Indicateur de dynamique personnalisé basé sur une régression linéaire calculée sur les périodes de jour et de jour respectives. L’indicateur de dynamique est mesuré par une régression linéaire de la déviation du prix par rapport à l’axe médian du canal de Keltner.
  3. Système d’accès par rétrogradation: les prix doivent être rétrogradés à la limite des pourcentages indiqués par l’EMA du 20e jour avant d’être autorisés à entrer, afin d’éviter les poursuites.
  4. Système de gestion des risques: utilisez des multiples d’ATR pour définir des objectifs de stop-loss et de profit, le stop-loss par défaut est de 1,5 fois l’ATR et l’objectif de profit est de 3 fois l’ATR.

Avantages stratégiques

  1. Mécanisme de confirmation multiple: confirmation de conditions multiples, telles que l’alignement de la ligne moyenne, la dynamique multicyclique et le retournement des prix, afin de réduire les faux signaux.
  2. Gestion scientifique des risques: l’ATR est utilisé pour ajuster les objectifs de stop loss et de profit en fonction de la volatilité du marché.
  3. Le suivi des tendances est associé à la dynamique: il permet de saisir les grandes tendances et de saisir les meilleurs moments d’entrée dans les tendances.
  4. La personnalisation: les paramètres de la stratégie peuvent être optimisés en fonction des caractéristiques des différents marchés.
  5. Analyse multi-périodique: amélioration de la fiabilité du signal grâce à la combinaison de la ligne solaire et de la circonférence.

Risque stratégique

  1. Décalage de la ligne moyenne: l’EMA en tant qu’indicateur de retard peut entraîner des retards d’entrée. Il est recommandé de combiner avec d’autres indicateurs de pointe.
  2. Ne pas appliquer aux marchés en tremblement de terre: la stratégie peut souvent générer de faux signaux dans les marchés en tremblement de terre. Il est recommandé d’ajouter un filtre d’environnement de marché.
  3. Risque de retrait: Bien qu’il y ait un arrêt de l’ATR, il est possible de faire face à un retrait plus important dans des situations extrêmes.
  4. Sensitivité des paramètres: les effets de la stratégie sont sensibles aux paramètres. Il est recommandé de procéder à des tests d’optimisation des paramètres.

Orientation de l’optimisation de la stratégie

  1. Identification de l’environnement du marché: ajout d’un indicateur de volatilité ou d’un indicateur de force de tendance, en utilisant une combinaison de paramètres différente dans différents environnements de marché.
  2. Optimisation de l’entrée: vous pouvez ajouter des indicateurs d’oscillation tels que le RSI pour trouver des points d’entrée plus précis dans les zones de rétrogradation.
  3. Ajustement des paramètres dynamiques: Ajustement automatique du multiplicateur ATR et de la plage de réajustement en fonction de la volatilité du marché
  4. Ajout d’une analyse de la quantité de transaction: la confirmation de la force de la tendance par la quantité de transaction améliore la fiabilité du signal.
  5. Introduction de l’apprentissage automatique: optimisation dynamique des paramètres à l’aide d’algorithmes d’apprentissage automatique pour améliorer l’adaptabilité des stratégies.

Résumer

Il s’agit d’une stratégie de suivi de tendance conçue de manière rationnelle et logiquement rigoureuse. L’utilisation combinée de plusieurs indicateurs techniques assure la stabilité de la stratégie et fournit un bon mécanisme de gestion des risques. La stratégie est très personnalisable et peut être optimisée en fonction des différentes caractéristiques du marché.

Code source de la stratégie
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Swing Trading with EMA Alignment and Custom Momentum", overlay=true)

// User inputs for customization
atrLength = input.int(14, title="ATR Length", minval=1)
atrMultiplierSL = input.float(1.5, title="Stop-Loss Multiplier (ATR)", minval=0.1)   // Stop-loss at 1.5x ATR
atrMultiplierTP = input.float(3.0, title="Take-Profit Multiplier (ATR)", minval=0.1)   // Take-profit at 3x ATR
pullbackRangePercent = input.float(1.0, title="Pullback Range (%)", minval=0.1) // 1% range for pullback around 20 EMA
lengthKC = input.int(20, title="Length for Keltner Channels (Momentum Calculation)", minval=1)

// EMA settings
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema100 = ta.ema(close, 100)
ema200 = ta.ema(close, 200)

// ATR calculation
atrValue = ta.atr(atrLength)

// Custom Momentum Calculation based on Linear Regression for Daily Timeframe
highestHighKC = ta.highest(high, lengthKC)
lowestLowKC = ta.lowest(low, lengthKC)
smaCloseKC = ta.sma(close, lengthKC)

// Manually calculate the average of highest high and lowest low
averageKC = (highestHighKC + lowestLowKC) / 2

// Calculate daily momentum using linear regression
dailyMomentum = ta.linreg(close - (averageKC + smaCloseKC) / 2, lengthKC, 0) // Custom daily momentum calculation

// Fetch weekly data for momentum calculation using request.security()
[weeklyHigh, weeklyLow, weeklyClose] = request.security(syminfo.tickerid, "W", [high, low, close])

// Calculate weekly momentum using linear regression on weekly timeframe
weeklyHighestHighKC = ta.highest(weeklyHigh, lengthKC)
weeklyLowestLowKC = ta.lowest(weeklyLow, lengthKC)
weeklySmaCloseKC = ta.sma(weeklyClose, lengthKC)
weeklyAverageKC = (weeklyHighestHighKC + weeklyLowestLowKC) / 2

weeklyMomentum = ta.linreg(weeklyClose - (weeklyAverageKC + weeklySmaCloseKC) / 2, lengthKC, 0) // Custom weekly momentum calculation

// EMA alignment condition (20 EMA > 50 EMA > 100 EMA > 200 EMA)
emaAligned = ema20 > ema50 and ema50 > ema100 and ema100 > ema200

// Momentum increasing condition (daily and weekly momentum is positive and increasing)
dailyMomentumIncreasing = dailyMomentum > 0 and dailyMomentum > dailyMomentum[1] //and dailyMomentum[1] > dailyMomentum[2]
weeklyMomentumIncreasing = weeklyMomentum > 0 and weeklyMomentum > weeklyMomentum[1] //and weeklyMomentum[1] > weeklyMomentum[2]

// Redefine Pullback condition: price within 1% range of the 20 EMA
upperPullbackRange = ema20 * (1 + pullbackRangePercent / 100)
lowerPullbackRange = ema20 * (1 - pullbackRangePercent / 100)
pullbackToEma20 = (close <= upperPullbackRange) and (close >= lowerPullbackRange)

// Entry condition: EMA alignment and momentum increasing on both daily and weekly timeframes
longCondition = emaAligned and dailyMomentumIncreasing and weeklyMomentumIncreasing and pullbackToEma20

// Initialize stop loss and take profit levels as float variables
var float longStopLevel = na
var float longTakeProfitLevel = na

// Calculate stop loss and take profit levels based on ATR
if (longCondition)
    longStopLevel := close - (atrMultiplierSL * atrValue)  // Stop loss at 1.5x ATR below the entry price
    longTakeProfitLevel := close + (atrMultiplierTP * atrValue) // Take profit at 3x ATR above the entry price

// Strategy execution
if (longCondition)
    strategy.entry("Long", strategy.long)

// Exit conditions: Stop-loss at 1.5x ATR and take-profit at 3x ATR
if (strategy.position_size > 0)
    strategy.exit("Take Profit/Stop Loss", "Long", stop=longStopLevel, limit=longTakeProfitLevel)