
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.
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:
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.
La estrategia tiene las siguientes ventajas:
También existe el riesgo de que:
Soluciones para ello:
Esta estrategia puede seguir siendo mejorada en los siguientes aspectos:
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.
/*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)