Stratégie de suivi de tendance multi-indicateurs combinée à un système de trading à canal dynamique et à moyenne mobile

EMA ATR
Date de création: 2024-12-12 15:58:57 Dernière modification: 2024-12-12 15:58:57
Copier: 0 Nombre de clics: 376
1
Suivre
1617
Abonnés

Stratégie de suivi de tendance multi-indicateurs combinée à un système de trading à canal dynamique et à moyenne mobile

Aperçu

La stratégie est un système de trading multi-indicateurs combinant le canal G, l’indice des moyennes mobiles et l’amplitude de fluctuation réelle. Il identifie les signaux de négociation à travers la confirmation de supports/résistances dynamiques et de tendances, et gère le risque en utilisant des arrêts et des arrêts basés sur l’ATR. Le système est conçu pour une attention particulière à la fiabilité et au contrôle du risque et convient aux traders qui recherchent une méthode de négociation robuste.

Principe de stratégie

La logique centrale de la stratégie est basée sur les éléments clés suivants:

  1. Le canal G calcule les niveaux de support et de résistance dynamiques, en ajustant constamment les hauts et les bas par des formules mathématiques
  2. Les EMA sont utilisées pour déterminer la direction de la tendance globale et la position relative du prix par rapport à l’EMA détermine la direction de la transaction.
  3. Signal d’entrée basé sur la percée du canal G et la confirmation de position de l’EMA
  4. Le stop et l’arrêt sont réglés en utilisant le multiplicateur de l’ATR, le stop est 2 fois l’ATR et l’arrêt est 4 fois l’ATR
  5. Évitez les signaux répétitifs en continu avec le suivi de l’état

Avantages stratégiques

  1. Le mécanisme de confirmation de signaux à plusieurs niveaux améliore la fiabilité des transactions
  2. Des limites de passage dynamiquement ajustées pour s’adapter à différents environnements de marché
  3. La gestion des risques basée sur la volatilité est plus adaptative
  4. Éviter la répétition des signaux réduit le risque de survente
  5. Des marqueurs d’achat et de vente clairs et visuels pour faciliter l’analyse et le suivi

Risque stratégique

  1. Les signaux de fausse rupture sur le marché horizontal pourraient être trop nombreux
  2. L’EMA en tant qu’indicateur de retard peut entraîner des retards dans le temps d’entrée
  3. Le stop ATR à multiplicateur fixe peut ne pas être suffisamment flexible pendant les périodes de forte volatilité
  4. Des données historiques plus longues sont nécessaires pour calculer les indicateurs
  5. L’optimisation des paramètres peut conduire à un surapprentissage

Orientation de l’optimisation de la stratégie

  1. Introduction d’un signal de confirmation de passage pour améliorer la fiabilité de la percée
  2. Adaptation dynamique du coefficient ATR en fonction des différentes fluctuations du marché
  3. Ajout de filtres d’environnement de marché pour éviter les transactions dans des conditions défavorables
  4. Optimisation de la logique de filtrage des signaux pour réduire encore plus les faux signaux
  5. Envisager d’intégrer un système de gestion de position dynamique

Résumer

La stratégie construit un système de négociation complet en combinant plusieurs indicateurs techniques éprouvés. L’avantage du système réside dans ses mécanismes de confirmation de signaux à plusieurs niveaux et sa gestion du risque basée sur la volatilité, mais nécessite toujours une optimisation en fonction des caractéristiques spécifiques du marché dans les applications pratiques.

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

//@version=5
strategy("G-Channel with EMA Strategy and ATR SL/TP", shorttitle="G-EMA-ATR", overlay=true)

// Input parameters
length = input.int(100, title="G-Channel Length")
src = input.source(close, title="Source")
ema_length = input.int(50, title="EMA Length")  // EMA length
atr_length = input.int(14, title="ATR Length")  // ATR length

// G-Channel calculation
var float a = na
var float b = na
a := math.max(src, nz(a[1])) - nz(a[1] - b[1]) / length
b := math.min(src, nz(b[1])) + nz(a[1] - b[1]) / length
avg = (a + b) / 2

// G-Channel cross conditions
crossup = b[1] < close[1] and b > close
crossdn = a[1] < close[1] and a > close
bullish = ta.barssince(crossdn) <= ta.barssince(crossup)
c = bullish ? color.lime : color.red

// EMA calculation
ema_value = ta.ema(src, ema_length)

// ATR calculation
atr_value = ta.atr(atr_length)

// Plot G-Channel average and Close price
p1 = plot(avg, "G-Channel Average", color=c, linewidth=1, transp=90)
p2 = plot(close, "Close Price", color=c, linewidth=1, transp=100)
fill(p1, p2, color=c, transp=90)

// Plot EMA
plot(ema_value, color=color.blue, linewidth=2, title="EMA")

// Buy and Sell conditions
buy_condition = bullish and close < ema_value
sell_condition = not bullish and close > ema_value

// Track the last signal state
var bool last_was_buy = false
var bool last_was_sell = false

// ATR-based SL and TP calculations
long_sl = close - 2 * atr_value  // 2 ATR below the entry for SL
long_tp = close + 4 * atr_value  // 4 ATR above the entry for TP
short_sl = close + 2 * atr_value // 2 ATR above the entry for SL (short)
short_tp = close - 4 * atr_value // 4 ATR below the entry for TP (short)

// Generate Buy signal only if the last signal was not Buy
if (buy_condition and not last_was_buy)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Exit Buy", from_entry="Buy", stop=long_sl, limit=long_tp)
    last_was_buy := true
    last_was_sell := false

// Generate Sell signal only if the last signal was not Sell
if (sell_condition and not last_was_sell)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Exit Sell", from_entry="Sell", stop=short_sl, limit=short_tp)
    last_was_sell := true
    last_was_buy := false

// Plot shapes for Buy and Sell signals
plotshape(series=buy_condition and not last_was_buy, location=location.belowbar, style=shape.labelup, color=color.lime, size=size.small, text="Buy", textcolor=color.white)
plotshape(series=sell_condition and not last_was_sell, location=location.abovebar, style=shape.labeldown, color=color.red, size=size.small, text="Sell", textcolor=color.white)