Estrategia MACD de marco temporal múltiple


Fecha de creación: 2023-11-28 15:33:35 Última modificación: 2023-11-28 15:33:35
Copiar: 0 Número de Visitas: 1201
1
Seguir
1617
Seguidores

Estrategia MACD de marco temporal múltiple

Descripción general

La estrategia MACD de varios marcos de tiempo es una estrategia de negociación cuantitativa que utiliza el indicador MACD para lograr el seguimiento de tendencias en varios marcos de tiempo. La estrategia emite una señal de negociación calculando el indicador MACD en diferentes períodos de tiempo (minutos 3, 5, 15 y 30 minutos) para determinar si el movimiento de los precios es consistente entre los diferentes períodos.

Principio de estrategia

La lógica central de esta estrategia es calcular la intersección de los indicadores MACD en varios marcos de tiempo (por ejemplo, 3 minutos, 5 minutos, 15 minutos y 30 minutos). En primer lugar, se calcula el indicador MACD en cada marco de tiempo y se determina la tendencia de los precios en ese marco de tiempo (por ejemplo, al alza o caída) según el indicador MACD. Luego se hace un juicio integral sobre la tendencia de los precios en varios marcos de tiempo:

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

Al juzgar las tendencias a través de un marco de tiempo, se puede eliminar el ruido del mercado a corto plazo y hacer que las señales de negociación sean más confiables.

Ventajas estratégicas

La estrategia tiene las siguientes ventajas:

  1. Detección de tendencias a través de marcos de tiempo, filtrando el ruido y haciendo que las señales de negociación sean más fiables.
  2. Los parámetros del indicador MACD se pueden configurar de manera personalizada para adaptarse a diferentes entornos del mercado.
  3. La configuración flexible requiere un marco de tiempo de juicio integral, reglas de negociación de definición propia.

Riesgos estratégicos y soluciones

También existe el riesgo de que:

  1. En todos los marcos de tiempo, la consistencia de las tendencias podría perderse la oportunidad de una reversión local.
  2. La configuración incorrecta de los parámetros del indicador MACD puede causar una mala eficacia de las señales de negociación.

Soluciones para ello:

  1. La flexibilidad adecuada de las reglas de arbitraje global permitiría que los precios de los marcos temporales individuales se revirtieran y se aprovecharan más oportunidades;
  2. La necesidad de ajustar los parámetros del indicador MACD en función de los diferentes mercados para que las señales de negociación se ajusten mejor a la situación actual.

Dirección de optimización

Esta estrategia puede seguir siendo mejorada en los siguientes aspectos:

  1. Aumentar o disminuir el número de marcos de tiempo que requieren un juicio integral para buscar la combinación óptima;
  2. Prueba de diferentes configuraciones de los parámetros del indicador MACD
  3. Adaptar las reglas específicas de entrada y salida de acuerdo con las pruebas reales.

Resumir

La estrategia MACD de marco temporal múltiple utiliza la función de determinación de tendencias del indicador MACD para detectar movimientos de precios a través de marcos temporales, puede filtrar el ruido de manera efectiva y mejorar la calidad de la señal. La estrategia puede ajustarse a través de parámetros y reglas de optimización, adaptarse de manera flexible a diferentes variedades y entornos de mercado, y tiene una gran utilidad.

Código Fuente de la Estrategia
/*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)