Estrategia MACD de varios plazos

El autor:¿ Qué pasa?, Fecha: 2023-11-28 15:33:35
Las etiquetas:

img

Resumen general

La Estrategia MACD Multi Timeframe es una estrategia de trading cuantitativa que rastrea las tendencias utilizando el indicador MACD a través de múltiples marcos de tiempo.

Estrategia lógica

La lógica central de esta estrategia es calcular la situación de cruce del indicador MACD a través de múltiples marcos de tiempo (3 minutos, 5 minutos, 15 minutos, 30 minutos). Primero, el indicador MACD se calcula en cada marco de tiempo para juzgar la tendencia del precio (hacia arriba o hacia abajo) bajo ese marco de tiempo. Luego, las tendencias del precio a través de múltiples marcos de tiempo se juzgan de manera integral:

  1. Cuando los precios aumentan en todos los marcos de tiempo, se genera una señal de compra.
  2. Cuando los precios caen en todos los marcos de tiempo, se genera una señal de venta.

Al juzgar la tendencia a través de los marcos de tiempo, el ruido del mercado a corto plazo puede filtrarse de manera efectiva, haciendo que las señales comerciales sean más confiables.

Ventajas

Esta estrategia tiene las siguientes ventajas:

  1. La detección de tendencias a través de marcos de tiempo filtra el ruido y hace que las señales comerciales sean más confiables.
  2. Los parámetros del indicador MACD se pueden personalizar para adaptarse a diferentes entornos de mercado.
  3. Los marcos de tiempo para el juicio exhaustivo pueden configurarse de manera flexible para definir las reglas de negociación de forma independiente.

Riesgos y soluciones

Esta estrategia también tiene los siguientes riesgos:

  1. Al juzgar la consistencia de la tendencia en todos los marcos de tiempo, es posible que no se observen las reversiones locales.
  2. La configuración incorrecta de los parámetros MACD puede provocar un mal rendimiento de las señales de negociación.

Soluciones correspondientes:

  1. Las reglas de juicio pueden ser moderadamente relajadas para permitir que las inversiones de precios en marcos de tiempo individuales capturen más oportunidades.
  2. Los parámetros MACD deben ajustarse de acuerdo con los diferentes mercados para que las señales de negociación se adapten mejor a las tendencias actuales.

Direcciones de optimización

Esta estrategia puede optimizarse aún más en los siguientes aspectos:

  1. Aumentar o disminuir el número de marcos de tiempo necesarios para un juicio completo para encontrar la combinación óptima.
  2. Prueba diferentes ajustes de parámetros del indicador MACD.
  3. Ajustar las reglas específicas de entrada y salida en función de los resultados reales de las pruebas de retroceso.

Resumen de las actividades

La estrategia MACD Multi Timeframe utiliza la capacidad de juicio de tendencia del indicador MACD para detectar movimientos de precios a través de marcos de tiempo, lo que puede filtrar efectivamente el ruido y mejorar la calidad de la señal.


/*backtest
start: 2023-10-28 00:00:00
end: 2023-11-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("[RichG] Easy MTF Strategy", overlay=false)

TF_1_time = input("3", "Timeframe 1")
TF_2_time = input("5", "Timeframe 2")
TF_3_time = input("15", "Timeframe 3")
TF_4_time = input("30", "Timeframe 4")

fastLen = input(title="Fast Length",  defval=12)
slowLen = input(title="Slow Length",  defval=26)
sigLen  = input(title="Signal Length",  defval=9)
[macdLine, signalLine, _] = macd(close, fastLen, slowLen, sigLen)

width = 5
upcolor = green
downcolor = red
neutralcolor = blue
linestyle = line

TF_1 = request.security(syminfo.tickerid, TF_1_time, open) < request.security(syminfo.tickerid, TF_1_time, close) ? true:false
TF_1_color = TF_1 ? upcolor:downcolor

TF_2 = request.security(syminfo.tickerid, TF_2_time, open) < request.security(syminfo.tickerid, TF_2_time, close) ? true:false
TF_2_color = TF_2 ? upcolor:downcolor

TF_3 = request.security(syminfo.tickerid, TF_3_time, open) < request.security(syminfo.tickerid, TF_3_time, close) ? true:false
TF_3_color = TF_3 ? upcolor:downcolor

TF_4 = request.security(syminfo.tickerid, TF_4_time, open) < request.security(syminfo.tickerid, TF_4_time, close) ? true:false
TF_4_color = TF_4 ? upcolor:downcolor

TF_global = TF_1 and TF_2 and TF_3 and TF_4 
TF_global_bear = TF_1 == false and TF_2 == false and TF_3 == false and TF_4 == false
TF_global_color = TF_global ? green : TF_global_bear ? red : white
TF_trigger_width = TF_global ? 6 : width

plot(1, style=linestyle, linewidth=width, color=TF_1_color)
plot(5, style=linestyle, linewidth=width, color=TF_2_color)
plot(10, style=linestyle, linewidth=width, color=TF_3_color)
plot(15, style=linestyle, linewidth=width, color=TF_4_color)
plot(25, style=linestyle, linewidth=4, color=TF_global_color)    

exitCondition_Long = TF_global_bear
exitCondition_Short = TF_global

longCondition = TF_global
if (longCondition)
    strategy.entry("MTF_Long", strategy.long)

shortCondition = TF_global_bear
if (shortCondition)
    strategy.entry("MTF_Short", strategy.short)
    
strategy.close("MTF_Long", when=exitCondition_Long)    
strategy.close("MTF_Short", when=exitCondition_Short)

Más.