Stratégie de trading d'inversion de la moyenne mobile de la tendance composite

MA EMA TEMA DEMA WMA SMA
Date de création: 2025-02-20 17:20:42 Dernière modification: 2025-02-27 17:23:21
Copier: 0 Nombre de clics: 394
2
Suivre
319
Abonnés

Stratégie de trading d’inversion de la moyenne mobile de la tendance composite Stratégie de trading d’inversion de la moyenne mobile de la tendance composite

Aperçu

La stratégie est un système de suivi des tendances et de trading inversé basé sur des courbes composites. Elle identifie les opportunités de trading en combinant des moyennes mobiles de différentes périodes, combinées à la réaction des prix aux courbes. Le cœur de la stratégie est de juger du moment de la transaction en observant la relation entre les prix et les courbes et la réaction des prix à une baisse spécifique.

Principe de stratégie

La stratégie utilise une combinaison de plusieurs types de moyennes mobiles (EMA, TEMA, DEMA, WMA, SMA) pour construire une moyenne composite à travers deux cycles différents (la moyenne pondérée ou arithmétique par défaut de 20 et 30). La stratégie attend que la tendance soit établie pour ramener le prix près de la moyenne (par le contrôle des paramètres de pourcentage de réaction) et négocie si un signal de revers se produit.

Avantages stratégiques

  1. Le système est très adaptable et prend en charge plusieurs types de lignes moyennes, permettant de choisir la plus appropriée en fonction des différentes caractéristiques du marché.
  2. En combinant les moyennes, on réduit efficacement les faux signaux qu’une seule moyenne périodique peut provoquer.
  3. La stratégie a ajouté le concept de pourcentage de réaction, évitant les transactions simples à travers la même ligne et améliorant la fiabilité des transactions.
  4. Dans le cas où la direction de la tendance est claire, il est possible d’obtenir de meilleurs prix de transaction en attendant l’entrée en bourse.

Risque stratégique

  1. Les faux signaux peuvent se produire fréquemment dans les marchés instables, entraînant une augmentation des coûts de transaction.
  2. Le retard de la moyenne composée peut entraîner des retards dans les heures d’entrée et de sortie.
  3. Le pourcentage de réponse fixe peut nécessiter des ajustements dans différents environnements de marché.
  4. Dans les marchés où la tendance change rapidement, il est possible qu’il y ait un retrait plus important.

Orientation de l’optimisation de la stratégie

  1. On peut introduire des indicateurs de volatilité pour ajuster dynamiquement les pourcentages de réaction afin de mieux adapter la stratégie aux différentes conditions du marché.
  2. L’ajout d’un facteur de transaction pour confirmer l’efficacité d’une inversion de prix.
  3. Envisagez d’ajouter des mécanismes d’arrêt et de freinage pour mieux contrôler les risques.
  4. Il est possible d’augmenter le jugement de la force de la tendance, en utilisant des paramètres plus radicaux dans les tendances fortes.
  5. Considérer l’inclusion dans le contexte du marché et utiliser différentes combinaisons de paramètres pour différentes caractéristiques du marché.

Résumer

Il s’agit d’une stratégie combinant le suivi des tendances et la théorie de l’inversion de la négociation pour saisir les opportunités de négociation par le biais d’un mécanisme de réaction composé de la ligne de parité et du prix. Le principal avantage de la stratégie réside dans sa flexibilité et sa capacité à filtrer les faux signaux, mais il faut également faire attention à l’optimisation des paramètres dans différents environnements de marché.

Code source de la stratégie
/*backtest
start: 2024-10-01 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Ultrajante MA Reaction Strategy", overlay=true, initial_capital=10000, 
     default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// ===== Custom Functions for DEMA and TEMA =====
dema(src, length) =>
    ema1 = ta.ema(src, length)
    ema2 = ta.ema(ema1, length)
    2 * ema1 - ema2

tema(src, length) =>
    ema1 = ta.ema(src, length)
    ema2 = ta.ema(ema1, length)
    ema3 = ta.ema(ema2, length)
    3 * ema1 - 3 * ema2 + ema3

// ===== Configuration Parameters =====

// MA Type Selection
maType = input.string(title="MA Type", defval="EMA", options=["SMA", "EMA", "WMA", "DEMA", "TEMA"])

// Parameters for composite periods
periodA = input.int(title="Period A", defval=20, minval=1)
periodB = input.int(title="Period B", defval=30, minval=1)
compMethod = input.string(title="Composite Method", defval="Average", options=["Average", "Weighted"])

// Reaction percentage (e.g., 0.5 means 0.5%)
reactionPerc = input.float(title="Reaction %", defval=0.5, step=0.1)

// ===== Composite Period Calculation =====
compPeriod = compMethod == "Average" ? math.round((periodA + periodB) / 2) : math.round((periodA * 0.6 + periodB * 0.4))

// ===== Moving Average Calculation based on selected type =====
ma = switch maType
    "SMA"  => ta.sma(close, compPeriod)
    "EMA"  => ta.ema(close, compPeriod)
    "WMA"  => ta.wma(close, compPeriod)
    "DEMA" => dema(close, compPeriod)
    "TEMA" => tema(close, compPeriod)
    => ta.ema(close, compPeriod)  // Default value

plot(ma, color=color.blue, title="MA")

// ===== Trend Definition =====
trendUp = close > ma
trendDown = close < ma

// ===== Reaction Threshold Calculation =====
// In uptrend: expect the price to retrace to or below a value close to the MA
upThreshold = ma * (1 - reactionPerc / 100)
// In downtrend: expect the price to retrace to or above a value close to the MA
downThreshold = ma * (1 + reactionPerc / 100)

// ===== Quick Reaction Detection =====
// For uptrend: reaction is detected if the low is less than or equal to the threshold and the close recovers and stays above the MA
upReaction = trendUp and (low <= upThreshold) and (close > ma)
// For downtrend: reaction is detected if the high is greater than or equal to the threshold and the close stays below the MA
downReaction = trendDown and (high >= downThreshold) and (close < ma)

// ===== Trade Execution =====
if upReaction
    // Close short position if exists and open long position
    strategy.close("Short", comment="Close Short due to Bullish Reaction")
    strategy.entry("Long", strategy.long, comment="Long Entry due to Bullish Reaction in Uptrend")

if downReaction
    // Close long position if exists and open short position
    strategy.close("Long", comment="Close Long due to Bearish Reaction")
    strategy.entry("Short", strategy.short, comment="Short Entry due to Bearish Reaction in Downtrend")

// ===== Visualization of Reactions on the Chart =====
plotshape(upReaction, title="Bullish Reaction", style=shape.arrowup, location=location.belowbar, color=color.green, size=size.small, text="Long")
plotshape(downReaction, title="Bearish Reaction", style=shape.arrowdown, location=location.abovebar, color=color.red, size=size.small, text="Short")