La stratégie de croisement des moyennes mobiles doubles - EMA9/20

Auteur:ChaoZhang est là., Date: 2024-03-08 15h22min
Les étiquettes:

img

Vue d'ensemble de la stratégie

La stratégie de croisement des moyennes mobiles doubles - EMA9/20 est une stratégie de trading quantitative basée sur le croisement de deux moyennes mobiles exponentielles (EMA). Cette stratégie utilise l'EMA de 9 jours et l'EMA de 20 jours comme signaux de trading, générant des signaux d'achat ou de vente lorsque les deux moyennes mobiles se croisent.

Principes de stratégie

Le principe de base de cette stratégie est de capturer les tendances du marché en utilisant le croisement de deux moyennes mobiles avec des périodes différentes. Lorsque la moyenne mobile à court terme (EMA de 9 jours) dépasse la moyenne mobile à long terme (EMA de 20 jours), elle indique une tendance à la hausse potentielle sur le marché et la stratégie génère un signal d'achat. Inversement, lorsque la moyenne mobile à court terme dépasse la moyenne mobile à long terme, elle suggère une tendance à la baisse potentielle et la stratégie génère un signal de vente.

En plus des signaux de croisement de la moyenne mobile, la stratégie intègre également le croisement entre le prix et la moyenne mobile à court terme (EMA de 9 jours) comme signal auxiliaire. Lorsque le prix dépasse la EMA de 9 jours, il génère également un signal d'achat, et lorsque le prix dépasse la EMA de 9 jours, il génère un signal de vente. Cela permet de capturer plus rapidement les changements dans les tendances du marché.

Pour contrôler le risque, la stratégie utilise un mécanisme de trailing stop. Une fois qu'une transaction entre dans un état rentable, le trailing stop ajuste continuellement la position stop-loss en fonction des mouvements de prix jusqu'à ce que le prix dépasse le niveau stop-loss dans la direction opposée, bloquant ainsi les profits tout en limitant les pertes potentielles.

Les avantages de la stratégie

  1. Simplicité: la stratégie est basée sur le principe classique des moyennes croisées mobiles, ce qui la rend facile à comprendre et à mettre en œuvre.

  2. Suivi des tendances: en utilisant le croisement de deux moyennes mobiles avec des périodes différentes, la stratégie peut capturer efficacement les principales tendances du marché.

  3. Stop-loss rapide: l'introduction du mécanisme trailing stop permet de clôturer rapidement les positions lorsque la tendance s'inverse, ce qui permet de contrôler le risque à la baisse.

  4. Flexibilité des paramètres: les paramètres de la stratégie (tels que les périodes moyennes mobiles, les points de stop-loss, etc.) peuvent être optimisés et ajustés en fonction des différents marchés et instruments afin de s'adapter aux différentes conditions du marché.

Risques stratégiques

  1. Commercialisation fréquente: la stratégie utilisant à la fois des signaux de croisement des moyennes mobiles et des prix croisés peut entraîner une fréquence de négociation plus élevée, ce qui augmente les coûts de négociation.

  2. Marchés agités: Dans les marchés agités ou limités, la stratégie peut générer plus de faux signaux, ce qui entraîne une réduction de la rentabilité.

  3. Sensibilité aux paramètres: la performance de la stratégie peut être sensible à la sélection des paramètres et différents paramètres peuvent donner des résultats significativement différents.

Directions d'optimisation

  1. Filtrage des signaux: en plus des signaux de croisement des moyennes mobiles et des signaux de croisement des prix, introduisez d'autres indicateurs techniques (tels que RSI, MACD, etc.) comme conditions de filtrage pour réduire les faux signaux.

  2. Paramètres dynamiques: ajuster dynamiquement les paramètres de stratégie (tels que les périodes moyennes mobiles, les points de stop-loss, etc.) en fonction de facteurs tels que la volatilité du marché et la force de la tendance afin de s'adapter aux différents états du marché.

  3. Taille des positions: ajustez dynamiquement la taille des positions en fonction des tendances du marché et de la force des signaux, en augmentant la taille des positions lorsque la force de la tendance est élevée et en réduisant la taille des positions lorsque les tendances ne sont pas claires ou que les signaux sont plus faibles.

  4. Adaptation multi-instruments: étendre la stratégie à plusieurs instruments et marchés et, par le biais de la diversification et de l'analyse des corrélations, réduire le risque global et améliorer la stabilité des rendements.

Résumé

La stratégie EMA9/20 est une stratégie de trading quantitative simple et pratique qui capture les tendances du marché par le croisement de deux moyennes mobiles avec des périodes et des croisements de prix différents, tout en utilisant des trailing stops pour contrôler le risque. La stratégie a une logique claire, est facile à comprendre et à mettre en œuvre, ce qui la rend adaptée aux débutants pour apprendre et utiliser. Cependant, la stratégie présente également certaines limitations, telles qu'une mauvaise performance sur les marchés agités et une sensibilité à la sélection des paramètres. Par conséquent, dans l'application pratique, il est nécessaire d'optimiser et d'améliorer la stratégie en fonction des caractéristiques spécifiques du marché et de l'instrument, telles que l'introduction du filtrage des signaux, l'ajustement dynamique des paramètres, le dimensionnement des positions et d'autres méthodes pour améliorer la rentabilité et la stabilité de la stratégie de trading.


/*backtest
start: 2023-03-02 00:00:00
end: 2024-03-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=5
strategy(title = "EMAs 9 / 20",
		 shorttitle = '9/20 EMAs', 
		 initial_capital = 1000,
		 overlay = true, 
		 default_qty_type = strategy.fixed,
		 commission_type = strategy.commission.cash_per_contract,
		 commission_value = 0.35,
		 default_qty_value = 1)


int trailOffset = 10
int trailPoints = 15


series float oEma9 = ta.ema(ohlc4, 9)
series float oEma20 = ta.ema(ohlc4, 20)

series bool closeCrossoverEma9 = ta.crossover(close, oEma9)
series bool closeCrossunderEma9 = ta.crossover(close, oEma9)

series bool nineCrossover20 = ta.crossover(oEma9, oEma20)
series bool nineCrossunder20 = ta.crossunder(oEma9, oEma20)

//Entry Exits

if nineCrossover20
    strategy.entry("Long 9Cross20", strategy.long, 2)
else if closeCrossoverEma9
    strategy.entry("Long 9CrossClose", strategy.long, 2)
    strategy.exit("Long 9CrossClose Exit", from_entry = "Long 9CrossClose", trail_points = trailPoints, trail_offset = trailOffset)
else if nineCrossunder20
    strategy.close("Long 9Cross20")
    
    

if nineCrossunder20
    strategy.entry("Short 9Cross20", strategy.short, 2)
else if closeCrossunderEma9
    strategy.entry("Short 9CrossClose", strategy.short, 2)
    strategy.exit("Short 9CrossClose Exit", from_entry = "Short 9CrossClose", trail_points = trailPoints, trail_offset = trailOffset)
else if nineCrossover20
    strategy.close("Short 9Cross20")
    


Plus de