Estrategia de tendencia alcista con múltiples EMA

El autor:¿ Qué pasa?, Fecha: 2024-01-22 12:04:05
Las etiquetas:

img

Resumen general

La Estrategia de tendencia alcista Multi-EMA es una estrategia de seguimiento de tendencias basada en múltiples promedios móviles exponenciales (EMA) de diferentes períodos para la determinación de tendencias.

Estrategia lógica

La estrategia emplea 6 EMA de períodos de 10, 20, 50, 100, 150 y 200 días. Estas EMA se utilizan para determinar la etapa cíclica actual del mercado. Cuando las EMA de período más corto (por ejemplo, 10 días) se cruzan con las de período más largo (por ejemplo, 20-, 50 días), indica que el mercado ha entrado en la fase de marcado de una tendencia alcista.

Específicamente, la estrategia se prolongará cuando se cumplan las siguientes condiciones:

  1. La EMA de 10 días es superior a la EMA de 20 días
  2. La EMA de 20 días es superior a la EMA de 50 días
  3. EMA de 100 días es superior a la EMA de 150 días
  4. La EMA de 150 días es superior a la EMA de 200 días
  5. El precio de cierre cruza la EMA de 10 días

Después de abrir una posición larga, se utiliza un stop loss de 8% para bloquear las ganancias. Eso significa que la posición se mantendrá abierta siempre que el precio no caiga más del 8% desde el precio de entrada. Una vez que el descenso exceda el 8%, la posición se cerrará para detener la pérdida.

En resumen, la idea clave de esta estrategia es entrar en tendencia alcista cuando se confirma por la alineación múltiple de la EMA, y utilizar el stop loss para bloquear las ganancias.

Análisis de ventajas

La estrategia de tendencia alcista Multi-EMA tiene las siguientes fortalezas principales:

  1. Puede filtrar eficazmente las falsas rupturas y garantizar la captura de los ciclos de margen, reduciendo las operaciones innecesarias.
  2. Los múltiples filtros EMA reducen la probabilidad de que se produzca un stop loss, lo que permite mantener posiciones de manera más segura.
  3. El 8% de suspensión de pérdidas no es ni demasiado apretado ni demasiado suelto, equilibrando la toma de ganancias y la suspensión de pérdidas.
  4. La estrategia permite ajustes de parámetros flexibles para la optimización en diferentes productos.

Análisis de riesgos

También hay algunos riesgos a tener en cuenta para esta estrategia:

  1. La secuencia de EMA no puede garantizar la dirección de la tendencia para el 100% de los casos, algunos golpes aún pueden ocurrir.
  2. La parada de 8% puede dejar algunas ganancias durante grandes tendencias.
  3. Los sistemas de la EMA tienen un retraso inherente, la confirmación de los puntos de inflexión puede retrasarse ligeramente.

Para hacer frente a estos riesgos, podemos optimizar ajustando los períodos de EMA o incorporando indicadores auxiliares para mejorar el juicio.

Direcciones de optimización

Teniendo en cuenta las características de esta estrategia, las optimizaciones futuras pueden centrarse en los siguientes aspectos:

  1. Prueba diferentes combinaciones de EMA y conjuntos de períodos para encontrar parámetros óptimos.
  2. Añadir indicadores de índice de volatilidad para medir la fuerza de la tendencia para evitar entradas innecesarias.
  3. Incluye más indicadores de filtrado como MACD, KDJ para confirmar la alineación alcista.
  4. Emplear algoritmos de aprendizaje automático para la implementación dinámica de stop loss.

Conclusión

En general, la estrategia de tendencia alcista Multi-EMA es un sistema de seguimiento de tendencias robusto y confiable, que equilibra la determinación de tendencias y el control de riesgos.


/*backtest
start: 2023-01-15 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('SirSeff\'s EMA Rainbow', overlay=true)
// Testing Start dates
testStartYear = input(2000, 'Backtest Start Year')
testStartMonth = input(1, 'Backtest Start Month')
testStartDay = input(1, 'Backtest Start Day')
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)
//Stop date if you want to use a specific range of dates
testStopYear = input(2100, 'Backtest Stop Year')
testStopMonth = input(12, 'Backtest Stop Month')
testStopDay = input(30, 'Backtest Stop Day')
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
// Component Code Stop

//TSP
trailStop = input.float(title='Long Trailing Stop (%)', minval=0.0, step=0.1, defval=8) * 0.01

longStopPrice = 0.0
longStopPrice := if strategy.position_size > 0
    stopValue = close * (1 - trailStop)
    math.max(stopValue, longStopPrice[1])
else
    0

//PLOTS
plot(series=strategy.position_size > 0 ? longStopPrice : na, color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1, title='Long Trail Stop', offset=1, title='Long Trail Stop')
plot(ta.ema(close, 20))
plot(ta.ema(close, 50))
plot(ta.ema(close, 100))
plot(ta.ema(close, 150))
plot(ta.ema(close, 200))

//OPEN
longCondition =  ta.ema(close, 10) > ta.ema(close, 20) and ta.ema(close, 20) > ta.ema(close, 50) and ta.ema(close, 100) > ta.ema(close, 150) and ta.ema(close, 150) > ta.ema(close, 200)
if longCondition and ta.crossover(close,ta.ema(close,10)) and testPeriod()
    strategy.entry("BUY1", strategy.long)
    
if longCondition and ta.crossover(ta.ema(close,10),ta.ema(close,20)) and testPeriod()
    strategy.entry("BUY2'", strategy.long)

//CLOSE @ TSL
if strategy.position_size > 0 and testPeriod()
    strategy.exit(id='TSP', stop=longStopPrice)
    


Más.