Estrategia de cruce de medias móviles dobles

EMA SMA
Fecha de creación: 2024-05-17 15:48:04 Última modificación: 2024-05-17 15:48:04
Copiar: 0 Número de Visitas: 661
1
Seguir
1617
Seguidores

Estrategia de cruce de medias móviles dobles

Descripción general

La estrategia de cruce de dos líneas es una clásica estrategia de comercio de seguimiento de tendencias. La estrategia utiliza dos medias móviles, una de ellas es una media móvil rápida y la otra una media móvil lenta. Cuando una media móvil rápida cruza una media móvil lenta desde arriba hacia abajo, se llama “cruce de oro”, lo que indica que una tendencia alcista puede formarse, y se abren más posiciones.

Principio de estrategia

El núcleo de la estrategia es utilizar las características de tendencia y las señales de cruce de las medias móviles para determinar la dirección de la tendencia y el momento de abrir una posición. Primero, se establece el ciclo de las medias móviles rápidas (default 50) y las medias móviles lentas (default 200) mediante parámetros, y se elige usar SMA o EMA. Luego se calculan dos medias móviles para determinar su cruce:

  1. Cuando el promedio móvil rápido cruza hacia arriba el promedio móvil lento ((cruzadas de oro), si no tiene posiciones en ese momento, abra más posiciones, al mismo tiempo que establece un precio de parada (calculado según el porcentaje de parada).
  2. Cuando el promedio móvil rápido cruza el promedio móvil lento hacia abajo (cruzamiento de la muerte), si no tiene una posición en ese momento, abre una posición a la baja, al mismo tiempo que establece un precio de parada.
  3. Si hay varias posiciones, se cancelará la posición cuando se produzca el cruce de la muerte.
  4. Si ya hay una posición de cabeza vacía, la posición se liquida cuando ocurra el cruce de oro. La apertura de posiciones con señales de cruce de medias móviles y el establecimiento de paros para capturar la tendencia a mediano y largo plazo de los precios de una manera de seguimiento de tendencias.

Ventajas estratégicas

  1. La lógica es simple y clara, fácil de entender y de implementar, y es la base de las estrategias de seguimiento de tendencias.
  2. La intersección de dos medias móviles de diferentes períodos ayuda a determinar mejor la formación y la reversión de tendencias.
  3. Apoya los dos tipos de promedios móviles, SMA y EMA, con flexibilidad para elegir.
  4. Se estableció un stop loss, que controla el riesgo de pérdidas hasta cierto punto.
  5. Es un estilo de seguimiento de tendencias de mediano y largo plazo.

Riesgo estratégico

  1. La elección incorrecta de los parámetros (como la elección incorrecta del ciclo de la media móvil) puede causar una señal frecuente o un retraso en el juicio de la tendencia.
  2. Las fluctuaciones rápidas de la situación pueden conducir a una mayor frecuencia de transacciones y a un mal desempeño.
  3. La tendencia puede revertirse o terminar con un retroceso mayor.
  4. El cierre porcentual fijo puede no controlar el riesgo muy bien.

Dirección de optimización de la estrategia

  1. Optimización de los parámetros, incluidos el ciclo de las medias móviles, el porcentaje de stop loss, etc., para mejorar la estabilidad y la relación de riesgo de ganancias.
  2. Se puede considerar la introducción de indicadores relacionados con la volatilidad, como el ATR, para ajustar dinámicamente la posición de parada.
  3. La posición se abre inmediatamente después de la confirmación de la tendencia, en lugar de abrir una posición al cruzarse, o se agrega a otros indicadores de confirmación de tendencia para ayudar a juzgar, mejorar la precisión de la captura de tendencias.
  4. Las estrategias de gestión de fondos, como la subida y bajada de la posición, pueden mejorar.
  5. Considere la combinación con otras señales para formar una estrategia multifactorial.

Resumir

La estrategia de cruce de dos líneas es una estrategia de seguimiento de tendencias simple y clásica, para determinar la dirección de la tendencia y el momento de abrir posiciones a través de la cruz de dos promedios móviles de diferentes períodos, adecuada para captar tendencias a medio y largo plazo. Sin embargo, los parámetros fijos pueden ser inestables en un entorno de mercado cambiante y requieren una mejora adicional, como parámetros de optimización, mejora de los parámetros de parada, introducción de señales, etc., para convertirse en una estrategia de negociación relativamente sólida.

Código Fuente de la Estrategia
/*backtest
start: 2023-05-11 00:00:00
end: 2024-05-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//==============================================================================
// A baseline strategy with a well known concept, golden cross & death cross.
// Support for both Simple & Exponential moving averages.
// Support for long & short stop losses as a percentage.:well
//==============================================================================
strategy("Basic Moving Average Crosses", overlay=true)

//------------------------------------------------------------------------------
// configuration
//------------------------------------------------------------------------------
maQuickLength = input(50, title="Quick MA Length") 
maSlowLength  = input(200, title="Quick MA Length") 
useSma        = input(true, title="Use SMA? If false, EMA is used.")

maQuick = useSma ? ta.sma(close, maQuickLength) : ta.ema(close, maQuickLength)
maSlow  = useSma ? ta.sma(close, maSlowLength) : ta.ema(close, maSlowLength)

stop_loss_percentage = input(2.0, title="Stop Loss (%)")

var float longStopLevel = na
var float shortStopLevel = na

bool isGoldenCross = ta.crossover(maQuick, maSlow)
bool isDeathCross  = ta.crossunder(maQuick, maSlow)

//------------------------------------------------------------------------------
// position opening logic
//------------------------------------------------------------------------------

if(strategy.position_size == 0)
    // Golden cross, enter a long position
    if(isGoldenCross)
        strategy.entry("Buy", strategy.long)
        longStopLevel := close - close * stop_loss_percentage/100.0
        strategy.exit("StopLossLong", "Buy", stop=longStopLevel)
    // Death cross, enter short position
    else if(isDeathCross)
        strategy.entry("Sell", strategy.short)
        shortStopLevel := close + close * stop_loss_percentage/100.0
        strategy.exit("StopLossShort", "Sell", stop=shortStopLevel)

//------------------------------------------------------------------------------
// position closing logic
//------------------------------------------------------------------------------
else
    // Close long position on death cross
    if(strategy.position_size > 0 and isDeathCross)
        strategy.close("Buy")
    
    // Close short position on golden cross
    else if(strategy.position_size < 0 and isGoldenCross)
        strategy.close("Sell")

//------------------------------------------------------------------------------
// ploting
//------------------------------------------------------------------------------
plot(maQuick, color=color.yellow)
plot(maSlow, color=color.blue)