Estrategia de trading de tendencia basada en el indicador MACD


Fecha de creación: 2024-02-02 11:32:48 Última modificación: 2024-02-02 11:32:48
Copiar: 3 Número de Visitas: 642
1
Seguir
1617
Seguidores

Estrategia de trading de tendencia basada en el indicador MACD

Descripción general

El núcleo de esta estrategia está basado en un indicador desarrollado por Andrew Abraham en un artículo publicado en la columna TASC de la revista de tendencias de la bolsa de valores en septiembre de 1998. El indicador utiliza el rango de fluctuación real promedio y el canal de precios para determinar la dirección de la tendencia del mercado, y en combinación con el indicador MACD para filtrar las señales de negociación con el objetivo de capturar tendencias de la línea media y larga.

Principio de estrategia

La estrategia primero calcula el promedio móvil ponderado de la escala real de fluctuación de 21 días (ATR) como la escala de fluctuación de referencia. Luego calcula los máximos y mínimos de los últimos 21 días para comparar el precio de cierre de la línea K actual con el límite superior e inferior de la escala de fluctuación de referencia para determinar si el precio ha roto el canal y así determinar la dirección de la tendencia.

En concreto, se define el límite superior de la vía como el precio máximo de los últimos 21 días menos tres veces el ATR de referencia, y el límite inferior de la vía como el precio mínimo de los últimos 21 días más tres veces el ATR de referencia. Cuando el precio de cierre es superior al límite superior de la vía, se considera una tendencia alcista; cuando el precio de cierre es inferior al límite inferior de la vía, se considera una tendencia bajista.

Al mismo tiempo que determina la dirección de la tendencia, la estrategia también introduce un filtro en el indicador MACD. La columna MACD solo genera una señal de compra cuando está correcta, para evitar que se pierda el punto de compra.

Ventajas estratégicas

Esta estrategia, combinada con el análisis de tendencias y el filtrado de indicadores, permite determinar la dirección de la tendencia de la línea larga en el mercado y evitar ser engañado por las fluctuaciones a corto plazo del mercado. Las ventajas específicas son las siguientes:

  1. Utiliza el canal de precios para determinar tendencias y determinar con precisión la dirección de las tendencias de la línea larga
  2. El rango de fluctuación de los índices puede ajustarse dinámicamente para adaptarse a los cambios en el mercado
  3. El filtro de los indicadores MACD aumenta la base de decisión y evita perder el punto de compra
  4. Parámetros configurables y flexibilidad para ajustar el estilo de la política

Riesgo estratégico

La estrategia también tiene ciertos riesgos, que se manifiestan principalmente en los siguientes aspectos:

  1. La brecha de los canales de precios no puede evitarse por completo
  2. Los indicadores MACD pueden generar señales engañosas
  3. El ajuste incorrecto de parámetros puede causar inestabilidad en la estrategia

Para ello, se puede reducir el riesgo mediante la optimización de la configuración de los parámetros, el estricto tamaño de la posición y la detención oportuna de la pérdida.

Dirección de optimización de la estrategia

La estrategia se puede optimizar principalmente en los siguientes aspectos:

  1. Prueba diferentes combinaciones de parámetros para encontrar el mejor

Se puede probar una combinación de diferentes parámetros de longitud o parámetros multiplicadores para encontrar la combinación de parámetros que produzca el mejor rendimiento basado en los datos de retroalimentación.

  1. En combinación con otros indicadores de filtración

Se puede probar en combinación con otros indicadores como RSI, KDJ y otros para filtrar la señal y ver si se puede mejorar la tasa de rendimiento.

  1. Parámetros de ajuste dinámico

Los parámetros se pueden ajustar de forma dinámica en función de las condiciones del mercado, como la ampliación adecuada de la gama de canales cuando la tendencia es evidente y el estrechamiento adecuado de la gama de canales en caso de crisis.

Resumir

La estrategia en su conjunto es una estrategia de seguimiento de tendencias relativamente sólida. Combinando el método de determinación de la dirección de la tendencia de los canales de precios con el método de filtración de señales del indicador MACD, se puede determinar eficazmente la tendencia de la línea larga en el mercado y generar ganancias estables. A través de la optimización de parámetros, la gestión de riesgos y la corrección adecuada, la estrategia puede ser una parte importante del sistema de comercio cuantitativo.

Código Fuente de la Estrategia
/*backtest
start: 2023-01-26 00:00:00
end: 2024-02-01 00:00:00
period: 1d
basePeriod: 1h
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/
// © melihtuna

//@version=1
strategy("Trend Trader Strategy with MACD", overlay=true)

// === Trend Trader Strategy ===
Length = input(21),
Multiplier = input(3, minval=1)
MacdControl = input(true, title="Control 'MACD Histogram is positive?' when Buy condition")
avgTR      = wma(atr(1), Length)
highestC   = highest(Length)
lowestC    = lowest(Length)
hiLimit = highestC[1]-(avgTR[1] * Multiplier)
loLimit = lowestC[1]+(avgTR[1] * Multiplier)
ret = iff(close > hiLimit and close > loLimit, hiLimit,
        iff(close < loLimit and close < hiLimit, loLimit, nz(ret[1], 0)))
pos =	iff(close > ret, 1,
	    iff(close < ret, -1, nz(pos[1], 0))) 
barcolor(pos == -1 ? red: pos == 1 ? green : blue )
plot(ret, color= blue , title="Trend Trader Strategy with MACD")

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2020, title = "From Year", minval = 2017)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true

// === MACD ===
[macdLine, signalLine, histLine] = macd(close, 12, 26, 9)
macdCond= MacdControl ? histLine[0] > 0 ? true : false : true

strategy.entry("BUY", strategy.long, when = window() and pos == 1 and macdCond)
strategy.entry("SELL", strategy.short, when = window() and pos == -1)