Эта стратегия является адаптивной торговой системой, основанной на индексе стохастического импульса (SMI). Она прогнозирует рыночные тенденции путем анализа перекрестных связей между индикатором SMI и его сигнальной линией, автоматически генерируя сигналы купли и продажи на ключевых позициях. Стратегия использует двойные экспоненциальные скользящие средние (EMA) для сглаживания данных и улучшения надежности сигнала. Эта система особенно подходит для средне- и долгосрочной торговли и эффективно фиксирует основные точки обратного тренда рынка.
Основа стратегии заключается в измерении импульса цены с помощью расчета SMI. Он сначала определяет самый высокий и самый низкий диапазон цен в течение определенного периода, а затем нормализует позицию цены закрытия относительно этого диапазона. Применяя двойную сглаживание EMA как к относительному диапазону, так и к диапазону цен, он генерирует более стабильные значения SMI. Сигналы покупки запускаются, когда линия SMI делает золотой крест со своей линией сигнала (SMI
Это зрелая торговая стратегия, основанная на индикаторе SMI, генерирующая торговые сигналы с помощью перекрестных технических индикаторов с сильной практичностью. Основные преимущества стратегии заключаются в ее четких сигналах и сильной шумостойкости, хотя она имеет некоторое врожденное отставание. Благодаря оптимизации, такой как проверка объема и фильтрация трендов, стабильность и надежность стратегии могут быть дополнительно улучшены. Эта стратегия особенно подходит для отслеживания средне- и долгосрочных тенденций и служит отличным выбором для инвесторов, стремящихся создать систематические торговые системы.
/*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!")