Strategi ini adalah sistem perdagangan adaptif berdasarkan Indeks Momentum Stochastic (SMI). Ini memprediksi tren pasar dengan menganalisis persilangan antara indikator SMI dan garis sinyalnya, secara otomatis menghasilkan sinyal beli dan jual di posisi kunci. Strategi ini menggunakan rata-rata bergerak eksponensial ganda (EMA) untuk meluruskan data dan meningkatkan keandalan sinyal. Sistem ini sangat cocok untuk perdagangan jangka menengah hingga panjang dan secara efektif menangkap titik pembalikan tren pasar utama.
Inti dari strategi ini terletak pada pengukuran momentum harga melalui perhitungan SMI. Pertama-tama menentukan kisaran harga tertinggi dan terendah dalam periode tertentu, kemudian menormalkan posisi harga penutupan relatif terhadap kisaran ini. Dengan menerapkan smoothing EMA ganda untuk kisaran relatif dan kisaran harga, ia menghasilkan nilai SMI yang lebih stabil. Sinyal beli dipicu ketika garis SMI membuat salib emas dengan garis sinyalnya (SMI
Ini adalah strategi perdagangan yang matang berdasarkan indikator SMI, menghasilkan sinyal perdagangan melalui lintas indikator teknis dengan kepraktisan yang kuat. Keuntungan utama strategi ini terletak pada sinyal yang jelas dan ketahanan kebisingan yang kuat, meskipun memiliki beberapa keterlambatan yang melekat. Melalui optimalisasi seperti validasi volume dan penyaringan tren, stabilitas dan keandalan strategi dapat ditingkatkan lebih lanjut. Strategi ini sangat cocok untuk melacak tren jangka menengah hingga panjang dan berfungsi sebagai pilihan yang sangat baik bagi investor yang ingin membangun sistem perdagangan yang sistematis.
/*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!")