Esta es una estrategia de asesor experto de 3 minutos para futuros (ES) E-mini S&P500. Genera señales comerciales calculando una serie de promedios móviles exponenciales y combinando condiciones específicas de patrón.
El indicador central de esta estrategia es la línea media T3. El T3 primero calcula un conjunto de promedios móviles exponenciales xe1 ~ x6 basados en el parámetro T3 definido por el usuario. Luego calcula el promedio ponderado de estos EMA utilizando coeficientes específicos como la línea media final T3.
Cuando el precio de cierre está por debajo de la línea promedio T3, se genera una señal de compra. Cuando el precio de cierre está por encima de la línea promedio T3, se genera una señal de venta. Además, la estrategia también juzga patrones de velas específicos como condiciones de entrada suplementarias. Las órdenes de negociación solo se enviarán cuando ambas condiciones de patrón y las señales T3 surjan al mismo tiempo.
La mayor fortaleza de esta estrategia radica en el diseño de múltiples filtros y la optimización de parámetros. Por un lado, la combinación de filtros de acción de precios y patrones de gráficos puede reducir las operaciones de ruido. Por otro lado, los parámetros clave como T3 y las reglas de evaluación de patrones se pueden optimizar para adaptarse a diferentes mercados y mejorar la precisión de entrada.
En comparación con las medias móviles simples, el mecanismo de triple suavizado del indicador T3 es eficaz para filtrar el ruido del mercado e identificar puntos de inversión de tendencia.
Los principales riesgos de esta estrategia provienen del ajuste inadecuado de los parámetros y del período de retención de gran tamaño. Si el parámetro T3 se establece demasiado grande, los indicadores se quedarán atrás del mercado; si se establece demasiado pequeño, aumenta la probabilidad de operaciones de ruido. Además, las operaciones de 3 minutos pueden enfrentar una gran pérdida sin un stop loss oportuno.
Para controlar los riesgos, lo primero es realizar pruebas de retroceso repetidas para determinar el rango óptimo de parámetros para diferentes productos.
Hay varias direcciones para mejorar la estrategia:
Optimizar el parámetro T3 para encontrar el rango óptimo para diferentes instrumentos de negociación
Mejorar la lógica de evaluación de patrones para aumentar la precisión del reconocimiento de patrones
Añadir mecanismos de stop loss más avanzados como el stop loss de seguimiento
Añadir módulo de gestión de dinero basado en el factor de ganancia o extracción máxima
Añadir un módulo de entrada asistida por aprendizaje automático
A través de estas mejoras, la estabilidad y la rentabilidad de la estrategia pueden mejorarse gradualmente.
Como estrategia de trading intradiario a corto plazo, esta estrategia tiene ventajas como un espacio de optimización enorme, múltiples filtros y una ejecución rápida de órdenes.
/*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)