Estrategia de tendencia alcista con medias móviles múltiples


Fecha de creación: 2024-01-22 12:04:05 Última modificación: 2024-01-22 12:04:05
Copiar: 0 Número de Visitas: 661
1
Seguir
1617
Seguidores

Estrategia de tendencia alcista con medias móviles múltiples

Descripción general

Una estrategia de seguimiento de tendencias que construye un juicio basado en una media móvil indexada (EMA) de varios períodos diferentes. Se hace cuando el precio supera el EMA de 10 días y otras líneas de EMA de períodos más largos presentan una alineación múltiple; y luego se utiliza un stop loss de seguimiento del 8% para bloquear las ganancias.

Principio de estrategia

La estrategia utiliza seis líneas de EMA de diferentes períodos de 10, 20, 50, 100, 150 y 200 días. Estas líneas de EMA se utilizan para determinar la fase de ciclo en la que se encuentra el mercado. Cuando la línea de EMA de corto plazo (como la línea de 10 días) atraviesa la línea de EMA de período más largo (como la línea de 20 y 50 días), se considera como la fase de marcado en la que el mercado entra en una tendencia múltiple.

En concreto, las estrategias pueden abrir más posiciones si se cumplen las siguientes condiciones:

  1. La línea EMA 10 es más alta que la línea EMA 20
  2. La línea de 20 días EMA es más alta que la línea de 50 días EMA
  3. La línea EMA de 100 días es más alta que la línea EMA de 150 días
  4. La línea EMA de 150 días es más alta que la línea EMA de 200 días
  5. El precio de cierre cruzó la línea de la EMA de 10 días

Después de abrir una posición adicional, la estrategia utiliza un stop loss de seguimiento del 8% para bloquear las ganancias. Es decir, se mantiene la posición siempre que el precio de la acción no retroceda más del 8% del precio de compra. Una vez que se produzca una retirada superior al 8%, se detiene la pérdida.

En general, la idea central de la estrategia es: usar EMAs con múltiples condiciones de filtración para determinar si se está entrando en una tendencia múltiple, y luego seguir el stop loss para bloquear las ganancias.

Análisis de las ventajas

Esta estrategia de tendencia múltiple de línea media múltiple tiene las siguientes ventajas principales:

  1. Se puede filtrar eficazmente las brechas falsas, asegurando la captura de las etapas de markup del ciclo de precios y reduciendo el número de transacciones innecesarias.
  2. El filtro múltiple de la línea EMA reduce la posibilidad de que el stop loss sea roto y permite una posición más segura.
  3. El 8% de seguimiento de la pérdida no es ni demasiado apretado ni demasiado suelto, lo que permite un buen bloqueo de las ganancias y evita la pérdida de seguimiento demasiado frecuente.
  4. La estrategia es flexible para ajustar los parámetros y puede encontrar la combinación óptima de parámetros según las diferentes variedades.

Análisis de riesgos

La estrategia también tiene algunos riesgos a tener en cuenta:

  1. El orden de las líneas de la EMA no es un indicador de tendencia del 100%, y aún existe la posibilidad de que haya un ajuste.
  2. El 8% de stop-loss puede ocasionar la pérdida de parte de las ganancias en un mercado masivo.
  3. El sistema de medias lineas de la EMA se retrasa en el cambio de precios, y el punto de inflexión puede ser un poco retrasado.

Para estos riesgos, se puede optimizar y mejorar mediante un ajuste adecuado de los parámetros de los ciclos EMA o la introducción de otros indicadores como juzgamiento auxiliar.

Dirección de optimización

Teniendo en cuenta las características de la estrategia, en el futuro se puede optimizar en los siguientes aspectos:

  1. Prueba diferentes combinaciones de EMA y parámetros de ciclo para encontrar el parámetro óptimo.
  2. Aumentar los índices de volatilidad para determinar la intensidad de la tendencia y evitar posiciones innecesarias.
  3. Añadir más indicadores de filtrado, como MACD, KDJ, etc. para juzgar el ordenamiento múltiple.
  4. Introducción de algoritmos de aprendizaje automático para el deterioro dinámico.

Resumir

La estrategia de tendencia múltiple es una estrategia de seguimiento de tendencias más sólida y confiable en general. Al mismo tiempo, contempla el juicio de tendencias y el control de riesgos.

Código Fuente de la Estrategia
/*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)