Estrategia de seguimiento de tendencias con rupturas de precios de medias móviles


Fecha de creación: 2024-01-26 15:18:29 Última modificación: 2024-01-26 15:18:29
Copiar: 0 Número de Visitas: 554
1
Seguir
1617
Seguidores

Estrategia de seguimiento de tendencias con rupturas de precios de medias móviles

Descripción general

Esta estrategia se basa en la intersección de los precios con las medias móviles para generar señales de compra y venta. Ofrece varios tipos de medias móviles y un parámetro de tolerancia para filtrar falsas rupturas. La estrategia busca capturar los puntos de inflexión de la tendencia de los precios y realizar un seguimiento de la tendencia.

Principio de estrategia

La estrategia se basa en el precio de cierre y calcula un promedio móvil de longitud N. Los típicos tipos de promedio móvil incluyen el promedio móvil simple (SMA), el promedio móvil indexado (EMA), el promedio móvil ponderado (WMA), etc. Luego se establece un nivel de tolerancia, por ejemplo, el 5%, y se calcula el promedio móvil en trayectoria (en trayectoria 1.05 veces mayor que el promedio móvil) y el promedio móvil en trayectoria (en trayectoria 0.95 veces mayor que el promedio móvil). Cuando el precio de cierre está en trayectoria, se genera una señal de compra; cuando el precio de cierre está en trayectoria, se genera una señal de venta.

Ventajas estratégicas

  • Utilizando las características de seguimiento de tendencias de las medias móviles, se puede seguir de manera efectiva los movimientos de los precios.
  • Ofrece varios tipos de medias móviles que se pueden combinar de manera flexible
  • Los parámetros de la brecha pueden filtrar falsas brechas y evitar transacciones innecesarias
  • Solo se puede hacer en blanco para seguir una tendencia bajista.

Riesgo estratégico

  • Los promedios móviles son retrasados y pueden perder el punto de inflexión de los precios
  • No se aplica en un entorno de mercado en el que los precios fluctúan
  • La configuración incorrecta de los parámetros de la diferencia puede filtrar algunas señales válidas
  • El riesgo es mayor, hay que actuar con prudencia

Dirección de optimización

  • Optimización de los tipos y longitudes de las medias móviles
  • Prueba de diferentes configuraciones de parámetros de tolerancia
  • Combinación con otros indicadores para filtrar señales
  • Aumentar las estrategias de gestión de posiciones

Resumir

La estrategia en general es una estrategia de seguimiento de tendencias más típica. Utiliza la relación de los precios con las medias móviles para juzgar las tendencias y ofrece cierta flexibilidad. Con la optimización de los parámetros y el filtrado de la señal adecuada, puede ser una estrategia cuantitativa de buen efecto.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © RafaelPiccolo

//@version=4
strategy("Price X MA Cross", overlay=true)

typ = input("HMA", "MA Type", options=["SMA", "EMA", "WMA", "HMA", "VWMA", "RMA", "TEMA"])
len = input(100, minval=1, title="Length")
src = input(close, "Source", type=input.source)
tol = input(0, minval=0, title="Tolerance (%)", type=input.float)
shortOnly = input(false, "Short only")

tema(src, len)=>
    ema1 = ema(src, len)
    ema2 = ema(ema1, len)
    ema3 = ema(ema2, len)
    return = 3 * (ema1 - ema2) + ema3

getMAPoint(type, len, src)=>
    return = type == "SMA" ? sma(src, len) : type == "EMA" ? ema(src, len) : type == "WMA" ? wma(src, len) : type == "HMA" ? hma(src, len) : type == "VWMA" ? vwma(src, len) : type == "RMA" ? rma(src, len) : tema(src, len)

ma = getMAPoint(typ, len, src)
upperTol = ma * (1 + tol/100)
lowerTol = ma * (1 - tol/100)

longCondition = crossover(close, upperTol)
shortCondition = crossunder(close, lowerTol)

if (shortCondition)
    strategy.entry("Short", strategy.short)

if (longCondition)
    if (shortOnly)
        strategy.close("Short")
    else
        strategy.entry("Long", strategy.long)

plot(ma, "Moving Average", close > ma ? color.green : color.red, linewidth = 2)
t1 = plot(tol > 0 ? upperTol : na, transp = 70)
t2 = plot(tol > 0 ? lowerTol : na, transp = 70)
fill(t1, t2, color = tol > 0 ? color.blue : na)