Stratégie de croisement de moyenne mobile EMA


Date de création: 2023-11-10 15:05:22 Dernière modification: 2023-11-10 15:05:22
Copier: 0 Nombre de clics: 730
1
Suivre
1617
Abonnés

Stratégie de croisement de moyenne mobile EMA

Aperçu

La stratégie utilise les croisements des lignes EMA rapides et des lignes EMA lentes comme signaux d’achat et de vente, permettant de négocier automatiquement en fonction des croisements des lignes médianes. Les lignes EMA rapides serrent les fluctuations des prix et les lignes EMA lentes aplatissent les fluctuations des prix.

Principe de stratégie

La stratégie consiste principalement à calculer les lignes EMA rapides et les lignes EMA lentes et à comparer la relation entre les deux lignes normales pour générer un signal de transaction.

Tout d’abord, dans les paramètres d’entrée, définissez la période emaFast pour les EMAs rapides à 1, afin que les EMAs rapides puissent suivre les variations de prix. En même temps, définissez la période emaSlowBuy pour générer un signal d’achat et emaSlowSell pour générer un signal de vente.

Ensuite, en fonction de la période de l’entrée, calculer l’EMA rapide et l’EMA lente. L’EMA rapide a une période fixe de 1, suivez le prix; l’EMA lente est un paramètre réglable, lissage des données de prix.

Ensuite, comparez la relation entre la taille de l’EMA rapide et celle de l’EMA lente pour déterminer le croisement. Si l’EMA rapide traverse l’EMA lente du côté inférieur, cela génère une fourche dorée qui satisfait la condition d’achat. Si l’EMA rapide tombe du côté supérieur et brise l’EMA lente, cela génère une fourche morte qui satisfait la condition de vente.

Finalement, lorsque les conditions d’achat et de vente sont remplies, exécutez les instructions correspondantes d’ouverture et de clôture de la position pour terminer la transaction. En même temps, vérifiez si l’heure actuelle se situe dans la plage de temps de retracement pour éviter d’avoir une transaction erronée au-delà de la plage de dates.

Analyse des avantages

  • L’utilisation d’une croix moyenne pour déterminer les points de vente et d’achat est un indicateur technique éprouvé et fiable
  • Les cycles EMA sont réglables et peuvent être ajustés en fonction des paramètres du marché pour rechercher les meilleures opportunités de négociation.
  • Les idées d’achat et de vente à l’aide d’une fourchette dorée sont claires et faciles à comprendre.
  • Flexible configuration des achats et des ventes avec différents paramètres EMA, stratégie de négociation entièrement personnalisée
  • Option de négociation en plus, en moins ou en deux sens, avec une flexibilité adaptée aux différentes conditions du marché
  • Une plage de temps réglable pour optimiser les tests pour différentes périodes de temps

Analyse des risques

  • La croisée des courbes de l’EMA est retardée et peut manquer le meilleur moment pour une variation de prix.
  • Les signaux générés par les EMA croisées peuvent être fréquents dans des marchés très volatils, ce qui entraîne une survente des transactions.
  • Il est nécessaire de tester les paramètres à plusieurs reprises pour trouver la meilleure combinaison d’EMA, sinon de nombreux signaux erronés apparaîtront.
  • EMA rapide à 1 cycle fixe qui ne peut pas filtrer efficacement le bruit lors d’un événement inattendu sur le marché
  • L’incapacité à gérer efficacement les fluctuations des prix sur le marché génère de nombreux signaux de trading inutiles.

Les mesures d’optimisation suivantes peuvent être envisagées en fonction des risques:

  1. Filtrez les signaux croisés EMA en combinaison avec d’autres indicateurs pour éviter les signaux erronés

  2. Adaptation des paramètres EMA en fonction de la volatilité du marché pour réduire la fréquence des transactions

  3. Augmentation des considérations de stop loss et de stop loss, et maîtrise des risques

  4. Optimiser le cycle des EMA rapides en utilisant des paramètres plus adaptés à des conditions de marché spécifiques

  5. Augmenter le jugement sur les tendances et éviter de trop négocier dans des marchés en crise

Direction d’optimisation

Cette stratégie peut être optimisée dans les directions suivantes:

  1. Optimiser les paramètres de l’EMA, tester différentes combinaisons de périodes et trouver les paramètres optimaux

Il est possible de trouver la combinaison de paramètres la plus performante dans le repérage des données historiques en parcourant les différents paramètres emaFast et emaSlow, en utilisant une méthode d’optimisation progressive ou aléatoire.

  1. Vérification du filtrage des signaux en combinaison avec d’autres indicateurs

Par exemple, il est possible de combiner des indicateurs tels que MACD, KDJ et Brin pour éviter que les signaux de croisement EMA produisent un faux signal.

  1. Augmenter le jugement sur les tendances

Il est important de calculer les indicateurs tels que l’amplitude réelle moyenne pour juger de la force ou de la faiblesse de la tendance et éviter de tomber dans un marché de choc.

  1. Optimisation des stratégies de stop loss

Il s’agit d’étudier les meilleurs points d’arrêt pour contrôler le risque de pertes et d’identifier les points d’arrêt raisonnables pour maximiser les bénéfices.

  1. Tester d’autres combinaisons d’EMA

Il est possible de tester non seulement les combinaisons d’EMA rapides et lents, mais aussi les combinaisons d’EMA doubles, d’EMA triples et même d’EMA multiples pour trouver des paramètres plus avantageux.

  1. Adaptation des paramètres aux différentes cycles du marché

Pour les marchés plus tendanciels, on peut accélérer le cycle EMA de manière appropriée, tandis que les marchés chocs peuvent ralentir le cycle EMA.

Résumer

L’idée générale de l’EMA Cross Strategy est claire et compréhensible, et utilise des indicateurs techniques éprouvés pour déterminer le moment de l’achat et de la vente. La stratégie est personnalisable et peut être optimisée en ajustant les paramètres de l’EMA, ce qui permet de créer une stratégie de négociation pour différents environnements de marché.

Code source de la stratégie
/*backtest
start: 2023-10-10 00:00:00
end: 2023-11-09 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(
     "EMA Cross Strategy with Custom Buy/Sell Conditions",
     overlay=true
     )

// INPUT:

// Options to enter fast Exponential Moving Average (EMA) value
emaFast = 1

// Options to enter slow EMAs for buy and sell signals
slowEMABuy = input(title="Slow EMA for Buy Signals",  defval=20, minval=1, maxval=9999)
slowEMASell = input(title="Slow EMA for Sell Signals",  defval=30, minval=1, maxval=9999)

// Option to select trade directions
tradeDirection = input(title="Trade Direction", options=["Long", "Short", "Both"], defval="Both")

// Options that configure the backtest date range
startDate = input(title="Start Date", type=input.time, defval=timestamp("01 Jan 2018 00:00"))
endDate = input(title="End Date", type=input.time, defval=timestamp("31 Dec 2025 23:59"))


// CALCULATIONS:

// Use a fixed fast EMA of 1 and calculate slow EMAs for buy and sell signals
fastEMA = ema(close, emaFast)
slowEMABuyValue = ema(close, slowEMABuy)
slowEMASellValue = ema(close, slowEMASell)


// PLOT:

// Draw the EMA lines on the chart
plot(series=fastEMA, color=color.orange, linewidth=2)
plot(series=slowEMABuyValue, color=color.blue, linewidth=2, title="Slow EMA for Buy Signals")
plot(series=slowEMASellValue, color=color.red, linewidth=2, title="Slow EMA for Sell Signals")


// CONDITIONS:

// Check if the close time of the current bar falls inside the date range
inDateRange = true

// Translate input into trading conditions for buy and sell signals
buyCondition = crossunder(slowEMABuyValue, fastEMA)
sellCondition = crossover(slowEMASellValue, fastEMA)

// Translate input into overall trading conditions
longOK  = (tradeDirection == "Long") or (tradeDirection == "Both")
shortOK = (tradeDirection == "Short") or (tradeDirection == "Both")


// ORDERS:

// Submit entry (or reverse) orders based on buy and sell conditions
if (buyCondition and inDateRange)
    strategy.entry("Buy", strategy.long)

if (sellCondition and inDateRange)
    strategy.close("Buy")

// Submit exit orders based on opposite trade conditions
if (strategy.position_size > 0 and sellCondition)
    strategy.close("Sell")
if (strategy.position_size < 0 and buyCondition)
    strategy.close("Sell")