Stratégie de croisement à double moyenne mobile

Auteur:ChaoZhang est là., Date: 21 septembre 2023 à 16h40
Les étiquettes:

Résumé

Cette stratégie est conçue sur la base de la croix d'or et de la croix de la mort des moyennes mobiles doubles. Il va long lorsque la moyenne mobile à court terme traverse au-dessus de la moyenne mobile à long terme, et ferme la position lorsque la moyenne mobile à court terme traverse au-dessous de la moyenne mobile à long terme.

La logique de la stratégie

La stratégie est principalement basée sur les indicateurs sma (close, 14) et sma (close, 28).

Définissez d'abord les moyennes mobiles courtes et longues:

short_ma = sma(close, 14)  
long_ma = sma(close, 28)

Ensuite, déterminez l'entrée et la sortie en fonction de la croix d'or et de la croix de la mort:

longCondition = crossover(short_ma, long_ma)
shortCondition = crossunder(short_ma, long_ma) 

Passer à long lorsque la courte MA croise la longue MA:

strategy.entry("Buy", strategy.long, when = longCondition)

Position de clôture lorsque le MA court passe sous le MA long:

strategy.close_all(when = shortCondition) 

La logique est simple et claire, en utilisant les croisements de MAs doubles pour déterminer les entrées et les sorties.

Analyse des avantages

  • Une logique simple, facile à utiliser pour les débutants.
  • Utilise les croisements MA pour déterminer les tendances
  • Périodes d'évaluation de l'efficacité personnalisables pour l'optimisation des paramètres
  • Permet de contrôler les pertes de transaction uniques par arrêt des pertes

Analyse des risques

  • Sensible aux fluctuations du marché, peut générer plusieurs transactions perdantes
  • La nature tardive des AMP pourrait manquer les points de renversement des prix
  • Prédisposé à être piégé près des points de passage de l'AM
  • Besoin d'optimiser les périodes d'AM, différentes périodes peuvent conduire à des résultats différents
  • Incapacité de réduire rapidement les pertes lorsque la tendance change violemment

Directions d'optimisation

La stratégie peut être optimisée dans les aspects suivants:

  1. Optimiser les périodes de mise en marché afin de trouver la meilleure combinaison

Testez différentes périodes d'AM courtes et longues, telles que (5, 10), (10, 20), (20, 60) etc. pour trouver la combinaison optimale.

  1. Ajouter des filtres pour éviter les faux signaux

Ajoutez des filtres tels que le volume des transactions, l'écart de prix, etc. près des croisements MA pour éviter des transactions excessives sur différents marchés.

  1. Incorporer le stop-loss

Le prix de l'opération est calculé en fonction de la valeur de l'opération.

  1. Combiner avec d'autres indicateurs

Ajoutez des indicateurs auxiliaires tels que MACD, KDJ, etc. pour améliorer les performances de la stratégie.

  1. Optimiser les points d'entrée

Trouvez de meilleurs points d'entrée près des MA au lieu d'entrer directement au croisement.

Résumé

La stratégie de double MA est simple à utiliser pour les débutants. Mais elle est sensible aux fluctuations du marché et présente des risques de pertes. Nous pouvons l'améliorer en optimisant les paramètres, en ajoutant des filtres, en incorporant un stop loss, en combinant d'autres indicateurs, etc. Elle peut bien fonctionner dans des tendances fortes, mais doit être utilisée avec prudence ou un stop loss approprié dans les marchés en évolution.
Je ne sais pas.


/*backtest
start: 2023-08-21 00:00:00
end: 2023-09-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=2
// strategy("Tester", pyramiding = 50, default_qty_type = strategy.cash, default_qty_value = 20, initial_capital = 2000, commission_type = strategy.commission.percent, commission_value = 0.25)

minGainPercent = input(0.6)
gainMultiplier = minGainPercent * 0.01 + 1


longCondition = crossover(sma(close, 14), sma(close, 28))
shortCondition = crossunder(sma(close, 14), sma(close, 28))


avg_protection = input(1)
gain_protection = input(1)


strategy.entry("Buy", strategy.long, when = longCondition    and (avg_protection >= 1 ? (na(strategy.position_avg_price) ? true : close <= strategy.position_avg_price) : true))
strategy.close_all(when = shortCondition  and (gain_protection >=1 ? (close >= gainMultiplier * strategy.position_avg_price) : true))

Plus de