Esta es una estrategia de trading cuantitativa de EMA cruzada. Utiliza dos EMA con períodos diferentes como señales de trading, yendo largo cuando el EMA de período más corto cruza el EMA de período más largo y yendo corto cuando el EMA de período más corto cruza por debajo del EMA de período más largo. Pertenece a las estrategias de seguimiento de tendencia. Esta estrategia también establece stop loss y take profit para controlar riesgos.
Esta estrategia utiliza la cruz de oro y la cruz de la muerte de las EMA como señales de negociación. Específicamente, calcula la EMA de período más corto y la EMA de período más largo respectivamente. Cuando la EMA de período más corto cruza la EMA de período más largo, genera una señal de compra para ir largo. Cuando la EMA de período más corto cruza por debajo de la EMA de período más largo, genera una señal de venta para ir corto. Por lo tanto, las tendencias móviles de las EMA determinan las direcciones de negociación.
Después de entrar en posiciones, la estrategia también establece stop loss y take profit simultáneamente. El stop loss es un cierto porcentaje del precio de entrada como la línea de stop loss. Si el precio toca la línea de stop loss, saldrá de la posición para stop loss. El take profit es un cierto porcentaje del precio de entrada como la línea de take profit. Si el precio toca la línea de take profit, saldrá de la posición para take profit.
Esta estrategia también permite elegir sólo el largo, sólo el corto, el comercio intradiario o el comercio de posiciones.
Esta estrategia tiene las siguientes ventajas:
Utilizando el indicador EMA para filtrar los ruidos y captar las tendencias a medio y largo plazo sin problemas.
Adopción de cruces de la EMA entre períodos más cortos y más largos como señales de negociación para evitar el exceso de negociación.
Establecer stop loss y tomar ganancias para controlar la relación riesgo-recompensa de cada operación, lo cual es bueno para la gestión del dinero.
Permitir únicamente operaciones largas, cortas, intradiarias y de posición para adaptarse a los diferentes tipos de operadores.
Apoyo a múltiples activos comerciales como acciones, divisas, criptomonedas, etc.
Esta estrategia también tiene algunos riesgos potenciales:
El indicador EMA tiene un efecto de retraso y puede perder algunos puntos de inflexión de tendencia a corto plazo.
Las opciones inadecuadas de períodos de EMA más cortos y más largos pueden causar señales comerciales confusas.
La tenencia de posiciones durante demasiado tiempo puede suponer fluctuaciones de mercado mayores.
El stop loss mecánico y el take profit pueden salir de posiciones demasiado pronto o reducir las ganancias prematuramente.
Las medidas de gestión de riesgos correspondientes:
Optimizar los parámetros de la EMA para encontrar la mejor combinación de períodos.
Añadir otros indicadores como juicio auxiliar.
Ajuste dinámico de stop loss y tomar ganancias.
Intervención manual en condiciones inusuales del mercado.
Esta estrategia puede optimizarse en los siguientes aspectos:
Optimización óptima de los parámetros de la EMA para encontrar combinaciones adecuadas de períodos más cortos y más largos para diferentes activos de negociación.
Añadir otros indicadores como MACD, KD para la sinergia de múltiples indicadores.
Agregue modelos de aprendizaje automático para generar stop loss dinámicos y obtener ganancias.
Conectar indicadores de RISK más avanzados para la ingeniería de características.
Añadir componentes de negociación adaptativos para la auto-optimización de parámetros.
En resumen, esta es una excelente tendencia siguiendo la plantilla de estrategia. Su principal fortaleza radica en el uso del indicador EMA para filtrar ruidos y lograr ganancias constantes, al tiempo que posee una gestión integral de riesgo-recompensa. A través de la optimización continua, esta estrategia puede convertirse en una estrategia cuantitativa universal en todos los mercados y vale la pena que los operadores aprendan y practiquen.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA Crossover Strategy by Vikrant Singh", overlay=true) // Input for EMA Lengths var bool runningPOS = false var float stopLossLevel = na var float targetLevel = na shortLength = input(11, title="Short EMA Length") longLength = input(21, title="Long EMA Length") // Input for Stop-Loss and Target stopLossPct = input(1, title="Stop-Loss (%)") targetPct = input(3, title="Target (%)") longOnly = input(true, title="Long Only") intraDay = input(true, title="intraday?") // Calculate EMAs emaShort = ta.ema(close, shortLength) emaLong = ta.ema(close, longLength) // Calculate crossover conditions crossoverCondition = ta.crossover(emaShort, emaLong) crossunderCondition = ta.crossunder(emaShort, emaLong) // Entry condition (long position just before crossover) if crossoverCondition and not runningPOS and longOnly and (hour <= 15) strategy.entry("Long", strategy.long) runningPOS := true stopLossLevel := close * (1 - stopLossPct / 100) targetLevel := close * (1 + targetPct / 100) //Entry condition (short position just before crossover) if crossunderCondition and not runningPOS and not longOnly and (hour <= 15) strategy.entry("Short", strategy.short) runningPOS := true stopLossLevel := close * (1 + stopLossPct / 100) targetLevel := close * (1 - targetPct / 100) // Exit conditions (square off on reverse crossover) //Exit long if (crossunderCondition or (low < stopLossLevel) or (high > targetLevel) ) and longOnly and runningPOS strategy.close("Long",comment = "Exit long")// ("Long", from_entry="Long",stop=stopLossLevel, limit=targetLevel) runningPOS := false //Exit short if (crossoverCondition or (high > stopLossLevel) or (low < targetLevel) ) and not longOnly and runningPOS strategy.close("Short", comment = "Exit Short") runningPOS := false if intraDay and runningPOS if (hour >= 15) strategy.close_all(comment = "Intraday square off") //strategy.close("Long",comment = "intraday square off") runningPOS := false // Plot EMAs plot(emaShort, color=color.blue, title="Short EMA") plot(emaLong, color=color.red, title="Long EMA")