Cette stratégie combine le système de croisement de la moyenne mobile et l'indicateur MACD pour mettre en œuvre une stratégie de trading automatisée qui va long dans les périodes de tendance et prend des profits/arrête à l'inversion de tendance.
La stratégie est principalement basée sur la combinaison du système de croisement des moyennes mobiles et de l'indicateur MACD. Plus précisément, elle va long lorsque la moyenne mobile à court terme traverse la moyenne mobile à long terme et court lorsque la moyenne mobile à court terme traverse en dessous de la moyenne mobile à long terme.
En même temps, l'indicateur MACD est utilisé pour confirmer les signaux de trading. Ce n'est que lorsque la ligne MACD DIFF franchit la ligne DEA qu'un signal long sera déclenché.
En outre, le RSI est utilisé pour éviter des positions courtes excessives, une position courte n'étant ouverte que lorsque le RSI est inférieur à 30%.
Pour les stop-loss, la stratégie adopte une méthode de stop-loss à pourcentage fixe, avec le stop-loss long fixé à 1% sous le prix d'entrée et le stop-loss court fixé à 1% au-dessus du prix d'entrée.
Le plus grand avantage de cette stratégie est d'utiliser le système de moyenne mobile pour déterminer la direction de la tendance principale, puis d'utiliser l'indicateur MACD pour les signaux d'entrée, ce qui peut filtrer efficacement les fausses ruptures.
En outre, le pourcentage fixe d'arrêt des pertes et la prise de profit mobile aident à maintenir les pertes dans des limites acceptables, tout en assurant des bénéfices tôt lorsque cela est possible.
Les principaux risques de cette stratégie sont les suivants:
Le système de croisement des moyennes mobiles présente des problèmes de retard, ce qui peut entraîner un retard d'entrée et des points d'entrée manquants.
L'indicateur MACD est susceptible de générer de faux signaux. D'autres filtres tels que KDJ peuvent être ajoutés.
Le pourcentage de stop loss fixe ne peut parfois pas être exécuté en temps opportun.
La stratégie peut avoir des retombées importantes et la taille des positions pourrait être réduite pour atténuer le risque.
La stratégie n'est que de longue durée et ne peut pas tirer profit des tendances à la baisse.
La stratégie peut être améliorée dans les domaines suivants:
Optimiser les paramètres MA pour des signaux plus précis.
L'indicateur de volatilité est utilisé pour déterminer le taux de volatilité de l'indicateur de volatilité.
Testez des méthodes de stop loss dynamiques telles que les stops de trailing et les stops ATR pour mieux contrôler les risques.
Ajouter des mécanismes de shorting pour que la stratégie puisse tirer profit des tendances à la baisse.
Optimiser la taille des positions et la gestion des fonds pour réduire le tirage maximal.
Les performances de test sur différents produits et classes d'actifs pour élargir l'applicabilité.
Incorporer des algorithmes d'apprentissage automatique pour optimiser automatiquement les paramètres et réduire l'intervention manuelle.
Cette stratégie combine les atouts du système de croisement de moyenne mobile et de l'indicateur MACD pour une rentabilité élevée. Des améliorations supplémentaires dans le réglage des paramètres, des filtres supplémentaires, des mécanismes de stop loss et des mécanismes de raccourcissement peuvent améliorer la stabilité et réduire les retraits. L'incorporation de l'apprentissage automatique peut également élargir l'applicabilité.
/*backtest start: 2023-10-16 00:00:00 end: 2023-10-23 00:00:00 period: 2m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Toxic_Cat_ //@version=5 // strategy("MA_50_200_CROSS", overlay=true, margin_long=100, margin_short=100) EMA21 = ta.ema(close, 21) EMA100 = ta.ema(close, 100) [macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9) plot(EMA21) plot(EMA100, color = color.orange) openLong = ta.crossover(EMA21, EMA100) and macdLine > signalLine openShort = ta.crossunder(EMA21, EMA100) and ta.rsi(close, 14) <= 33 crossunderMACD = ta.crossunder(macdLine, signalLine) if (strategy.opentrades < 1) if openLong strategy.entry("L",strategy.long, 1) if openShort strategy.entry("S",strategy.short, 1) // slose long // if ((strategy.opentrades.entry_price(0) + strategy.opentrades.entry_price(0)*0.03) <= open) // strategy.exit("profit L", "L", limit = close) // else if strategy.opentrades.entry_price(0) - strategy.opentrades.entry_price(0)*0.01 >= open or crossunderMACD // strategy.exit("loss L", "L", stop = close) // slose short // if (strategy.opentrades.entry_price(0) - strategy.opentrades.entry_price(0)*0.03) >= open // strategy.exit("profit S", "S", limit = (strategy.opentrades.entry_price(0) - strategy.opentrades.entry_price(0)*0.03)) // else if strategy.opentrades.entry_price(0) + strategy.opentrades.entry_price(0)*0.01 <= open // strategy.exit("loss S", "S", stop = (strategy.opentrades.entry_price(0) + strategy.opentrades.entry_price(0)*0.01))