Stratégie de croisement de moyenne mobile configurable

MA-X EMA MA CROSSOVER trading strategy risk management
Date de création: 2025-04-03 11:31:33 Dernière modification: 2025-04-03 11:31:33
Copier: 9 Nombre de clics: 300
2
Suivre
319
Abonnés

Stratégie de croisement de moyenne mobile configurable Stratégie de croisement de moyenne mobile configurable

Aperçu

Cet article présente une stratégie de négociation croisée de moyennes mobiles, flexible et puissante, qui permet aux traders de personnaliser les paramètres et les types de moyennes mobiles en fonction des différentes conditions du marché. Le cœur de la stratégie est de suivre les tendances et de générer des signaux en utilisant des moyennes mobiles de différentes périodes et types.

Principe de stratégie

La stratégie génère des signaux de trading en calculant des moyennes mobiles sur trois périodes différentes (ligne rapide, ligne lente et ligne de sortie). Les principaux principes incluent:

  1. Choix du type de moyenne mobile: supporte les moyennes mobiles simples (SMA), les moyennes mobiles indicielles (EMA), les moyennes mobiles pondérées (WMA) et les moyennes mobiles de Hull (HMA).
  2. Conditions d’entrée :
    • Entrée multiple: le prix de clôture est supérieur à la ligne rapide, la ligne rapide est supérieure à la ligne lente et le prix de clôture est supérieur à la ligne de sortie
    • Entrée vide: le prix de clôture est inférieur à la ligne rapide, la ligne rapide est inférieure à la ligne lente et le prix de clôture est inférieur à la ligne de sortie
  3. Conditions de jeu:
    • Sortie multiple: après avoir franchi au moins deux lignes K, le prix de clôture est inférieur à la ligne de sortie
    • Sortie à vide: après avoir franchi au moins deux lignes K, le prix de clôture est supérieur à celui de la sortie

Avantages stratégiques

  1. Très configurable: les traders ont la flexibilité d’ajuster la période et le type de moyenne mobile
  2. Adaptabilité multi-marché: les variétés de transactions peuvent être adaptées à différentes liquidités en ajustant les paramètres
  3. Une forte capacité de suivi des tendances: filtrage des faux signaux à l’aide de multiples moyennes mobiles
  4. Contrôle des risques: gestion des positions à 10% du capital du compte par défaut
  5. Flexible orientation des transactions: vous pouvez choisir d’activer ou non la négociation à découvert

Risque stratégique

  1. Sensitivité des paramètres: différents marchés peuvent avoir besoin de paramètres de moyenne mobile différents
  2. Les marchés tendanciels sont plus performants: des signaux plus inefficaces peuvent être générés dans les marchés en crise
  3. Coût de transaction: la stratégie définit par défaut une commission de transaction de 0,06% à prendre en compte dans les transactions réelles
  4. Limitations de détection: vérification préliminaire pour certaines variétés seulement (comme BTCUSD et NIFTY)

Orientation de l’optimisation de la stratégie

  1. Ajustement des paramètres dynamiques: introduction d’une période de moyenne mobile adaptative
  2. En combinaison avec d’autres indicateurs techniques: ajouter des indicateurs tels que le RSI, le MACD pour filtrer le signal
  3. Système d’arrêt des pertes: ajout d’une stratégie d’arrêt des pertes basée sur la volatilité
  4. Vérification à plusieurs périodes: un retour complet sur différentes périodes
  5. Optimisation de l’apprentissage automatique: recherche automatique de la meilleure combinaison de paramètres à l’aide d’algorithmes

Résumer

La stratégie MA-X offre un cadre flexible de suivi des tendances. Avec une configuration raisonnable et une optimisation continue, la stratégie peut devenir un outil puissant dans le kit de trading quantitatif. Les traders doivent effectuer des ajustements personnalisés en fonction des caractéristiques spécifiques du marché et effectuer un retour d’expérience et une vérification adéquats.

Code source de la stratégie
/*backtest
start: 2024-04-03 00:00:00
end: 2025-04-02 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"BNB_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © YetAnotherTA

//@version=6
strategy("Configurable MA Cross (MA-X) Strategy", "MA-X", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type = strategy.commission.percent, commission_value = 0.06)

// === Inputs ===
// Moving Average Periods
maPeriodA = input.int(13, title="Fast MA")
maPeriodB = input.int(55, title="Slow MA")
maPeriodC = input.int(34, title="Exit MA")

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

// Toggle for Short Trades (Disabled by Default)
enableShorts = input.bool(false, title="Enable Short Trades", tooltip="Enable or disable short positions")

// === Function to Select MA Type ===
getMA(src, length) =>
    maType == "SMA" ? ta.sma(src, length) : maType == "EMA" ? ta.ema(src, length) : maType == "WMA" ? ta.wma(src, length) : ta.hma(src, length)

// === MA Calculation ===
maA = getMA(close, maPeriodA)
maB = getMA(close, maPeriodB)
maC = getMA(close, maPeriodC)

// === Global Variables for Crossover Signals ===
var bool crossAboveA = false
var bool crossBelowA = false

crossAboveA := ta.crossover(close, maA)
crossBelowA := ta.crossunder(close, maA)

// === Bar Counter for Exit Control ===
var int barSinceEntry = na

// Reset the counter on new entries
if (strategy.opentrades == 0)
    barSinceEntry := na

// Increment the counter on each bar
if (strategy.opentrades > 0)
    barSinceEntry := (na(barSinceEntry) ? 1 : barSinceEntry + 1)

// === Entry Conditions ===
goLong = close > maA and maA > maB and close > maC and crossAboveA
goShort = enableShorts and close < maA and maA < maB and close < maC and crossBelowA  // Shorts only when toggle is enabled

// === Exit Conditions (only after 1+ bar since entry) ===
exitLong = (strategy.position_size > 0) and (barSinceEntry >= 2) and (close < maC)
exitShort = enableShorts and (strategy.position_size < 0) and (barSinceEntry >= 2) and (close > maC)

// === Strategy Execution ===
// Long entry logic
if (goLong)
    strategy.close("Short")         // Close any short position
    strategy.entry("Long", strategy.long)
    alert("[MA-X] Go Long")
    barSinceEntry := 1               // Reset the bar counter

// Short entry logic (only if enabled)
if (enableShorts and goShort)
    strategy.close("Long")          // Close any long position
    strategy.entry("Short", strategy.short)
    alert("[MA-X] Go Short")
    barSinceEntry := 1               // Reset the bar counter

// Exit logic (only after at least 1 bar has passed)
if (exitLong)
    strategy.close("Long")
    alert("[MA-X] Exit Long")

if (enableShorts and exitShort)
    strategy.close("Short")
    alert("[MA-X] Exit Short")

// === Plotting ===
plot(maA, color=color.green, linewidth=2, title="Fast MA")
plot(maB, color=color.blue, linewidth=2, title="Slow MA")
plot(maC, color=color.red, linewidth=2, title="Exit MA")