Il s'agit d'une stratégie d'experts-conseillers de 3 minutes pour les contrats à terme (ES) E-mini S&P500. Il génère des signaux de négociation en calculant une série de moyennes mobiles exponentielles et en combinant des conditions de modèle spécifiques.
L'indicateur de base de cette stratégie est la ligne moyenne T3. Le T3 calcule d'abord un ensemble de moyennes mobiles exponentielles xe1 ~ x6 basé sur le paramètre T3 défini par l'utilisateur. Il calcule ensuite la moyenne pondérée de ces EMA en utilisant des coefficients spécifiques comme ligne moyenne finale T3.
Lorsque le prix de clôture est inférieur à la ligne moyenne T3, un signal d'achat est généré. Lorsque le prix de clôture est supérieur à la ligne moyenne T3, un signal de vente est généré. En outre, la stratégie juge également des modèles de bougies spécifiques comme conditions d'entrée supplémentaires. Les ordres de négociation ne seront envoyés que lorsque les deux conditions de modèle et les signaux T3 émergeront en même temps.
La plus grande force de cette stratégie réside dans la conception de filtres multiples et l'optimisation des paramètres. D'une part, la combinaison des filtres d'action des prix et des schémas graphiques peut réduire le bruit des transactions. D'autre part, des paramètres clés tels que T3 et les règles de jugement des schémas peuvent être optimisés pour s'adapter à différents marchés et améliorer la précision d'entrée.
Comparé aux moyennes mobiles simples, le mécanisme de triple lissage de l'indicateur T3 est efficace pour filtrer le bruit du marché et identifier les points d'inversion de tendance.
Les principaux risques de cette stratégie proviennent d'un réglage inapproprié des paramètres et d'une période de détention surdimensionnée. Si le paramètre T3 est réglé trop large, les indicateurs seront en retard sur le marché; s'il est réglé trop petit, cela augmente la probabilité de transactions bruyantes.
Pour contrôler les risques, la première chose à faire est de refaire plusieurs tests pour déterminer la plage de paramètres optimale pour différents produits.
Il existe plusieurs pistes d'amélioration de la stratégie:
Optimiser le paramètre T3 pour trouver la fourchette optimale pour les différents instruments de négociation
Améliorer la logique de jugement des modèles pour accroître la précision de la reconnaissance des modèles
Ajoutez des mécanismes de stop loss plus avancés comme le stop loss de suivi
Ajouter un module de gestion de l'argent basé sur le facteur de profit ou le tirage maximal
Ajouter un module d'entrée assistée par apprentissage automatique
Grâce à ces améliorations, la stabilité et la rentabilité de la stratégie peuvent être améliorées progressivement.
En tant que stratégie de trading intraday à court terme, cette stratégie présente des avantages tels qu'un espace d'optimisation énorme, plusieurs filtres et une exécution rapide des ordres.
/*backtest start: 2023-11-16 00:00:00 end: 2023-11-23 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("ES 3m Short Only (Triple RED)", overlay=true) // Alert Message '{{strategy.order.alert_message}}' //3min T3 = input(150)//to 600 xPrice3 = close xe1 = ta.ema(xPrice3, T3) xe2 = ta.ema(xe1, T3) xe3 = ta.ema(xe2, T3) xe4 = ta.ema(xe3, T3) xe5 = ta.ema(xe4, T3) xe6 = ta.ema(xe5, T3) b3 = 0.7 c1 = -b3*b3*b3 c2 = 3*b3*b3+3*b3*b3*b3 c3 = -6*b3*b3-3*b3-3*b3*b3*b3 c4 = 1+3*b3+b3*b3*b3+3*b3*b3 nT3Average = c1 * xe6 + c2 * xe5 + c3 * xe4 + c4 * xe3 // Buy Signal - Price is below T3 Average buySignal3 = xPrice3 < nT3Average sellSignal3 = xPrice3 > nT3Average //NinjaTrader Settings. acct = "Sim101" ticker = "ES 12-23" qty = 1 takeProfitTicks = 4 stopLossTicks = 16 tickSize = 0.25 takeProfitShort = close - takeProfitTicks * tickSize stopLossShort = close + stopLossTicks * tickSize OCOMarketShort = '{ "alert": "OCO Market Short", "account": "' + str.tostring(acct) + '", "ticker": "' + str.tostring(ticker) + '", "qty": "' + str.tostring(qty) + '", "take_profit_price": "' + str.tostring(takeProfitShort) + '", "stop_price": "' + str.tostring(stopLossShort) + '", "tif": "DAY" }' CloseAll = '{ "alert": "Close All", "account": "' + str.tostring(acct) + '", "ticker": "' + str.tostring(ticker) + '" }' IsUp = close > open IsDown = close < open PatternPlot = IsDown[2] and IsDown[1] and IsDown and close[1] <= high[0] and close[1] > close[0] and low[1] > low[0] and high[2] > high[1] and low[2] <= low[1] if (PatternPlot and sellSignal3) strategy.entry('Short', strategy.short, alert_message=OCOMarketShort) strategy.exit('Close Short', 'Short', profit=takeProfitTicks, loss=stopLossTicks, alert_message=CloseAll) //plotshape(PatternPlot, title="Custom Pattern", style=shape.circle, location=location.abovebar, color=color.red, size=size.small)