Estrategia de seguimiento de tendencia de doble media móvil


Fecha de creación: 2024-01-24 11:28:57 Última modificación: 2024-01-24 11:28:57
Copiar: 1 Número de Visitas: 302
1
Seguir
1166
Seguidores

Estrategia de seguimiento de tendencia de doble media móvil

Descripción general

La estrategia de seguimiento de tendencias de doble línea media es una estrategia que utiliza una combinación de promedios móviles rápidos y promedios móviles lentos para juzgar la tendencia del mercado y emitir señales de negociación cuando se produce un cambio en la dirección de la tendencia. La estrategia combina al mismo tiempo el indicador de línea media y el indicador de canal de precios para identificar la tendencia, lo que puede filtrar el ruido del mercado y determinar la dirección de la tendencia.

Principio de estrategia

La estrategia de seguimiento de tendencias de doble línea media utiliza dos indicadores de media móvil: una media móvil rápida (de 5 ciclos) y una media móvil lenta (de 21 ciclos). La media móvil rápida se utiliza para generar señales de negociación y la media móvil lenta para determinar la dirección de la tendencia del mercado. Cuando la media rápida cruza la media lenta de abajo hacia arriba, genera una señal de compra; cuando la media rápida cruza la media lenta de arriba hacia abajo, genera una señal de venta.

La estrategia también utiliza un indicador de canal de precios para ayudar a determinar la tendencia. La canal de precios se determina por el promedio móvil de los precios más altos y más bajos.

La estrategia requiere que aparezcan columnas rojas consecutivas (la cantidad de columnas que el usuario puede configurar) como condición de filtrado adicional para juzgar las señales de compra y venta. Esto evita que se emitan señales erróneas en la zona de composición.

En general, la lógica de las estrategias de seguimiento de tendencias de doble sentido es:

  1. El uso de canales de precios para determinar la dirección de las tendencias a gran escala
  2. Utiliza la línea media rápida para determinar tendencias a corto plazo y emitir señales de negociación
  3. Combinación de filtros columnares adicionales para evitar señales erróneas en el ajuste

A través de la evaluación de tendencias en varios niveles, se puede filtrar eficazmente el ruido y determinar la dirección de la tendencia.

Análisis de las ventajas

La estrategia de seguimiento de tendencias en línea recta tiene las siguientes ventajas:

  1. Utiliza un sistema de doble línea para identificar las tendencias y determinar las principales direcciones de las tendencias.
  2. Las líneas medias rápidas emiten señales de negociación para capturar el cambio de tendencia en el momento oportuno.
  3. Los canales de precios juzgan las tendencias a gran escala y evitan ser engañados por el ruido del mercado a corto plazo
  4. Condiciones de filtración de columnas rojas/verdes para reducir la probabilidad de emitir señales erróneas en la zona de comprobación
  5. Los parámetros de la estrategia se pueden ajustar para adaptarse a diferentes mercados y mejorar la estabilidad de la estrategia
  6. Se puede agregar una estrategia de stop loss para controlar el riesgo de cada transacción

En resumen, la estrategia es más estable en general y se desempeña mejor en mercados de tendencia significativa.

Análisis de riesgos

Las estrategias de seguimiento de tendencias de doble línea equilibrada también presentan algunos riesgos, principalmente:

  1. Cuando los mercados se cierran a largo plazo, son propensos a generar señales erróneas, lo que puede llevar a pequeñas pérdidas continuas.
  2. Los parámetros de la estrategia no están configurados a tiempo, lo que puede retrasar las señales de negociación y perder el mejor momento de entrada
  3. La falta de una estrategia eficaz para detener los pérdidas hace que sea difícil controlar el riesgo de una sola transacción

En consecuencia, se puede reducir el riesgo estratégico de la siguiente manera:

  1. Ajuste de las condiciones de filtración de la columna roja/verde para reducir la frecuencia de las operaciones en el mercado de liquidación
  2. Optimización de los parámetros de la línea media rápida para asegurar que las señales de negociación sean oportunas
  3. Añadir un stop loss móvil o un stop loss porcentual y controlar las pérdidas individuales

Dirección de optimización

La estrategia de seguimiento de tendencias en dos líneas uniformes tiene espacio para una mayor optimización, principalmente en las siguientes direcciones:

  1. Combinado con un indicador de volatilidad como el ATR, ajusta automáticamente el stop loss
  2. Optimización automática de los parámetros de la estrategia con métodos de aprendizaje automático
  3. Un módulo para añadir redes neuronales para determinar la dirección de las tendencias
  4. Integrar varios indicadores y condiciones de filtrado para construir una combinación de estrategias

Estas orientaciones de optimización pueden mejorar aún más la estabilidad, adaptabilidad e inteligencia de las estrategias.

Resumir

La estrategia de seguimiento de tendencias de doble línea es una estrategia de seguimiento de tendencias más sólida en general. Al mismo tiempo, combina el indicador de la línea de paridad y el canal de precios para determinar la dirección y la intensidad de la tendencia y emite una señal de negociación en una línea de paridad rápida.

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

//@version=2
strategy(title = "Noro's Trend MAs Strategy v1.8", shorttitle = "Trend MAs str 1.8", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, "long")
needshort = input(true, "short")
needstops = input(false, "stops")
stoppercent = input(5, defval = 5, minval = 1, maxval = 50, title = "Stop, %")
useohlc4 = input(false, defval = false, title = "Use OHLC4")
usefastsma = input(true, "Use fast MA Filter")
fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period")
slowlen = input(21, defval = 20, minval = 2, maxval = 200, title = "slow MA Period")
bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q")
needbg = input(false, defval = false, title = "Need trend Background?")
needarr = input(false, defval = false, title = "Need entry arrows?")

src = useohlc4 == true ? ohlc4 : close
fastsma = ema(src, 5)

//PriceChannel 1
lasthigh = highest(src, slowlen)
lastlow = lowest(src, slowlen)
center = (lasthigh + lastlow) / 2

//PriceChannel 2
lasthigh2 = highest(src, fastlen)
lastlow2 = lowest(src, fastlen)
center2 = (lasthigh2 + lastlow2) / 2

//Trend
//ma = type == 1 ? sma(src, len) : type == 2 ? ema(src, len) : type == 3 ? vwma(src, len) : type == 4 ? dema : type == 5 ? tema : type == 6 ? kama : type == 7 ? center : 0
//trend = low > ma and low[1] > ma[1] and low[2] > ma[2] ? 1 : high < ma and high[1] < ma[1] ? -1 : trend[1]

trend1 = low > center and low[1] > center[1] ? 1 : high < center and high[1] < center[1] ? -1 : trend1[1]
trend2 = low > center2 and low[1] > center2[1] ? 1 : high < center2 and high[1] < center2[1] ? -1 : trend1[1]
trend = trend1 == 1 and trend2 == 1 ? 1 : trend2 == -1 and trend2 == -1 ? -1 : trend[1]

//Bars
bar = close > open ? 1 : close < open ? -1 : 0
redbars = bars == 0 ? 1 : bars == 1 and bar == -1 ? 1 : bars == 2 and bar == -1 and bar[1] == -1 ? 1 : bars == 3 and bar == -1 and bar[1] == -1 and bar[2] == -1 ? 1 : 0
greenbars = bars == 0 ? 1 : bars == 1 and bar == 1 ? 1 : bars == 2 and bar == 1 and bar[1] == 1 ? 1 : bars == 3 and bar == 1 and bar[1] == 1 and bar[2] == 1 ? 1 : 0

//Signals
up = trend == 1 and (low < center2 or usefastsma == false) and (redbars == 1) ? 1 : 0
dn = trend == -1 and (high > center2 or usefastsma == false) and (greenbars == 1) ? 1 : 0

//Lines
colorfastsma = usefastsma == true ? red : na
plot(fastsma, color = colorfastsma, title = "Fast MA")
plot(center, color = blue, linewidth = 3, transp = 0, title = "Slow MA")
plot(center2, color = red, linewidth = 3, transp = 0, title = "PriceChannel 2")

//Arrows
plotarrow(up == 1 and needarr == true ? 1 : 0, colorup = black, colordown = black, transp = 0)
plotarrow(dn == 1 and needarr == true ? -1 : 0, colorup = black, colordown = black, transp = 0)

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 90)

//Alerts
alertcondition(up == 1, title='buy', message='Uptrend')
alertcondition(dn == 1, title='sell', message='Downtrend')

//Trading
stoplong = up == 1 and needstops == true ? close - (close / 100 * stoppercent) : stoplong[1]
stopshort = dn == 1 and needstops == true ? close + (close / 100 * stoppercent) : stopshort[1]

longCondition = up == 1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)
    strategy.exit("Stop Long", "Long", stop = stoplong)

shortCondition = dn == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    strategy.exit("Stop Short", "Short", stop = stopshort)