MA Point tournant de la stratégie longue et courte

Auteur:ChaoZhang est là., Date: le 17 janvier 2024 à 11 h 56 min 53 s
Les étiquettes:

img

Résumé

Cette stratégie évalue la tendance en fonction des points tournants de la ligne de la moyenne mobile pour aller long au point tournant de la tendance haussière MA et court au point tournant de la tendance baissière MA.

Principe de stratégie

La stratégie utilise le prix=security ((tickerid, période, close) pour obtenir le prix de clôture comme prix pour l'analyse de la stratégie, puis calcule la SMA ou EMA en fonction de la sélection d'entrée de la longueur de la ligne moyenne ma1 pour obtenir le premier prix de la ligne moyenne1. roc1 est ensuite défini comme le taux de variation d'un jour du prix1. Par la tendance de seuilStrength1, il juge si la ligne moyenne a une hausse ou une baisse significative. Lorsque roc1 dépasse la tendanceStrength1, ma1up est défini comme vrai, indiquant que la ligne moyenne est en hausse. Lorsque roc1 est inférieur à la tendance négativeStrength1, ma1down est défini comme vrai, indiquant que la ligne moyenne est en baisse. Un signal long est émis lorsque la ligne moyenne monte et la ligne moyenne était en baisse la journée précédente. Un signal court est émis lorsque la ligne moyenne tombe et la ligne précédente était en hausse.

Ainsi, la stratégie utilise les points tournants de la ligne moyenne mobile pour capturer la variation de tendance du prix de l'action, qui appartient à une stratégie typique de suivi de tendance.

Analyse des avantages

Le plus grand avantage de cette stratégie est qu'elle utilise les points tournants de la ligne de moyenne mobile pour juger de la tendance, qui est une méthode d'analyse technique relativement mature et fiable dans le trading quantitatif.

  1. Utilisez des moyennes mobiles pour filtrer le bruit et capturer avec précision les points tournants de la tendance.

  2. Combinez des indicateurs de taux de variation pour déterminer l'intensité des renversements afin d'éviter de fausses ruptures.

  3. Cette stratégie ne comporte qu'une seule moyenne mobile et quelques paramètres faciles à comprendre et à maîtriser pour les utilisateurs.

Analyse des risques

Les principaux risques de cette stratégie sont les suivants:

  1. Cette stratégie est une stratégie de suivi de tendance qui ne peut que suivre les tendances et ne peut pas prédire les sommets et les bas du marché, manquant facilement des opportunités d'inversion instantanée.

  2. Problème de décalage des moyennes mobiles Les moyennes mobiles ont un certain décalage dans la réflexion des mouvements de prix, ce qui peut affecter la rapidité d'identification des renversements de tendance.

  3. L'optimisation préalable de paramètres inappropriée affecte directement les résultats. Les paramètres de cette stratégie tels que le nombre de périodes de la ligne moyenne et le seuil de gradient de changement de taux affecteront directement le profit, le tirage, etc. de la stratégie et doivent être soigneusement testés et optimisés.

Les solutions correspondantes sont:

  1. Combinez de manière appropriée d'autres indicateurs pour prédire les points tournants majeurs.

  2. Testez l'EMA et d'autres moyennes mobiles plus rapides au lieu de l'SMA.

  3. Il est recommandé d'optimiser plusieurs paramètres pour trouver les meilleurs paramètres.

Directions d'optimisation

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

  1. Ajoutez une deuxième ligne de moyenne mobile pour former une stratégie de croix dorée et de croix morte.

  2. En observant les changements de volume aux points de virage de la moyenne mobile, il peut vérifier davantage la fiabilité des points de virage.

  3. Ces indicateurs peuvent également aider à déterminer les tendances et à former des stratégies de combinaison avec des points tournants de moyenne mobile.

  4. Optimisation et dépistage des paramètres des conditions de marché multiples. Testez et optimisez séparément les paramètres des paramètres pour les combinaisons dans les conditions de marché haussier, baissier et de marché à plage.

  5. Utiliser des méthodes d'apprentissage automatique pour optimiser dynamiquement les paramètres dans différents environnements de marché et évaluer la robustesse des paramètres pour une optimisation dynamique.

Conclusion

En résumé, il s'agit d'une stratégie de suivi de tendance relativement mature avec une certaine valeur pratique. L'idée de la stratégie est simple et claire, avec peu de paramètres ajustables, ce qui est facile à comprendre et à tester. En même temps, il existe également des problèmes tels que le retard de suivi de tendance. Il est recommandé de combiner avec d'autres indicateurs, de tester et d'optimiser dans toutes les situations, ou d'introduire des mécanismes d'ajustement dynamique des paramètres pour améliorer davantage la stabilité et l'effet pratique de la stratégie.


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

//@version=3
strategy("MA Turning Point Strategy", overlay=true)
src = input(close, title="Source")

price = request.security(syminfo.tickerid, timeframe.period, src)
ma1 = input(25, title="1st MA Length")
type1 = input("SMA", "1st MA Type", options=["SMA", "EMA"])

price1 = if (type1 == "SMA")
    sma(price, ma1)
else
    ema(price, ma1)

plot(series=price1, style=line,  title="1st MA", color=blue, linewidth=2, transp=0)

lookback1 = input(1, "Lookback 1")
roc1 = roc(price1, lookback1)

ma1up = false
ma1down = false
ma2up = false
ma2down = false

ma1up := nz(ma1up[1])
ma1down := nz(ma1down[1])
ma2up := nz(ma2up[1])
ma2down := nz(ma2down[1])

trendStrength1 = input(2.5, title="Minimum slope magnitude * 100", type=float) * 0.01

if crossover(roc1, trendStrength1)
    ma1up := true
    ma1down := false
    
if crossunder(roc1, -trendStrength1) 
    ma1up := false
    ma1down := true

longCondition = ma1up and ma1down[1]
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = ma1down and ma1up[1]
if (shortCondition)
    strategy.entry("Short", strategy.short)



Plus de