Estrategia de cruce de la media móvil doble de impulso

El autor:¿ Qué pasa?, Fecha: 2023-10-20 16:44:30
Las etiquetas:

img

Resumen general

Esta estrategia utiliza cruces de promedios móviles para determinar la dirección del impulso del precio, complementado con cruces dorados / de muerte para juzgar la tendencia general, para implementar el seguimiento de la tendencia.

Estrategia lógica

La estrategia utiliza cruces de EMA y SMA para determinar la dirección del impulso del precio. EMA reacciona más rápido mientras que SMA reacciona más constantemente. Cuando EMA cruza por encima de SMA, se juzga que el impulso al alza es fuerte, vaya largo. Cuando EMA cruza por debajo de SMA, se juzga que el impulso a la baja es fuerte, vaya corto.

Además, la estrategia también utiliza el cruce de SMA de período rápido y SMA de período lento para determinar la dirección general de la tendencia. Cuando el SMA rápido cruza por encima del SMA lento, es una cruz de oro, lo que indica que el mercado está en tendencia alcista a largo plazo. Cuando el SMA rápido cruza por debajo del SMA lento, es una cruz de muerte, lo que indica que el mercado está en tendencia bajista a largo plazo.

La estrategia identifica la oportunidad larga cuando la EMA cruza por encima de la SMA. Si es una cruz de oro en este momento, significa que ir largo está apoyado tanto por el impulso a corto plazo como por la tendencia a largo plazo, que es un mejor tiempo largo. Si es una cruz de muerte, ir largo solo está apoyado por el impulso a corto plazo y contra la tendencia a largo plazo, que es un tiempo largo más arriesgado.

Análisis de ventajas

  • Utilizar cruces de MA para juzgar el impulso y la dirección del precio
  • Considere tanto el impulso a corto plazo como la tendencia a largo plazo
  • La confirmación de dos indicadores mejora la fiabilidad
  • Adaptable a diferentes períodos mediante el ajuste de los parámetros del MA
  • Personalizable para mostrar/ocultar señales comerciales específicas

Análisis de riesgos

  • Los cruces de MA tienen retrasos, pueden perder los mejores puntos de entrada/salida
  • La SMA de período fijo no puede reflejar el cambio de precio en tiempo real
  • Pueden producirse cruces erróneos entre los MAs de largo/corto período
  • La tenencia larga puede aumentar el riesgo de capital

Los riesgos pueden reducirse combinando otros indicadores para la confirmación de la señal, optimizando los períodos de MA o estableciendo el stop loss.

Direcciones de optimización

  • Añadir otros filtros como volumen, bandas de Bollinger, etc.
  • Añadir una estrategia de stop loss
  • Optimización de los períodos de evaluación de la rentabilidad
  • Optimización de la gestión del capital
  • Considere el dimensionamiento dinámico de la posición

Conclusión

En general, esta es una estrategia de seguimiento de tendencias relativamente estable y confiable. Considera tanto el impulso del precio a corto plazo como la dirección de la tendencia a largo plazo, generando señales comerciales a través de cruces de MA. En comparación con las estrategias de MA individuales, tiene una mayor fiabilidad al combinar indicadores duales para la confirmación. Pero como estrategia de seguimiento de tendencias, su optimización de parámetros y control de riesgos son muy importantes. Necesita pruebas y ajustes repetidos para realizar realmente su potencial. Con optimizaciones y mejoras continuas, esta estrategia puede convertirse en un componente valioso de una cartera de inversión cuantitativa a largo plazo.


/*backtest
start: 2023-09-19 00:00:00
end: 2023-10-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Cryptoluc1d

//@version=4
strategy("Equal-Length EMA/SMA Crossover Strategy", initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=25, commission_type=strategy.commission.percent, commission_value=0.2, overlay=true)

// Create inputs

mom_length = input(title="Momentum Length (EMA=SMA)", defval=50)
bias_length_fast  = input(title="Golden Cross Length (Fast)", defval=50)
bias_length_slow  = input(title="Golden Cross Length (Slow)", defval=100)

// Define MAs

ema = ema(close, mom_length) // EMA/SMA crossover of the same period for detecting trend acceleration/deceleration
sma = sma(close, mom_length)
bias_fast = sma(close, bias_length_fast) // golden/death cross for overall trend bias
bias_slow = sma(close, bias_length_slow)

// Define signal conditions

buy_trend = crossover(ema, sma) and bias_fast >= bias_slow // buy when EMA cross above SMA. if this happens during a bullish golden cross, buying is in confluence with the overall trend (bias).
buy_risky = crossover(ema, sma) and bias_fast < bias_slow // buy when EMA cross above SMA. if this happens during a bearish death cross, buying is early, more risky, and not in confluence with the overall trend (bias).
buy_late = crossover(sma, bias_slow) and ema > sma // the SMA crossing the Slow_SMA gives further confirmation of bullish trend, but signal comes later.
sell = crossunder(ema, sma) // sell when EMA cross under SMA.

// Enable option to hide signals, then plot signals

show_signal = input(title="Show Signals", defval=true)

plotshape(show_signal ? buy_trend : na, title='Trend Buy', style=shape.triangleup, location=location.belowbar, color=color.green, text='TREND BUY')
plotshape(show_signal ? buy_risky : na, title='Risky Buy', style=shape.triangleup, location=location.belowbar, color=color.olive, text='RISKY BUY')
plotshape(show_signal ? buy_late : na, title='Late Buy', style=shape.triangleup, location=location.belowbar, color=color.lime, text='LATE BUY')
plotshape(show_signal ? sell : na, title='Sell', style=shape.triangledown, location=location.abovebar, color=color.red, text='SELL')

// Define entry and exit conditions

longCondition = ema > sma and bias_fast >= bias_slow // LONG when EMA above SMA, and overall trend bias is bullish
if (longCondition)
    strategy.entry("BUY TREND", strategy.long)
exitLong = crossunder(ema, sma) // close LONG when EMA cross under SMA
strategy.close("BUY TREND", when=exitLong)

// // short conditions. turned off because up only.
// shortCondition = ema < sma and bias_fast <= bias_slow // SHORT when EMA under SMA, and overall trend bias is bearish
// if (shortCondition)
//     strategy.entry("SELL TREND", strategy.short)
// exitShort = crossover(ema, sma) // close SHORT when EMA cross over SMA
// strategy.close("SELL TREND", when=exitShort)

// Enable option to show MAs, then plot MAs

show_ma = input(title="Show MAs", defval=false)

plot(show_ma ? ema : na, title="Momentum EMA", color=color.green, linewidth=1)
plot(show_ma ? sma : na, title="Momentum SMA", color=color.yellow, linewidth=1)
plot(show_ma ? bias_fast : na, title="Golden Cross SMA (Fast)", color=color.orange, linewidth=2)
plot(show_ma ? bias_slow : na, title="Golden Cross SMA (Slow)", color=color.red, linewidth=2)

Más.