Estrategia de negociación cuantitativa cruzada de la EMA

El autor:¿ Qué pasa?, Fecha: 2024-01-29 15:56:56
Las etiquetas:

img

Resumen general

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.

Estrategia lógica

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.

Análisis de ventajas

Esta estrategia tiene las siguientes ventajas:

  1. Utilizando el indicador EMA para filtrar los ruidos y captar las tendencias a medio y largo plazo sin problemas.

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

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

  4. Permitir únicamente operaciones largas, cortas, intradiarias y de posición para adaptarse a los diferentes tipos de operadores.

  5. Apoyo a múltiples activos comerciales como acciones, divisas, criptomonedas, etc.

Análisis de riesgos

Esta estrategia también tiene algunos riesgos potenciales:

  1. El indicador EMA tiene un efecto de retraso y puede perder algunos puntos de inflexión de tendencia a corto plazo.

  2. Las opciones inadecuadas de períodos de EMA más cortos y más largos pueden causar señales comerciales confusas.

  3. La tenencia de posiciones durante demasiado tiempo puede suponer fluctuaciones de mercado mayores.

  4. 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:

  1. Optimizar los parámetros de la EMA para encontrar la mejor combinación de períodos.

  2. Añadir otros indicadores como juicio auxiliar.

  3. Ajuste dinámico de stop loss y tomar ganancias.

  4. Intervención manual en condiciones inusuales del mercado.

Direcciones de optimización

Esta estrategia puede optimizarse en los siguientes aspectos:

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

  2. Añadir otros indicadores como MACD, KD para la sinergia de múltiples indicadores.

  3. Agregue modelos de aprendizaje automático para generar stop loss dinámicos y obtener ganancias.

  4. Conectar indicadores de RISK más avanzados para la ingeniería de características.

  5. Añadir componentes de negociación adaptativos para la auto-optimización de parámetros.

Resumen de las actividades

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")

Más.