Esta estrategia es un sistema de negociación adaptativo basado en el índice de momento estocástico (SMI). Predece las tendencias del mercado mediante el análisis de los cruces entre el indicador SMI y su línea de señal, generando automáticamente señales de compra y venta en posiciones clave. La estrategia emplea promedios móviles exponenciales dobles (EMA) para suavizar los datos y mejorar la confiabilidad de la señal. Este sistema es particularmente adecuado para el comercio a medio y largo plazo y captura eficazmente los principales puntos de inversión de tendencia del mercado.
El núcleo de la estrategia radica en medir el impulso del precio a través del cálculo del SMI. Primero determina el rango de precios más alto y más bajo dentro de un período específico, luego normaliza la posición del precio de cierre en relación con este rango. Al aplicar doble suavizado EMA tanto al rango relativo como al rango de precios, genera valores SMI más estables. Las señales de compra se activan cuando la línea SMI hace una cruz de oro con su línea de señal (SMI
Esta es una estrategia comercial madura basada en el indicador SMI, que genera señales comerciales a través de cruces de indicadores técnicos con una gran practicidad. Las principales ventajas de la estrategia se encuentran en sus señales claras y su fuerte resistencia al ruido, aunque tiene cierto retraso inherente. A través de optimizaciones como la validación de volumen y el filtrado de tendencias, la estabilidad y fiabilidad de la estrategia pueden mejorarse aún más. Esta estrategia es particularmente adecuada para rastrear tendencias a medio y largo plazo y sirve como una excelente opción para los inversores que buscan construir sistemas comerciales sistemáticos.
/*backtest start: 2024-12-19 00:00:00 end: 2024-12-26 00:00:00 period: 45m basePeriod: 45m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Iban_Boe //@version=6 strategy("SMI Strategy with Signals", "SMI Strategy", overlay=false) // Parámetros del SMI lengthK = input.int(14, "%K Length", minval=1, maxval=15000) lengthD = input.int(3, "%D Length", minval=1, maxval=4999) lengthEMA = input.int(3, "EMA Length", minval=1, maxval=4999) // Función de doble EMA emaEma(source, length) => ta.ema(ta.ema(source, length), length) // Cálculos del SMI highestHigh = ta.highest(lengthK) lowestLow = ta.lowest(lengthK) highestLowestRange = highestHigh - lowestLow relativeRange = close - (highestHigh + lowestLow) / 2 smi = 200 * (emaEma(relativeRange, lengthD) / emaEma(highestLowestRange, lengthD)) smiSignal = ta.ema(smi, lengthEMA) // Gráficos del SMI smiPlot = plot(smi, "SMI", color=color.blue) plot(smiSignal, "SMI-based EMA", color=color.orange) // Level lines hline(40, "Overbought Line", color=color.green) hline(-40, "Oversold Line", color=color.red) hline(0, "Middle Line", color=color.gray) midLinePlot = plot(0, color = na, editable = false, display = display.none) fill(smiPlot, midLinePlot, 120, 40, top_color = color.new(#4caf4f, 50), bottom_color = color.new(color.green, 100), title = "Overbought Gradient Fill") fill(smiPlot, midLinePlot, -40, -120, top_color = color.new(color.red, 100), bottom_color = color.new(color.red, 50), title = "Oversold Gradient Fill") // Señales de compra y venta buySignal = ta.crossover(smi, smiSignal) // Detect crossover sellSignal = ta.crossunder(smi, smiSignal) // Detect crossover // Graficar señales de compra/venta plotshape(series=buySignal, style=shape.labelup, location=location.belowbar, color=color.green, size=size.tiny, title="Señal de Compra") plotshape(series=sellSignal, style=shape.labeldown, location=location.abovebar, color=color.red, size=size.tiny, title="Señal de Venta") // Lógica de la estrategia if (buySignal) strategy.entry("Compra", strategy.long) if (sellSignal) strategy.entry("Venta", strategy.short) // Alertas alertcondition(buySignal, title="Alerta de Compra", message="¡Señal de Compra Detectada!") alertcondition(sellSignal, title="Alerta de Venta", message="¡Señal de Venta Detectada!")