Stratégie de suivi des moyennes mobiles dynamiques

Auteur:ChaoZhang est là., Date: 2023-12-04 15:38:09 Je vous en prie.
Les étiquettes:

img

Résumé

Cette stratégie utilise l'approche expliquée par Larry Williams dans son livre Secrets à long terme pour le trading à court terme, qui utilise deux moyennes mobiles à 3 périodes, l'une représentant les hauts et l'autre les bas. Lorsque le prix tombe en dessous de l'EMA des bas de 3 périodes, nous avons un signal long. Le commerce est fermé lorsque le prix se ferme au-dessus de l'EMA des hauts de 3 périodes.

La logique de la stratégie

La logique de base de cette stratégie est de calculer les moyennes mobiles de 3 périodes des prix hauts et bas. Plus précisément, elle utilise la fonction ta.ema pour calculer les moyennes mobiles exponentielles des prix hauts et bas sur les 3 barres les plus récentes afin de générer des niveaux de support et de résistance dynamiques. Lorsque le prix dépasse les bas EMA, cela indique une tendance à la baisse, nous pouvons donc aller long. Lorsque le prix remonte au-dessus des hauts EMA, cela suggère que la tendance haussière est terminée et que nous devrions fermer notre position. De cette façon, la stratégie peut suivre dynamiquement les changements de prix et atteindre des prix d'achat bas et de vente élevés.

Analyse des avantages

Le plus grand avantage de cette stratégie est sa simplicité et son dynamisme. Comparé à la prise de moyennes mobiles de hauts / bas de période fixe, cette stratégie utilise des moyennes mobiles à court terme continues, qui peuvent capturer plus sensiblement et en temps opportun les changements de prix. Cela lui permet d'identifier rapidement les opportunités de trading pour entrer et sortir du marché.

Risques et solutions

Le principal risque de cette stratégie est qu'elle réagit plus lentement à des événements soudains comme des nouvelles importantes. Parce que sa période de moyenne mobile est très courte, il faut un certain temps pour ajuster les niveaux de moyenne mobile lorsqu'il y a une forte hausse des prix. Cela peut entraîner des pertes ou des opportunités manquées. En outre, la sursensibilité peut entraîner de mauvaises transactions. Pour atténuer ces risques, nous pouvons augmenter de manière appropriée la période de moyenne mobile ou ajouter des filtres pour éviter de faux signaux.

Directions d'optimisation

Il y a encore beaucoup de place pour optimiser cette stratégie. Premièrement, des oscillateurs peuvent être incorporés pour filtrer les signaux. Deuxièmement, une logique de stop-loss pourrait être ajoutée pour contrôler les risques. De plus, nous pouvons ajuster dynamiquement les paramètres de moyenne mobile en fonction de l'état du marché, en utilisant des périodes plus longues dans les tendances et des périodes plus courtes dans les marchés variables. En outre, l'analyse multi-temporelle, la reconnaissance de modèles avec l'apprentissage automatique, etc. peuvent aider à améliorer les performances de la stratégie.

Conclusion

En résumé, il s'agit d'une stratégie très simple et pratique, qui identifie les tendances à l'aide de moyennes mobiles hautes / basses à court terme. Ses avantages sont un fort dynamisme, un faible calcul et une grande réactivité, adaptés au trading actif.


/*backtest
start: 2023-11-26 00:00:00
end: 2023-12-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(
     "Larry Williams 3 Period EMAs strategy",
     overlay=true,
     calc_on_every_tick=true,
     currency=currency.USD
     )

// Time range for backtesting
startDate = input.int(title="Start Date", defval=1, minval=1, maxval=31)
startMonth = input.int(title="Start Month", defval=1, minval=1, maxval=12)
startYear = input.int(title="Start Year", defval=2018, minval=1800, maxval=2100)

endDate = input.int(title="End Date", defval=31, minval=1, maxval=31)
endMonth = input.int(title="End Month", defval=12, minval=1, maxval=12)
endYear = input.int(title="End Year", defval=2041, minval=1800, maxval=2100)

inDateRange = (time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0)) and
     (time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0))

// EMA
period = 3

emaH = ta.ema(high, period)
emaL = ta.ema(low, period)

// PLOT:
// Draw the EMA lines on the chart
plot(series=emaH, color=color.green, linewidth=2)
plot(series=emaL, color=color.red, linewidth=2)

// Conditions
if(inDateRange and close < emaL)
    strategy.entry("Long", strategy.long, comment="Long")
if(close > emaH)
    strategy.close("Long", comment="Close Long")

// Uncomment to enable short entries
//if(inDateRange and close > emaH)                                    
//    strategy.entry("Short", strategy.short, comment="Short")    
//if(close < emaL)
//    strategy.close("Short", comment="Close Short")

Plus de