Cette stratégie utilise l'approche expliquée par Larry Williams dans son livre
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.
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é.
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.
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.
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")