Stratégie de conseiller expert de 3 minutes

Auteur:ChaoZhang est là., Date: 2023-11-24 15:58:01 Je vous en prie.
Les étiquettes:

img

Résumé

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.

Principaux

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.

Points forts

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.

Risques et solutions

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.

Améliorations

Il existe plusieurs pistes d'amélioration de la stratégie:

  1. Optimiser le paramètre T3 pour trouver la fourchette optimale pour les différents instruments de négociation

  2. Améliorer la logique de jugement des modèles pour accroître la précision de la reconnaissance des modèles

  3. Ajoutez des mécanismes de stop loss plus avancés comme le stop loss de suivi

  4. Ajouter un module de gestion de l'argent basé sur le facteur de profit ou le tirage maximal

  5. 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.

Conclusion

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)


Plus de