En la carga de los recursos... Cargando...

Estrategia de seguimiento de la media móvil

El autor:¿ Qué pasa?, Fecha: 2023-10-20 17:02:52
Las etiquetas:

img

Resumen general

La estrategia de seguimiento de promedios móviles es una estrategia de seguimiento de tendencias basada en promedios móviles simples. Utiliza un promedio móvil simple de 200 días para determinar la dirección de la tendencia del precio. Cuando el precio cruza por encima del promedio móvil, va largo. Cuando el precio cruza por debajo del promedio móvil, va corto. Esta estrategia sigue la tendencia a la ganancia.

Estrategia lógica

La estrategia se basa en los siguientes principios:

  1. Utilice una media móvil simple de 200 días (slowMA) para determinar la tendencia del precio.
  2. Cuando el precio de cierre (cierre) cruza por encima de slowMA, señala una tendencia al alza, así que vaya largo.
  3. Cuando el precio de cierre (cierre) cruza por debajo de slowMA, indica una tendencia a la baja, así que vaya corto.
  4. Utilice las variables last_long y last_short para registrar el último tiempo de entrada largo y corto.
  5. Utilice la función de cruce para detectar el cruce entre last_long y last_short para generar señales comerciales.
  6. En el período de backtest, ir largo cuando se recibe la señal larga (long_signal), y ir corto cuando se recibe la señal corta (short_signal).

La estrategia sigue la tendencia moviendo la dirección promedio y realiza operaciones inversas cuando ocurre el cruce MA, para beneficiarse de la tendencia.

Análisis de ventajas

La estrategia tiene las siguientes ventajas:

  1. La lógica de la estrategia es simple y fácil de entender e implementar.
  2. El promedio móvil de largo período filtra el ruido y bloquea la tendencia principal.
  3. Las operaciones inversas oportunas pueden capturar fluctuaciones significativas de precios en torno a las inversiones de tendencia.
  4. Utiliza sólo un indicador, evitando la complejidad de múltiples indicadores.
  5. Reglas claras de entrada y salida sin mucha intervención humana.

Análisis de riesgos

También hay algunos riesgos:

  1. El MA a largo plazo no es sensible a las correcciones a corto plazo, perdiendo oportunidades a corto plazo.
  2. Capacidad débil para identificar una inversión de tendencia importante, con pérdidas de inversión.
  3. No hay un mecanismo de stop loss, lo que lleva a grandes retiros.
  4. Los parámetros fijos tienen una adaptabilidad débil entre diferentes productos y entornos de mercado.
  5. El riesgo de sobreajuste de retroevaluación, ya que la estrategia solo se prueba con datos históricos.

Los riesgos pueden abordarse mediante las siguientes optimizaciones:

  1. Se añadirá el MA a corto plazo para captar también las tendencias a corto plazo.
  2. Agregue filtros de volumen para evitar señales falsas de fuga.
  3. Añadir indicadores de tendencia para mejorar la identificación de la inversión de tendencia.
  4. Añadir un stop loss dinámico para controlar la pérdida de una sola operación.
  5. Usar métodos de optimización de parámetros para mejorar la adaptabilidad.
  6. Prueba de robustez en diferentes entornos de mercado.

Direcciones de optimización

La estrategia se puede optimizar aún más en los siguientes aspectos:

  1. Optimice el parámetro del período de MA utilizando métodos como el análisis de avanzada para encontrar los parámetros óptimos.

  2. Añadir un MA a corto plazo para realizar un seguimiento de las tendencias a corto y a largo plazo.

  3. Incorporar indicadores de tendencia como el MACD para mejorar la identificación de la inversión de tendencia.

  4. Agregue mecanismos de stop loss como el stop loss de seguimiento para controlar la pérdida de una sola operación.

  5. Prueba de robustez en diferentes productos y períodos de tiempo.

  6. Utilice el aprendizaje automático para la optimización adaptativa de parámetros.

Conclusión

La estrategia de seguimiento de promedios móviles es una estrategia simple y práctica de seguimiento de tendencias. Tiene una lógica clara y es fácil de implementar para capturar tendencias. Pero también tiene algunas debilidades como ser insensible a las correcciones a corto plazo y un control de riesgo débil. Podemos optimizar la estrategia desde múltiples aspectos para hacerla más robusta, mejor parametrizada y con una gestión de riesgos más fuerte. En general, la estrategia de seguimiento de promedios móviles tiene un buen valor de aplicación y es un concepto de trading de tendencias importante en el trading cuantitativo.


/*backtest
start: 2023-09-19 00:00:00
end: 2023-10-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("MA X 200 BF", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.0)

/////////////// Time Frame ///////////////
testStartYear = input(2012, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)

testPeriod() => true

///////////// MA 200 /////////////
slowMA = sma(close, input(200))

/////////////// Strategy ///////////////
long = close > slowMA
short = close < slowMA

last_long = 0.0
last_short = 0.0
last_long := long ? time : nz(last_long[1])
last_short := short ? time : nz(last_short[1])

long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)

/////////////// Execution /////////////// 
if testPeriod()
    strategy.entry("Long Entry",  strategy.long, when=long_signal)
    strategy.entry("Short Entry", strategy.short, when=short_signal)
    strategy.exit("Long Ex", "Long Entry")
    strategy.exit("Short Ex", "Short Entry")

/////////////// Plotting /////////////// 
plot(slowMA, color = long ? color.lime : color.red, linewidth=2)
bgcolor(strategy.position_size > 0 ? color.lime : strategy.position_size < 0 ? color.red : color.white, transp=80)
bgcolor(long_signal ? color.lime : short_signal ? color.red : na, transp=30)

Más.