Estrategia de cruce de medias móviles

MA SMA
Fecha de creación: 2024-04-30 17:33:09 Última modificación: 2024-04-30 17:33:09
Copiar: 1 Número de Visitas: 644
1
Seguir
1617
Seguidores

Estrategia de cruce de medias móviles

Descripción general

La estrategia utiliza dos medias móviles ((MA) para generar señales de negociación. Cuando la MA de menor período pasa de abajo hacia arriba a través de la MA de mayor período, se genera una señal de compra; cuando la MA de menor período pasa de arriba hacia abajo a través de la MA de mayor período, se genera una señal de venta. La estrategia establece un período de negociación (desde las 8 a las 20 horas UTC) y un punto de parada (desde los 150 puntos) al mismo tiempo.

Principio de estrategia

  1. Calcule el promedio móvil de dos períodos diferentes (default es 5 y 20 períodos).
  2. Determine si el MA de período corto está subiendo/descendiendo por el MA de período largo, como una señal de compra/venta.
  3. Establezca el intervalo de operaciones de 8 a 20 horas UTC, y solo realice operaciones en ese intervalo.
  4. Determine si las 4 líneas K más recientes están cerradas por encima o por debajo de la MA para confirmar la tendencia.
  5. Si cumple con las condiciones de compra/venta, abre una posición y establece un stop de 150 puntos.

Ventajas estratégicas

  1. El uso de dos MA de diferentes períodos permite capturar la tendencia de manera eficiente y se aplica a los mercados de tendencia.
  2. La configuración de un período de tiempo de negociación evita el riesgo de negociar en momentos de poca liquidez.
  3. Al determinar si las 4 líneas K más recientes están cerradas por encima o por debajo de la MA, se puede confirmar la tendencia y mejorar la fiabilidad de la señal.
  4. Establecer un punto de parada fijo para bloquear los beneficios y controlar el riesgo.

Riesgo estratégico

  1. En un mercado convulso, esta estrategia puede generar frecuentemente señales erróneas y causar pérdidas.
  2. Los puntos de parada fijos pueden limitar el espacio de ganancia de la estrategia.
  3. La estrategia no tiene un stop loss, lo que podría suponer un riesgo mayor en caso de una rápida reversión de la situación.

Dirección de optimización de la estrategia

  1. Se puede considerar la introducción de más indicadores técnicos, como RSI, MACD, etc., para mejorar la fiabilidad de la señal.
  2. Se puede optimizar la configuración de los puntos de parada de frenado, como el frenado de frenado dinámico o el frenado de frenado basado en ATR.
  3. La segunda confirmación de las señales de negociación puede combinarse con información sobre la microestructura del mercado, como el flujo de pedidos.
  4. Se pueden establecer diferentes parámetros para diferentes estados de mercado (trend/vibración) para mejorar la adaptabilidad de la estrategia.

Resumir

La estrategia se basa en el cruce de dos promedios móviles de diferentes períodos para generar señales de negociación y se aplica en mercados de tendencia. Se puede controlar el riesgo hasta cierto punto mediante la configuración de períodos de negociación y puntos de parada fijos. Sin embargo, la estrategia puede no funcionar bien en mercados convulsos y los puntos de parada fijos pueden limitar el espacio de ganancia de la estrategia.

Código Fuente de la Estrategia
/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Moving Average Crossover Strategy", overlay=true)

// User-defined moving average periods
ma1Periods = input(5, title="First Moving Average Periods")
ma2Periods = input(20, title="Second Moving Average Periods")

// Calculate moving averages
ma1 = sma(close, ma1Periods)
ma2 = sma(close, ma2Periods)

// Plot moving averages
plot(ma1, color=color.red, linewidth=2, title="First Moving Average")
plot(ma2, color=color.blue, linewidth=2, title="Second Moving Average")

// Detect crossovers and crossunders
bullishCross = crossover(ma1, ma2)
bearishCross = crossunder(ma1, ma2)

// Define trading hours (8 AM to 2 PM UTC)
startHour = 8
endHour = 20
utcHour = hour(time, "UTC")
isMarketOpen = true

// Define profit target
profitTarget = 150

// Check if the price has closed above/below the MA for the past 4 bars
aboveMa = close[4] > ma1[4] and close[3] > ma1[3] and close[2] > ma1[2] and close[1] > ma1[1]
belowMa = close[4] < ma1[4] and close[3] < ma1[3] and close[2] < ma1[2] and close[1] < ma1[1]

// Create buy and sell signals
if (bullishCross and isMarketOpen and aboveMa)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Sell", "Buy", profit=profitTarget)
if (bearishCross and isMarketOpen and belowMa)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Cover", "Sell", profit=profitTarget)

// Plot shapes on crossovers
plotshape(series=bullishCross and isMarketOpen and aboveMa, location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")
plotshape(series=bearishCross and isMarketOpen and belowMa, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")