
La estrategia es un sistema de negociación de reversión de tendencias basado en el desvío de la dinámica del gráfico columnar del MACD. Captura las señales de reversión del mercado analizando la relación entre los cambios en la forma de la línea K y los cambios en la dinámica del gráfico columnar del MACD.
La lógica de negociación de la estrategia se divide en dos direcciones: hacer short y hacer plus: Condiciones de vacío: cuando hay una línea de sol más grande (precio de cierre superior al precio de apertura) y su entidad es mayor que la línea K anterior, mientras que el diagrama de columnas MACD presenta una tendencia a la baja durante 3 períodos consecutivos, lo que indica que la energía de la oscilación ascendente se está debilitando y el sistema emite una señal de vacío. Hacer más condiciones: cuando hay una línea negativa más grande (el precio de cierre es menor que el precio de apertura) y su entidad es mayor que la línea K anterior, mientras que el gráfico de columnas MACD presenta una tendencia ascendente durante 3 períodos consecutivos, lo que indica que el movimiento descendente se está debilitando y el sistema emite más señales. La administración de posiciones utiliza un mecanismo de liquidación de la posición de la señal oponente, es decir, se liquida la posición actual cuando aparece una señal de negociación en la dirección opuesta. La estrategia no establece paros y paros, y depende completamente de la señal para administrar la posición.
La estrategia de captura de oportunidades de reversión del mercado mediante la combinación de la forma de la línea K y el cambio de la dinámica de la columna MACD, con características de sencillez de operación y claridad de la señal. Aunque existe un cierto riesgo, la estabilidad y la rentabilidad de la estrategia se pueden mejorar significativamente con medidas de optimización y gestión de riesgos razonables. La estrategia es especialmente adecuada para un entorno de mercado con tendencias evidentes y puede ser una parte importante del sistema de negociación.
/*backtest
start: 2024-11-10 00:00:00
end: 2025-02-19 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("MACD Momentum Reversal Strategy", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// === MACD Calculation ===
fastLength = input.int(12, "MACD Fast Length")
slowLength = input.int(26, "MACD Slow Length")
signalLength = input.int(9, "MACD Signal Length")
[macdLine, signalLine, histLine] = ta.macd(close, fastLength, slowLength, signalLength)
// === Candle Properties ===
bodySize = math.abs(close - open)
prevBodySize = math.abs(close[1] - open[1])
candleBigger = bodySize > prevBodySize
bullishCandle = close > open
bearishCandle = close < open
// === MACD Momentum Conditions ===
// For bullish candles: if the MACD histogram (normally positive) is decreasing over the last 3 bars,
// then the bullish momentum is fading – a potential short signal.
macdLossBullish = (histLine[2] > histLine[1]) and (histLine[1] > histLine[0])
// For bearish candles: if the MACD histogram (normally negative) is increasing (moving closer to zero)
// over the last 3 bars, then the bearish momentum is fading – a potential long signal.
macdLossBearish = (histLine[2] < histLine[1]) and (histLine[1] < histLine[0])
// === Entry Conditions ===
// Short entry: Occurs when the current candle is bullish and larger than the previous candle,
// while the MACD histogram shows fading bullish momentum.
enterShort = bullishCandle and candleBigger and macdLossBullish
// Long entry: Occurs when the current candle is bearish and larger than the previous candle,
// while the MACD histogram shows fading bearish momentum.
enterLong = bearishCandle and candleBigger and macdLossBearish
// === Plot the MACD Histogram for Reference ===
plot(histLine, title="MACD Histogram", color=color.blue, style=plot.style_histogram)
// === Strategy Execution ===
// Enter positions based on conditions. There is no stop loss or take profit defined;
// positions remain open until an opposite signal occurs.
if (enterShort)
strategy.entry("Short", strategy.short)
if (enterLong)
strategy.entry("Long", strategy.long)
// Exit conditions: close an existing position when the opposite signal appears.
if (strategy.position_size > 0 and enterShort)
strategy.close("Long")
if (strategy.position_size < 0 and enterLong)
strategy.close("Short")