Estrategia de cruce de dos medias móviles

El autor:¿ Qué pasa?, Fecha: 2024-02-27 16:21:02
Las etiquetas:

img

Resumen general

Esta estrategia es una típica estrategia de cruce de promedios móviles que utiliza dos conjuntos de promedios móviles, uno rápido y otro lento. Cuando el promedio móvil rápido cruza el promedio móvil lento, se genera una señal de compra. Cuando el rápido cruza por debajo del lento, se genera una señal de venta. La estrategia utiliza tanto EMA como SMA para los promedios móviles, con EMA como las líneas rápidas y SMA como las líneas lentas.

Estrategia lógica

La lógica central se basa en los cruces entre las líneas de promedio móvil rápido y lento para determinar entradas y salidas.

Específicamente, se calculan dos conjuntos de medias móviles rápidas y lentas:

  • 1er EMA rápido, de 8 días de duración
  • 2a EMA rápida, de duración de 21 días
  • 1a SMA lenta, de 50 días de duración
  • 2a SMA lenta, con una duración de 200 días

Luego se comprueban los cruces entre las EMA rápidas y las SMA lentas:

  • Si la EMA de 8 días se cruza por encima de la SMA de 50 días, la señal de cruz dorada
  • Si la EMA de 8 días se cruza por debajo de la SMA de 50 días, la señal de cruce de muerte

Para filtrar las señales falsas, se requiere un segundo cruce EMA/SMA para la confirmación:

  • Solo cuando la EMA de 21 días también cruza la SMA de 50 días o menos, se activa la señal de negociación.

Al requerir dos cruces MA rápidos / lentos, se pueden filtrar muchas señales falsas y mejorar la confiabilidad.

Cuando compras activadores de señal, ve largo. Cuando vendes activadores de señal, ve corto.

La estrategia también establece la toma de ganancias y el stop loss basados en el porcentaje de entrada del precio de entrada una vez en una posición.

Análisis de ventajas

Las ventajas de esta estrategia incluyen:

  1. El diseño de doble MA filtra las señales falsas y mejora la precisión
  2. La combinación de EMA y SMA utiliza la sensibilidad de EMA y la suavidad de SMA.
  3. El riesgo de pérdida se calcula de acuerdo con el método de cálculo de las pérdidas.
  4. Lógica sencilla fácil de entender y modificar
  5. Los parámetros personalizables se adaptan a diferentes entornos de mercado

Análisis de riesgos

Riesgos de la estrategia:

  1. Los estratos MA tienden a producir muchas pequeñas ganancias/pérdidas en mercados agitados
  2. Puede enfrentar grandes pérdidas en mercados de fuerte tendencia
  3. El mal ajuste de los parámetros también conduce a un bajo rendimiento

Para controlar los riesgos:

  1. Ajuste de parámetros para las diferentes condiciones del mercado
  2. Optimización basada en pruebas de retroceso para adaptarse al mercado objetivo
  3. Utilizar el stop loss para limitar el tamaño de la pérdida

Direcciones de mejora

La estrategia se puede optimizar aún más mediante:

  1. Prueba de más combinaciones de MA rápido/lento para encontrar el mejor
  2. Utilizando el aprendizaje automático o algoritmos genéticos para optimizar automáticamente
  3. Añadir un filtro de tendencia para evitar operaciones contrarias a la tendencia
  4. Añadir un stop loss para bloquear las ganancias
  5. Incorporando filtros de volumen o volatilidad para confirmar las señales
  6. Combinación con otros estratos/productos para utilizar una baja correlación

Conclusión

En resumen, la doble estrategia de cruce de MA genera señales con cruces de MA rápidos / lentos, conjuntos toman ganancias y stop loss para controlar riesgos, y es simple, intuitiva y fácil de implementar.


/*backtest
start: 2023-02-20 00:00:00
end: 2024-02-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © JMLSlop

//@version=4

src = close
strategy("Crossover moving averages", shorttitle="Cross MA-EMA", overlay=true, calc_on_order_fills=false)

// first fast EMA
len = input(8, "Length", type=input.integer, minval=1)
doma1 = input(true, title="EMA")
out1 = ema(src, len) 

//Second fast EMA
len2 = input(21, minval=1, title="Length")
doma2 = input(true, title="EMA")
out2 = ema(src, len2)

//First slow MA
len3 = input(50, minval=1, title="Length")
doma3 = input(true, title="SMA")
out3 = sma(src, len3)

//Second slow MA
len4 = input(200, minval=1, title="Length")
doma4 = input(true, title="SMA")
out4 = sma(src, len4)

// Profit
profit = input(8, "Profit/lost %", type=input.float, minval=1) * 0.01


plot(doma1 and out1 ? out1: na, color=color.blue, linewidth=1, title="1st EMA")
plot(doma2 and out2 ? out2: na, color=color.red, linewidth=1, title="2nd EMA")
plot(doma3 and out3 ? out3: na, color=color.green, linewidth=2, title="1st MA")
plot(doma4 and out4 ? out4: na, color=color.orange, linewidth=3, title="2nd MA")

// Orders config
takeProfitPrice =
     (strategy.position_size > 0) ? strategy.position_avg_price + open*profit : (strategy.position_size < 0) ? strategy.position_avg_price - (open*profit) : na

longStopPrice  = strategy.position_avg_price * (1 - profit)
shortStopPrice = strategy.position_avg_price * (1 + profit)

longCondition2 = (out2>out3 and (crossover(out1, out4) or crossover(out1[1], out4[1]) or crossover(out1[2], out4[2]) or (crossover(out1[3], out4[3]))) or (out2>out3 and (crossover(out1, out3) or crossover(out1[1], out3[1]) or crossover(out1[2], out3[2]) or crossover(out1[3], out3[3]))))
if (longCondition2)
    strategy.entry("Enter L", strategy.long)

shortCondition2 = (out2<out3 and (crossunder(out1, out4) or crossunder(out1[1], out4[1]) or crossunder(out1[2], out4[2]) or crossunder(out1[3], out4[3]))) or (out2<out3 and (crossunder(out1, out3) or crossunder(out1[1], out3[1]) or crossunder(out1[2], out3[2]) or crossunder(out1[3], out3[3])))
if (shortCondition2)
    strategy.entry("Enter S", strategy.short)


if (strategy.position_size > 0)
    strategy.exit("Exit L", limit=takeProfitPrice, stop=longStopPrice)

if (strategy.position_size < 0)
    strategy.exit("Exit S", limit=takeProfitPrice, stop=shortStopPrice)


Más.