Estrategia de seguimiento de tendencia de media móvil dual


Fecha de creación: 2023-12-21 11:45:35 Última modificación: 2023-12-21 11:45:35
Copiar: 0 Número de Visitas: 339
1
Seguir
1166
Seguidores

Estrategia de seguimiento de tendencia de media móvil dual

Descripción general

La estrategia de seguimiento de tendencias de doble media móvil es una estrategia de negociación cuantitativa que sigue la tendencia de los precios de las acciones. La estrategia utiliza un sistema de medias móviles de doble índice para determinar la dirección de la tendencia de los precios y, combinada con la fuerza de determinación de la tendencia del indicador ADX, captura la tendencia de los precios en la línea media y larga.

Principio de estrategia

La estrategia se basa principalmente en un sistema de medias móviles de doble índice para determinar la dirección de la tendencia de los precios. La estrategia utiliza EMAs rápidas y lentas de dos parámetros diferentes. La EMA1 de la línea rápida responde a los cambios de precios más rápidamente, y la EMA2 de la línea lenta responde a los cambios de precios con más retraso.

Además, la estrategia también introduce el indicador ADX para determinar la fuerza de la tendencia. El ADX determina la fuerza de la tendencia mediante el cálculo de la fluctuación de los precios. Cuando el valor del ADX aumenta, indica que la tendencia se está fortaleciendo; cuando el valor del ADX disminuye, indica que la tendencia se está debilitando.

En concreto, las reglas de generación de señales de negociación de la estrategia son:

  1. Haga más en la línea rápida cuando atraviese la línea lenta, y libre en la línea rápida cuando atraviese la línea lenta.
  2. El ADX>25 es el límite para hacer más vacío.

Esto puede filtrar de manera efectiva las señales no válidas de tendencia más débil, y mejorar aún más la estabilidad del sistema de negociación.

Ventajas estratégicas

La estrategia tiene las siguientes ventajas:

  1. Capturar las tendencias de los precios de las líneas medianas y largas: El sistema de dos medias EMA permite determinar con eficacia las tendencias de la línea media de los precios, evitando ser interrumpido por el ruido del mercado a corto plazo.

  2. Filtración de las fracturas falsas: Evite las pérdidas innecesarias de las falsas rupturas que se producen cerca de los puntos de inflexión de tendencia mediante el indicador ADX para determinar la fuerza de la tendencia.

  3. Optimización de parámetros con mucho espacio: Las combinaciones de parámetros de línea rápida y lenta, los parámetros ADX, etc. tienen espacio para la optimización, se puede obtener una mejor eficacia comercial a través de la combinación de parámetros.

  4. Altamente adaptableLa estrategia es válida para la mayoría de las acciones y períodos de tiempo, y ha sido probada en varios mercados.

  5. Fácil de hacerLa estrategia requiere solo un promedio simple, consume menos recursos, es fácil de programar y tiene un bajo costo de aplicación.

Riesgo estratégico

La estrategia también tiene ciertos riesgos, que se centran en:

  1. Riesgo de inversión de tendenciaEn la actualidad, las estrategias de tendencia no pueden determinar el punto de reversión de la tendencia, por lo que es inevitable que se produzcan grandes pérdidas cuando la verdadera reversión de la tendencia ocurra.

  2. Parámetros para optimizar el riesgo excesivoLa optimización de los parámetros al extremo también puede conducir a una estrategia excesivamente ajustada a los datos históricos, lo que reduce la estabilidad de la estrategia y la efectividad en la batalla.

  3. Riesgo de emergenciaUn evento inesperado importante rompe el patrón de tendencia de precios original, en cuyo caso el indicador de media móvil falla y se requiere una intervención manual o un parón para controlar las pérdidas.

En cuanto a los riesgos mencionados, podemos optimizar en los siguientes aspectos:

  1. La introducción de indicadores adicionales para determinar el punto de inflexión de precios. Por ejemplo, la introducción de volumen de transacciones, el volumen de transacciones se amplificará al mismo tiempo que el cambio de precio.

  2. La flexibilidad adecuada de los parámetros ADX garantiza que se aprovechen las oportunidades al comienzo de la tendencia. Al mismo tiempo, se pueden introducir indicadores de juicio auxiliares como MACD.

  3. Realizar pruebas de entrenamiento en varios grupos de combinaciones de parámetros, seleccionar parámetros que sean buenos tanto para la estabilidad como para la efectividad en combate. Evite el riesgo de optimización excesiva de un solo conjunto de parámetros.

Dirección de optimización de la estrategia

La estrategia también tiene algunas opciones de optimización:

  1. Introducción de un mecanismo de stop lossSe puede establecer un stop loss móvil o un stop loss porcentual, que se puede detener activamente cuando la tendencia se invierte, para evitar pérdidas excesivas en la posición.

  2. Indicador de volumen de negocioPor ejemplo, el volumen de transacciones puede evitar señales erróneas en los puntos de inflexión de precios cuando el volumen de transacciones aumenta.

  3. Optimización de los parámetros de adaptación: Permitir que los parámetros de los indicadores se adapten a los cambios en el mercado en tiempo real, en lugar de parámetros estáticos fijos, lo que puede mejorar considerablemente la estabilidad de la estrategia.

  4. Introducción al aprendizaje automáticoEl uso de algoritmos de aprendizaje automático para analizar una gran cantidad de datos históricos, determinar los parámetros de las medias móviles y el ADX, e incluso predecir el movimiento futuro de los precios. Esta es una de las direcciones en que evolucionan las estrategias de medias móviles.

  5. Optimización entre ciclosLa configuración de los parámetros puede variar según el ciclo de negociación, lo que permite probar la configuración óptima de los parámetros para cada ciclo.

Resumir

La estrategia de seguimiento de tendencias de doble media móvil es una estrategia estable y madura en general. La estrategia capta las tendencias de precios de la línea media a través del sistema de dos medias EMA y tiene un indicador ADX para filtrar las señales, lo que permite capturar de manera efectiva las tendencias de los precios de las acciones y evitar la interferencia del ruido del mercado a corto plazo. Al mismo tiempo, la estrategia también presenta un cierto riesgo, que requiere la optimización de la combinación de parámetros con el método de deterioro, e incluso puede introducir más indicadores auxiliares y algoritmos de aprendizaje automático para mejorar la estabilidad de la estrategia.

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

//@version=3
strategy("Kitaec Strategy4", shorttitle = "Kitaec str4", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
len = input(14, defval=14, minval=1, maxval=1000, title="Smoothing")
len2 = input(14, defval=14, minval=1, maxval=1000, title="Smoothing2")
len3=input(550)
src = close
ema1=ema(src, len)
ema2=ema(ema1, len2)
d=ema1-ema2
zlema=ema1+d

ema21=ema(src, (len/3)*2)
ema22=ema(ema21, (len2/3)*2)
d2=ema21-ema22
zlema2=ema21+d2

ema31=ema(src, len3)
ema32=ema(ema21, len3)
d3=ema31-ema32
zlema3=ema31+d2

fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//MAs
//ma1 = security(tickerid, "60", vwma(src, len)[1])
//ma2 = security(tickerid, "120", vwma(src, len)[1])
//plot(ma1, linewidth = 2, color = blue, title = "MA")
//plot(ma2, linewidth = 2, color = red, title = "MA2")

// ADX
lenadx = 14
lensig = 14
limadx = 18

up = change(high)
down = -change(low)
trur = rma(tr, lenadx)
plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, lenadx) / trur)
minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, lenadx) / trur)
sum = plus + minus 
adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), lensig)
adx2 = ema(adx, 14)
adx2i = ema(adx2,14)
dadx2 = adx2 - adx2i
zladx2 = adx2 + dadx2
plus2 = ema(plus, 14)
plus2i = ema (plus2, 14)
dplus2 = plus2 - plus2i
zlplus2 = plus2 + dplus2

minus2 = ema(minus, 14)
minus2i = ema (minus2, 14)
dminus2 = minus2 - minus2i
zlminus2 = minus2 + dminus2

vwma = vwma(close, 150)
vwma2 = ema(vwma, 9)
vwma2i = ema(vwma2, 9)
dvwma2 = vwma2 - vwma2i
zlvwma2 = vwma2 + dvwma2


rmax=rma(src, len)
rmax2=rma(rmax, len2)
rmd=rmax-rmax2
zlrmax=rmax+rmd
rmaxz=rma(src, (len/3)*2)
rmaxz2=rma(rmaxz, (len2/3)*2)
rmzd=rmaxz-rmaxz2
zlrmaxz=rmaxz+rmzd
rmaxcol2=zlrmaxz[1] > zlema2[1] ? red:lime
rmaxcol= zlrmax[1] > zlema[1] ? red:lime


rmazlema3=rma(zlema3, 100)
plot(rmazlema3, color=gray, linewidth=2)
plot(zlema, color=green)
plot(zlema2, color=yellow)
plot(zlema3, color=teal, linewidth=2)
plot(ema2, color=na)
plot(rmax, color=rmaxcol2, linewidth=3)
plot(zlrmax, color=rmaxcol, linewidth=3)


//Trading
size = strategy.position_size
lot = 0.0 
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]

if zlrmax[1] < zlema[1]
    strategy.entry("Buy", strategy.long, needlong ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if zlrmax[1] > zlema[1]
    strategy.entry("Sell", strategy.short, needshort ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))