Estrategia de seguimiento de tendencia de media móvil dual


Fecha de creación: 2024-02-04 15:57:12 Última modificación: 2024-02-04 15:57:12
Copiar: 0 Número de Visitas: 504
1
Seguir
1617
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 utiliza una combinación de promedios móviles rápidos y promedios móviles lentos para determinar la dirección de la tendencia y combina el color de la entidad de la línea K como una señal de entrada. La estrategia tiene la característica de seguir una tendencia y invertir el comercio a la vez.

Principio de estrategia

La estrategia utiliza un promedio móvil lento de longitud 20 para determinar la dirección de la tendencia general, y se considera una tendencia ascendente cuando el precio sube y una tendencia descendente cuando el precio baja. Al mismo tiempo, se utiliza un promedio móvil rápido de longitud 5 como filtro de entrada, y solo se emite una transacción cuando el precio rompe el promedio móvil rápido.

La estrategia integra la información de tres dimensiones: la tendencia general, la línea media a corto plazo y la entidad de la línea K, lo que mejora la fiabilidad de la señal de negociación. La señal de negociación se emite cuando las tres direcciones coinciden, filtrando eficazmente parte del ruido.

Ventajas estratégicas

  1. También tiene características de seguimiento de tendencias y inversiones, y puede adaptarse a diferentes entornos de mercado.

  2. El proceso de evaluación multidimensional de las señales de intercambio antes de la emisión de la señal de intercambio permite filtrar las señales falsas y aumentar la probabilidad de ganar.

  3. El espacio de optimización de parámetros es grande, se puede optimizar mediante el ajuste de la longitud de la media móvil, el color de la entidad de la línea K para determinar el número de raíces, etc.

  4. La lógica de la estrategia es clara, concisa, fácil de entender y adecuada para los principiantes.

Riesgo estratégico

  1. En situaciones de gran movimiento, es fácil formar una racha de osing, lo que conlleva una mayor retirada. Se puede ajustar adecuadamente el parámetro de la media móvil o agregar un stop loss para evitarlo.

  2. En la fase de ordenamiento horizontal, es fácil que se forme un whipsaw, lo que conlleva pérdidas. Se puede ajustar adecuadamente el número de raíces para juzgar el color de la entidad de la línea K o cerrar el comercio inverso.

  3. Se requiere un buen retroceder para asegurar que la configuración de los parámetros sea razonable, de lo contrario, afectará significativamente el rendimiento de la estrategia.

Dirección de optimización

  1. Pruebe diferentes tipos de promedios móviles, como promedios móviles exponenciales, promedios móviles de Kaufman y otros.

  2. Aumentar el control del volumen de transacciones, como el volumen fijo de transacciones o el ajuste de intereses de la cuenta.

  3. Aumentar el mecanismo de suspensión de pérdidas. Cuando los precios vuelven a caer por debajo de la media móvil lenta, se puede considerar la suspensión de pérdidas.

  4. Se pueden probar diferentes variedades para determinar la estabilidad y adaptabilidad de la estrategia.

Resumir

La estrategia de seguimiento de tendencias de doble línea media móvil, combinada con el juicio de tendencias y el comercio inverso, puede capturar de manera efectiva el resto de las tendencias de la línea media y larga, pero también puede obtener ganancias adicionales en la línea corta. A través de la optimización de los parámetros y el fortalecimiento de los mecanismos, se puede ampliar aún más el espacio de ganancias. La lógica de la estrategia es simple y clara, muy adecuada para el estudio de aprendizaje de principiantes.

Código Fuente de la Estrategia
/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title = "Noro's Trend MAs 1.5", shorttitle = "Trend MAs 1.5", 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")
type = input(7, defval = 7, minval = 1, maxval = 7, title = "Type of Slow MA")
src = input(close, defval = close, title = "Source of Slow MA")
usefastsma = input(true, "Use fast MA Filter")
fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "slow MA Period")
bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q")

fastsma = ema(src, fastlen)

//DEMA
dema = 2 * ema(src, len) - ema(ema(close, len), len)

//TEMA
xPrice = close
xEMA1 = ema(src, len)
xEMA2 = ema(xEMA1, len)
xEMA3 = ema(xEMA2, len)
tema = 3 * xEMA1 - 3 * xEMA2 + xEMA3

//KAMA
xvnoise = abs(src - src[1])
nfastend = 0.20
nslowend = 0.05
nsignal = abs(src - src[len])
nnoise = sum(xvnoise, len)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) 
kama = nz(kama[1]) + nsmooth * (src - nz(kama[1]))

//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 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 ? 1 : high < ma ? -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 < fastsma or usefastsma == false) and redbars == 1 ? 1 : 0
dn = trend == -1 and (high > fastsma or usefastsma == false) and greenbars == 1 ? 1 : 0

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

//Trading
longCondition = up == 1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

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