Estrategia de cruce de la media móvil

El autor:¿ Qué pasa?, Fecha: 2023-11-03 17:23:54
Las etiquetas:

img

Resumen general

La estrategia de cruce de promedios móviles es una estrategia de análisis técnico muy clásica y comúnmente utilizada. La idea central de esta estrategia es utilizar el cruce entre promedios móviles de diferentes períodos como señales comerciales. Cuando el promedio móvil a corto plazo cruza por encima del promedio móvil a largo plazo desde abajo, se genera una señal de compra. Cuando el promedio móvil a corto plazo cruza por debajo del promedio móvil a largo plazo desde arriba, se genera una señal de venta.

Estrategia lógica

Esta estrategia utiliza datos de entrada para establecer el tipo (SMA, EMA, WMA, RMA) y el período de la media móvil, así como el intervalo de tiempo de backtesting.

En la función de variante se calculan diferentes tipos de medias móviles. La media móvil calculada se guarda en la variable ma.

Cuando el precio de cierre cruza por encima de ma, se genera una señal de compra.

Para establecer un stop loss, se calcula el intervalo verdadero promedio de 14 períodos atr. Tome el punto de cruce como referencia, añada o resta 2 veces atr como el intervalo de stop loss.

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

Entrada larga: cruces cerrados por encima de ma y dentro del intervalo de tiempo de backtest, punto de stop loss es punto de entrada cerrado
Salida larga: cierre de cruces por debajo de ma menos 2 veces atr para la salida de stop loss o el precio más alto excede el punto de entrada cierre más 2 veces atr para la salida de take profit

Entrada corta: cierre de cruces por debajo de ma y dentro del intervalo de tiempo de backtest, punto de stop loss es punto de entrada cerrado
Salida corta: cierre de cruces por encima de ma más 2 veces atr para la salida de stop loss o cierre del precio más bajo que el punto de entrada menos 2 veces atr para la salida de take profit.

Ventajas de la estrategia

  1. La idea de la estrategia es simple y clara, fácil de entender e implementar
  2. Ampliamente utilizado, adecuado para diferentes mercados y productos
  3. Configuración de parámetros flexible, tipo y período de media móvil ajustable
  4. Utilizar ATR para evitar pérdidas para ayudar a controlar los riesgos

Riesgos de la estrategia

  1. Las estrategias de promedio móvil tienden a generar operaciones frecuentes y stop loss, lo que reduce el potencial de ganancia
  2. En mercados muy volátiles, las medias móviles pueden generar señales engañosas
  3. El rango de pérdida de ATR podría ser demasiado amplio o demasiado estrecho, no evitando grandes pérdidas

Para hacer frente a los riesgos, se pueden realizar optimizaciones en los siguientes aspectos:

  1. Ajustar el período de la media móvil, utilizar medias móviles de período más largo
  2. Añadir condiciones de filtro para evitar operaciones frecuentes en mercados volátiles
  3. Optimizar los parámetros ATR o utilizar otros métodos de stop loss
  4. Combinar indicadores de tendencia para determinar la tendencia general, evitar el comercio contra tendencia

Direcciones de optimización

Esta estrategia puede optimizarse en los siguientes aspectos:

  1. Añadir condiciones de filtro como volumen, volatilidad para evitar las rupturas irracionales
  2. Utilice el ATR de stop loss adaptativo para que el intervalo de stop loss cambie con la volatilidad del mercado
  3. Combinar Stoch, RSI y otros indicadores para la confirmación multifactorial para mejorar la calidad de la señal
  4. Añadir determinación de tendencia para evitar operaciones contra tendencia
  5. Utilice la salida de tiempo para evitar retener a los perdedores por mucho tiempo
  6. Optimizar los parámetros del período de media móvil para encontrar las mejores combinaciones de parámetros

Resumen de las actividades

La estrategia de cruce de promedios móviles es una estrategia de análisis técnico muy típica y comúnmente utilizada. La idea central de la estrategia es simple y fácil de implementar, adecuada para varios mercados, y es una de las estrategias de negociación cuantitativa de nivel de entrada. Sin embargo, la estrategia también tiene algunos problemas como generar señales frecuentes y ser propenso a detener la pérdida. Con las optimizaciones adecuadas, el rendimiento se puede mejorar mucho. En general, la estrategia de cruce de promedios móviles proporciona un muy buen marco para el desarrollo de estrategias y es la piedra angular del aprendizaje de estrategias de negociación cuantitativas.


/*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] ) 


Más.