Cette stratégie est un système de trading adaptatif basé sur l'indice de moment stochastique (SMI). Elle prédit les tendances du marché en analysant les croisements entre l'indicateur SMI et sa ligne de signal, générant automatiquement des signaux d'achat et de vente aux positions clés.
Le noyau de la stratégie réside dans la mesure de la dynamique des prix par le calcul du SMI. Il détermine d'abord la fourchette de prix la plus élevée et la plus basse dans une période spécifique, puis normalise la position du prix de clôture par rapport à cette fourchette. En appliquant un doublement de l'EMA à la fois à la fourchette relative et à la fourchette de prix, il génère des valeurs SMI plus stables. Les signaux d'achat sont déclenchés lorsque la ligne SMI fait une croix dorée avec sa ligne de signal (SMI
Il s'agit d'une stratégie de trading mature basée sur l'indicateur SMI, générant des signaux de trading grâce à des croisements d'indicateurs techniques avec une forte praticité. Les principaux avantages de la stratégie résident dans ses signaux clairs et sa forte résistance au bruit, bien qu'elle ait un certain retard inhérent. Grâce à des optimisations telles que la validation du volume et le filtrage des tendances, la stabilité et la fiabilité de la stratégie peuvent être encore améliorées. Cette stratégie est particulièrement adaptée au suivi des tendances à moyen et long terme et constitue un excellent choix pour les investisseurs qui cherchent à construire des systèmes de trading systématiques.
/*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!")