Estrategias comunes de cruce de medias móviles


Fecha de creación: 2023-11-03 17:23:54 Última modificación: 2023-11-03 17:23:54
Copiar: 0 Número de Visitas: 707
1
Seguir
1617
Seguidores

Estrategias comunes de cruce de medias móviles

Descripción general

La estrategia de cruce de la media móvil es una estrategia de análisis técnico muy clásica y comúnmente utilizada. La idea central de la estrategia es utilizar el cruce entre las medias móviles de diferentes períodos como una señal de compra y venta. Se produce una señal de compra cuando la media móvil a corto plazo atraviesa la media móvil a largo plazo desde abajo; se produce una señal de venta cuando la media móvil a corto plazo atraviesa la media móvil a largo plazo desde arriba.

Principio de estrategia

La estrategia se define mediante el tipo de promedio móvil (SMA, EMA, WMA, RMA) y la longitud de los períodos, así como el rango de tiempo de retracción.

Calcular diferentes tipos de promedios móviles en una función variante. Los promedios móviles calculados se conservan en la variable ma.

Cuando el precio de cierre está por encima de ma, genera una señal de compra; cuando el precio de cierre está por debajo de ma, genera una señal de venta.

Para configurar el stop loss, se calcula la amplitud real media de la oscilación en 14 ciclos a través deatr. Se toma el punto de cruce como referencia, y se añade o disminuye 2 vecesatr como el rango de stop loss.

La lógica de entrada y salida es la siguiente:

Entrada múltiple: cerrar con ma y cerrar el punto de parada como entrada en el tiempo de recuperación Salida múltiple: cerrar la salida con pérdida de ma menos 2 vecesatr, o el precio más alto que supera el punto de entrada cerrar y 2 vecesatr para cerrar la salida Entrada sin cabeza: cerrar debajo de ma y en el tiempo de retroalimentación, el punto de parada es el punto de entrada cerrar Salida en blanco: cerrar con ma más 2 vecesatr para detener la salida, o el precio mínimo es inferior al punto de entrada cerrar menos 2 vecesatr para detener la salida

Ventajas estratégicas

  1. La estrategia es simple, clara, fácil de entender y ejecutar
  2. Amplia aplicación para diferentes mercados y variedades
  3. Parámetros flexibles, tipo de media móvil y periodicidad ajustable
  4. El uso de ATR para reducir el riesgo

Riesgo estratégico

  1. Las estrategias de medias móviles son propensas a generar operaciones frecuentes y paradas de pérdidas, lo que reduce el espacio para obtener ganancias
  2. Las medias móviles tienen más probabilidades de generar señales engañosas en situaciones de gran volatilidad
  3. El límite de pérdidas de ATR puede ser demasiado grande o demasiado pequeño para evitar grandes pérdidas

En cuanto a los riesgos, se puede optimizar en los siguientes aspectos:

  1. Ajuste de las medias móviles a medias más largas
  2. Aumentar las condiciones de filtración para evitar operaciones frecuentes en situaciones de crisis
  3. Optimizar los parámetros de ATR o adoptar otras formas de detener el daño
  4. Combina los indicadores de tendencia para determinar las tendencias generales y evitar las operaciones de contratiempo

Dirección de optimización de la estrategia

La estrategia puede ser optimizada en los siguientes aspectos:

  1. Aumentar las condiciones de filtrado, como volumen de transacciones, volatilidad, etc., para evitar brechas irracionales
  2. Utiliza un método de ATR adaptado para que el alcance de los paros cambie con la volatilidad del mercado
  3. Verificación multifactorial en combinación con indicadores como Stoch, RSI y otros para mejorar la calidad de la señal
  4. Aumentar el conocimiento de las tendencias y evitar las operaciones de contratiempo
  5. Utiliza el tiempo EXIT para evitar pérdidas de cobro a largo plazo
  6. Optimización de los parámetros del ciclo de la media móvil para encontrar la mejor combinación de parámetros

Resumir

La estrategia de cruce de la media móvil es una estrategia de análisis técnico muy típica y comúnmente utilizada. La idea central de la estrategia es simple, fácil de implementar y se aplica a todos los mercados, y es una de las estrategias de entrada para el comercio cuantitativo. Pero la estrategia también tiene algunos problemas, como la generación de señales frecuentes, fácil de detener, etc.

Código Fuente de la Estrategia
/*backtest
start: 2023-10-03 00:00:00
end: 2023-11-02 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("MA Cross Strategy", overlay=true,commission_value = 0.1)

type = input(defval = "WMA", title = "MA Type: ", options=["RMA", "SMA", "EMA", "WMA"])

length = input(28)
source = close



// === INPUT BACKTEST RANGE ===
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear  = input(defval = 2000, title = "From Year", minval = 2000)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(9999, 1, 1, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"



variant(type, src, len) =>
    v1 = sma(src, len)                                                  // Simple
    v2 = ema(src, len)                                                  // Exponential
    v5 = wma(src, len)                                                  // Weighted
    v7 = rma(src, len)                                                  // Smoothed
    type=="EMA"?v2 : type=="WMA"?v5 : type=="RMA"?v7 : v1
ma = variant(type,source, length)


atr = security(syminfo.tickerid, "D", atr(14))

range = valuewhen(cross(close,ma), (atr*2), na)

ep = valuewhen(cross(close,ma), close, na)

plot(ma,color=ma>ma[1]?color.blue:color.red,transp=0,linewidth=1)
plot(ep,color=#2196f3,transp=100,trackprice=true, offset=-9999)
plot(ep+range,color=#2196f3,transp=100,trackprice=true, offset=-9999)
plot(ep-range,color=#2196f3,transp=100,trackprice=true, offset=-9999)

strategy.entry("Long Entry", true, when = crossover(close,ma)  and window() , stop  = ep ) 
strategy.exit("Long Exit", "Long Entry", stop  = ep-range) 
strategy.exit("Long Exit", "Long Entry", when = high > ep+range ,stop = ep[1] ) 

strategy.entry("Short Entry", false, when = crossunder(close,ma)  and window() , stop  = ep ) 
strategy.exit("Short Exit", "Short Entry", stop  = ep+range) 
strategy.exit("Short Exit", "Short Entry", when = low < ep-range ,stop = ep[1] )