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

Estrategia de cruce de dos medias móviles

El autor:¿ Qué pasa?, Fecha: 2024-05-17 15:48:04
Las etiquetas:El EMALa SMA

img

Resumen general

Principio de la estrategia

El núcleo de esta estrategia es utilizar las características de tendencia de las medias móviles y las señales de cruce para determinar la dirección de la tendencia y el momento de entrada. Primero, establezca los períodos de la media móvil rápida (por defecto 50) y la media móvil lenta (por defecto 200) a través de parámetros, y elija usar SMA o EMA. Luego, calcule las dos medias móviles y determine sus situaciones de cruce:

  1. Cuando la media móvil rápida cruce por encima de la media móvil lenta (cruz dorada), abra una posición larga si no hay posición actual y establezca el precio de stop-loss (calculado en función del porcentaje de stop-loss).
  2. Cuando el promedio de movimiento rápido se cruce por debajo del promedio de movimiento lento (cruce de muerte), abra una posición corta si no hay posición actual y establezca el precio de stop-loss.
  3. Si existe una posición larga, cierre la posición cuando se produzca una cruz de muerte.

Ventajas estratégicas

  1. La lógica es simple y clara, fácil de entender e implementar, y es la base de las estrategias de seguimiento de tendencias.
  2. Al utilizar el cruce de dos medias móviles con períodos diferentes, puede determinar mejor la formación y la inversión de tendencias.
  3. Apoya tanto SMA como EMA, que se pueden seleccionar de manera flexible.
  4. Adecuado para capturar tendencias a medio y largo plazo, estilo de tendencia.

Riesgos estratégicos

  1. La selección incorrecta de parámetros (como períodos de media móvil inadecuados) puede dar lugar a señales frecuentes o a un juicio de tendencia retrasado.
  2. Los mercados que fluctúan rápidamente pueden llevar a operaciones frecuentes y a un bajo rendimiento.
  3. Cuando la tendencia se invierte o termina, pueden producirse mayores retiros.

Direcciones para la optimización de la estrategia

  1. Considerar la introducción de indicadores relacionados con la volatilidad como el ATR para ajustar dinámicamente las posiciones de stop-loss.
  2. Confirmar la tendencia antes de abrir una posición en lugar de abrirla inmediatamente en el cruce, o añadir otros indicadores de confirmación de tendencia para facilitar el juicio y mejorar la precisión de la captura de tendencias.
  3. Se puede mejorar mediante estrategias de gestión de fondos tales como la adición o reducción de posiciones.
  4. Considere combinar con otras señales para formar una estrategia multifactor.

Resumen de las actividades


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

Relacionados

Más.