
La estrategia es un sistema de seguimiento de tendencias basado en el gráfico Heikin-Ashi de tipo plano y el cruce de las medias móviles simples (SMA). La estrategia utiliza el gráfico Heikin-Ashi después de la suavización de la EMA para identificar los cambios en la tendencia y el cruce de la SMA de 44 ciclos para capturar las principales oportunidades de tendencia en el mercado. La estrategia diseña un mecanismo de gestión de posiciones dinámico que se cierra automáticamente cuando el precio está cerca de la media a largo plazo para evitar el riesgo de fluctuaciones en todo el mercado.
La lógica central de la estrategia incluye tres elementos clave: primero, la conversión de la línea K tradicional en un gráfico de Heikin-Ashi para filtrar el ruido del mercado mediante el cálculo de los promedios aritméticos de los cuatro precios de apertura y caída; segundo, el uso de un EMA de 6 ciclos para el tratamiento suave de Heikin-Ashi, lo que mejora aún más la fiabilidad de la señal; y finalmente, la combinación de un precio de cierre de Heikin-Ashi después de la suavización con un SMA de 44 ciclos, que genera una señal de exceso de movimiento por encima y una de vacío por debajo.
La estrategia, combinada con el gráfico de Heikin-Ashi y el sistema de líneas medias SMA, construye un sistema de comercio de seguimiento de tendencias sólido. La estrategia tiene un mecanismo de generación de señales perfecto, un control de riesgo razonable y es especialmente adecuada para su aplicación en mercados con características de tendencia evidentes.
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Smoothed Heikin Ashi with SMA Strategy", overlay=true)
// Input parameters for SMAs
s1 = input.int(11, title="Short SMA Period")
s2 = input.int(44, title="Long SMA Period")
noPositionThreshold = input.float(0.001, title="No Position Threshold", step=0.0001)
// Calculate the original Heikin-Ashi values
haClose = (open + high + low + close) / 4
var float haOpen = na
haOpen := na(haOpen[1]) ? (open + close) / 2 : (haOpen[1] + haClose[1]) / 2
haHigh = math.max(high, math.max(haOpen, haClose))
haLow = math.min(low, math.min(haOpen, haClose))
// Smoothing using exponential moving averages
smoothLength = input.int(6, title="Smoothing Length")
smoothedHaClose = ta.ema(haClose, smoothLength)
smoothedHaOpen = ta.ema(haOpen, smoothLength)
smoothedHaHigh = ta.ema(haHigh, smoothLength)
smoothedHaLow = ta.ema(haLow, smoothLength)
// Calculate SMAs
smaShort = ta.sma(close, s1)
smaLong = ta.sma(close, s2)
// Plotting the smoothed Heikin-Ashi values
plotcandle(smoothedHaOpen, smoothedHaHigh, smoothedHaLow, smoothedHaClose, color=(smoothedHaClose >= smoothedHaOpen ? color.green : color.red), title="Smoothed Heikin Ashi")
plot(smaShort, color=color.blue, title="SMA Short")
plot(smaLong, color=color.red, title="SMA Long")
// Generate buy/sell signals based on SHA crossing 44 SMA
longCondition = ta.crossover(smoothedHaClose, smaLong)
shortCondition = ta.crossunder(smoothedHaClose, smaLong)
noPositionCondition = math.abs(smoothedHaClose - smaLong) < noPositionThreshold
// Strategy logic
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
if (noPositionCondition and strategy.position_size != 0)
strategy.close_all("No Position")
// Plot buy/sell signals
plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", size=size.small)
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", size=size.small)
plotshape(series=noPositionCondition and strategy.position_size != 0, location=location.belowbar, color=color.yellow, style=shape.labeldown, text="EXIT", size=size.small)