Stratégie de négociation croisée de moyenne mobile

Auteur:ChaoZhang est là., Date: 24 janvier 2024 à 11h48
Les étiquettes:

img

Résumé

La stratégie de trading de croisement de moyenne mobile génère des signaux d'achat et de vente en calculant le croisement des lignes EMA rapide (fastLength) et EMA lente (slowLength). Lorsque la ligne rapide traverse au-dessus de la ligne lente, un signal d'achat est généré. Lorsque la ligne rapide traverse au-dessous de la ligne lente, un signal de vente est généré. Cette stratégie est simple et pratique, adaptée au trading à moyen et court terme.

Principe de stratégie

La stratégie utilise deux lignes moyennes mobiles, une ligne rapide et une ligne lente. Le paramètre de la ligne rapide EMAfastLength est défini par défaut comme une ligne de 9 jours, et le paramètre de la ligne lente EMAslowLength est défini par défaut comme une ligne de 26 jours. Calculez le croisement des deux lignes EMA pour déterminer les signaux d'achat et de vente du marché:

  1. Lorsque la ligne rapide se déplace vers le haut à travers la ligne lente, un signal d'achat enterLong() est généré.
  2. Lorsque la ligne rapide rompt vers le bas à travers la ligne lente, un signal de vente enterShort() est généré.

Les signaux de négociation spécifiques et les règles de stratégie sont les suivants:

  1. Lorsque la ligne rapide traverse au-dessus de la ligne lente, allez long; lorsque la ligne rapide traverse au-dessous de la ligne lente, position rapprochée.
  2. Le profit à long terme est le pourcentage cible (défaut 0,15%) du prix, qui est de fermer la position lorsque le profit atteint 15%.
  3. Le stop loss pour long est le StopLosspercentage (défaut de 0,20%) du prix, qui est de fermer la position lorsque la perte atteint 20%.
  4. La position courte fonctionne de la même façon.

Cette stratégie est basée sur la croix dorée et la croix morte des deux moyennes mobiles.

Analyse des avantages

  1. La stratégie est simple et facile à comprendre.
  2. L'application des moyennes mobiles filtre un certain bruit du marché et rend les signaux de négociation plus précis.
  3. Les règles de trading sont claires avec une prise de profit et un stop-loss définitifs.
  4. Les paramètres d'essai peuvent être ajustés de manière flexible pour s'adapter aux différentes conditions du marché.

Analyse des risques

  1. Les moyennes mobiles ont elles-mêmes un décalage, qui peut manquer les variations de prix à court terme, ce qui conduit à des points d'achat et de vente inexacts.
  2. Des paramètres de moyenne mobile cyclique différents peuvent générer de faux signaux et entraîner des pertes.
  3. En s'appuyant uniquement sur quelques paramètres, cette stratégie a des exigences d'optimisation hyperparamétrique élevées pour trouver la meilleure combinaison de paramètres.
  4. Dans certaines tendances majeures particulières, cette stratégie est sujette à l'échec.

Pour faire face aux risques, les paramètres qui peuvent être optimisés comprennent le cycle moyen mobile, la variété des transactions, le taux de prise de profit et de stop-loss, etc. Des tests approfondis sont nécessaires pour réduire les risques.

Directions d'optimisation

L'idée du croisement des moyennes mobiles de cette stratégie est simple et pratique.

  1. Modifier le type de moyenne mobile: en plus de l'EMA, tester également SMA, LWMA, HMA et autres types.
  2. Ajouter d'autres indicateurs: combiner avec le RSI, le MACD et d'autres indicateurs.
  3. Optimisation des paramètres: optimiser automatiquement les deux paramètres du cycle de l'EMA pour trouver la meilleure combinaison de paramètres.
  4. Filtrage des tendances: les transactions sont effectuées de manière sélective en fonction des principales tendances.
  5. Optimisation de la prise de profit et de l'arrêt des pertes: Améliorer la prise de profit et l'arrêt des pertes à pourcentage fixe pour la rendre plus pratique.

Grâce à ces essais d'optimisation, l'effet pratique et la stabilité de la stratégie peuvent être considérablement améliorés.

Résumé

L'idée de la stratégie de croisement de moyenne mobile est simple, mais son application pratique nécessite une optimisation continue. Cette stratégie donne la logique de génération de signaux de trading et de règles de trading de base. Sur cette base, elle peut être grandement optimisée pour devenir une stratégie quantitative utilisable. L'application de la moyenne mobile nous fournit également des idées de stratégies, sur la base desquelles nous pouvons innover et améliorer.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("EMA Cross by MarketAlpha", overlay=true)
EMAfastLength = input(defval = 9, minval = 2)
EMAslowLength = input(defval = 26, minval = 2)
Targetpercentage = input(defval = 0.15, title = "Profit Target in percentage", minval = 0.05)
StopLosspercentage = input(defval = 0.20, title = "Stop Loss in percentage", minval = 0.05)
profitpoints = close*Targetpercentage
stoplosspoints = close*StopLosspercentage
price = close

FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2000)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"

emafast = ema(price, EMAfastLength)
emaslow = sma(price, EMAslowLength)
plot(emafast,color=green)
plot(emaslow,color=red)

enterLong() => crossover(emafast, emaslow)
strategy.entry(id = "MarketAlpha Long", long = true, when = window() and enterLong())
strategy.exit("Exit Long", from_entry = "MarketAlpha Long", profit = profitpoints,loss = stoplosspoints)

enterShort() => crossunder(emafast, emaslow)
strategy.entry(id = "MarketAlpha Short", long = false, when = window() and enterShort())
strategy.exit("Exit Short", from_entry = "MarketAlpha Short", profit = profitpoints,loss = stoplosspoints)



Plus de