Estrategia de cruce de dos medias móviles

El autor:¿ Qué pasa?, Fecha: 2023-09-21 16:40:01
Las etiquetas:

Resumen general

Esta estrategia está diseñada sobre la base de la cruz de oro y la cruz de la muerte de los promedios móviles duales. Se hace largo cuando el promedio móvil de corto período cruza por encima del promedio móvil de largo período, y cierra la posición cuando el promedio móvil de corto período cruza por debajo del promedio móvil de largo período.

Estrategia lógica

La estrategia se basa principalmente en los indicadores sma (cerca de 14) y sma (cerca de 28).

En primer lugar, definir las medias móviles cortas y largas:

short_ma = sma(close, 14)  
long_ma = sma(close, 28)

Luego determinar la entrada y salida basado en la cruz de oro y la cruz de la muerte:

longCondition = crossover(short_ma, long_ma)
shortCondition = crossunder(short_ma, long_ma) 

Si el valor del valor de mercado de la entidad es inferior al valor del valor de mercado de la entidad, el valor de mercado de la entidad es igual al valor del valor de mercado de la entidad.

strategy.entry("Buy", strategy.long, when = longCondition)

Posición cerrada cuando el MA corto se cruza por debajo del MA largo:

strategy.close_all(when = shortCondition) 

La lógica es simple y clara, utilizando los cruces de dos MAs para determinar entradas y salidas.

Análisis de ventajas

  • Lógica sencilla, fácil de usar para principiantes
  • Utiliza los cruces de MA para determinar las tendencias
  • Períodos MA personalizables para la optimización de parámetros
  • Permite detener pérdidas para controlar pérdidas de operaciones individuales

Análisis de riesgos

  • Sensible a las fluctuaciones del mercado, puede generar múltiples operaciones perdedoras
  • La naturaleza tardía de las AMP, puede perder los puntos de reversión de precios
  • Es propenso a quedar atrapado cerca de los puntos de cruce de la MA
  • Necesidad de optimizar los períodos de MA, diferentes períodos pueden dar lugar a diferentes resultados
  • Incapacidad para reducir rápidamente las pérdidas cuando la tendencia cambia violentamente

Direcciones de optimización

La estrategia se puede optimizar en los siguientes aspectos:

  1. Optimizar los períodos de admisión para encontrar la mejor combinación

Se realizarán ensayos de diferentes períodos MA cortos y largos, tales como (5, 10), (10, 20), (20, 60), etc., para encontrar la combinación óptima.

  1. Añadir filtros para evitar señales falsas

Añadir filtros como el volumen de negociación, la brecha de precios, etc. cerca de los cruces de MA para evitar operaciones excesivas en mercados variados.

  1. Incorporar el stop loss

Establecer el precio de stop loss o utilizar MA como línea de stop loss para controlar la pérdida de una sola operación.

  1. Combinar con otros indicadores

Añadir indicadores auxiliares como MACD, KDJ, etc. para mejorar el rendimiento de la estrategia.

  1. Optimización de los puntos de entrada

Encuentre mejores puntos de entrada cerca de los puntos de intersección en lugar de entrar directamente en el cruce.

Resumen de las actividades

La estrategia de doble MA es sencilla de usar para principiantes. Pero es sensible a las fluctuaciones del mercado y tiene riesgos de pérdidas. Podemos mejorarla optimizando parámetros, agregando filtros, incorporando stop loss, combinando otros indicadores, etc. Puede funcionar bien en tendencias fuertes, pero debe usarse con precaución o stop loss adecuado en mercados de rango.
[/trans] ¿Qué quieres decir?


/*backtest
start: 2023-08-21 00:00:00
end: 2023-09-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=2
// strategy("Tester", pyramiding = 50, default_qty_type = strategy.cash, default_qty_value = 20, initial_capital = 2000, commission_type = strategy.commission.percent, commission_value = 0.25)

minGainPercent = input(0.6)
gainMultiplier = minGainPercent * 0.01 + 1


longCondition = crossover(sma(close, 14), sma(close, 28))
shortCondition = crossunder(sma(close, 14), sma(close, 28))


avg_protection = input(1)
gain_protection = input(1)


strategy.entry("Buy", strategy.long, when = longCondition    and (avg_protection >= 1 ? (na(strategy.position_avg_price) ? true : close <= strategy.position_avg_price) : true))
strategy.close_all(when = shortCondition  and (gain_protection >=1 ? (close >= gainMultiplier * strategy.position_avg_price) : true))

Más.