Strategi ini adalah sistem perdagangan adaptif berdasarkan Indeks Momentum Stochastic (SMI). Ia meramalkan trend pasaran dengan menganalisis persilangan antara penunjuk SMI dan garis isyaratnya, secara automatik menjana isyarat beli dan jual di kedudukan utama. Strategi ini menggunakan purata bergerak eksponensial ganda (EMA) untuk meluruskan data dan meningkatkan kebolehpercayaan isyarat. Sistem ini sangat sesuai untuk perdagangan jangka menengah hingga panjang dan dengan berkesan menangkap titik pembalikan trend pasaran utama.
Inti strategi ini terletak pada mengukur momentum harga melalui pengiraan SMI. Ia mula-mula menentukan julat harga tertinggi dan terendah dalam tempoh tertentu, kemudian menormalkan kedudukan harga penutupan berbanding dengan julat ini. Dengan menggunakan penyelarasan EMA berganda pada kedua-dua julat relatif dan julat harga, ia menghasilkan nilai SMI yang lebih stabil. Isyarat beli diaktifkan apabila garis SMI membuat salib emas dengan garis isyaratnya (SMI
Ini adalah strategi dagangan yang matang berdasarkan penunjuk SMI, menghasilkan isyarat dagangan melalui persilangan penunjuk teknikal dengan kepraktisan yang kuat. Kelebihan utama strategi ini terletak pada isyarat yang jelas dan rintangan bunyi yang kuat, walaupun ia mempunyai beberapa kelewatan yang melekat. Melalui pengoptimuman seperti pengesahan jumlah dan penapisan trend, kestabilan dan kebolehpercayaan strategi dapat ditingkatkan lagi. Strategi ini sangat sesuai untuk mengesan trend jangka menengah hingga panjang dan berfungsi sebagai pilihan yang sangat baik untuk pelabur yang ingin membina sistem dagangan yang sistematik.
/*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!")