
Este artículo presenta una estrategia de negociación que combina los indicadores técnicos MACD y Supertrend. La estrategia utiliza las señales de cruce del indicador MACD y la dirección de la tendencia del indicador Supertrend para determinar el momento de entrada y salida con el fin de obtener ganancias en el contexto de la tendencia.
La estrategia utiliza el indicador MACD y el indicador Supertrend para generar señales de negociación. El MACD se obtiene de la media móvil rápida (de 12 días por defecto) menos la media móvil lenta (de 26 días por defecto) y se calcula la media móvil de 9 días del MACD como línea de señal. Cuando la línea de la MACD cruza la línea de la señal, se forma una cruz dorada, es una señal de multiplicación; cuando la línea de la MACD cruza la línea de la señal, se forma una cruz muerta, es una señal de vacío.
Este artículo presenta una estrategia de negociación basada en el indicador MACD y el indicador Supertrend, que utiliza el juicio de la tendencia del MACD y el filtro de la dirección de la Supertrend, para operar en una situación de tendencia, mientras se utiliza el cruce de la línea de señal y la posición cerrada a tiempo para controlar la retirada. La estrategia tiene la ventaja de la sencillez lógica, la capacidad de captura de la tendencia es fuerte, pero también existe el riesgo de la adaptabilidad de los parámetros, el retraso de la señal y el comercio frecuente.
/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title="MACD + Supertrend Strategy", overlay=true)
// MACD Calculation
fastLength = 12
slowLength = 26
signalSmoothing = 9
macdSrc = close
// MACD Line
fastMA = ta.ema(macdSrc, fastLength)
slowMA = ta.ema(macdSrc, slowLength)
macdLine = fastMA - slowMA
// MACD Signal Line
signalMA = ta.ema(macdLine, signalSmoothing)
// MACD Histogram
histogram = macdLine - signalMA
// Supertrend Calculation
supertrendATRLength = 10
supertrendFactor = 3.0
[supertrend, _] = ta.supertrend(supertrendFactor, supertrendATRLength)
// Entry and Exit Conditions
longCondition = (macdLine > signalMA) and (supertrend < close)
shortCondition = (signalMA > macdLine) and (supertrend > close)
// Long Entry
if longCondition
strategy.entry("Long", strategy.long)
// Long Exit (Sell)
if signalMA > macdLine
strategy.close("Long")
// Short Entry
if shortCondition
strategy.entry("Short", strategy.short)
// Short Exit (Cover)
if macdLine > signalMA
strategy.close("Short")
// Close Long Position if short condition is met
if shortCondition
strategy.close("Long")
// Close Short Position if long condition is met
if longCondition
strategy.close("Short")
// Plotting
plotshape(series=longCondition, title="Long Entry Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="Long")
plotshape(series=shortCondition, title="Short Entry Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="Short")
// Alerts
alertcondition(longCondition, title='Long Entry Signal', message='MACD crossover and Supertrend below close price')
alertcondition(signalMA > macdLine, title='Long Exit Signal', message='MACD signal line crosses above MACD line')
alertcondition(shortCondition, title='Short Entry Signal', message='MACD crossunder and Supertrend above close price')
alertcondition(macdLine > signalMA, title='Short Exit Signal', message='MACD line crosses above MACD signal line')