
Strategi ini adalah sistem perdagangan adaptif berdasarkan Stochastic Momentum Indicator (SMI). Ia meramalkan arah aliran pasaran dengan menganalisis persilangan penunjuk IKS dan garis isyaratnya, dan secara automatik mengeluarkan isyarat beli dan jual pada kedudukan utama. Strategi ini menggunakan purata bergerak eksponen berganda (EMA) untuk melicinkan data dan meningkatkan kebolehpercayaan isyarat. Sistem ini amat sesuai untuk urus niaga jangka sederhana dan panjang dan boleh menangkap titik perubahan arah aliran pasaran utama dengan berkesan.
Teras strategi adalah untuk mengukur momentum harga dengan mengira Stochastic Momentum Indicator (SMI). Mula-mula julat harga tinggi dan rendah dalam tempoh tertentu dikira, dan kemudian harga penutup dinormalkan berbanding julat ini. Dengan menggunakan pelicinan EMA berganda pada julat relatif dan julat harga, nilai SMI yang lebih stabil diperoleh. Apabila garisan SMI membuat salib emas dengan garis isyaratnya (EMA SMI), isyarat beli dicetuskan apabila ia membuat salib kematian, isyarat jual dicetuskan. Pada masa yang sama, julat terlebih beli dan terlebih jual (+40/-40) ditetapkan untuk mengesahkan kebolehpercayaan isyarat.
Ini adalah strategi dagangan matang berdasarkan penunjuk IKS Ia menjana isyarat dagangan melalui persilangan penunjuk teknikal dan sangat praktikal. Kelebihan teras strategi terletak pada isyaratnya yang jelas dan rintangan hingar yang kuat, tetapi terdapat juga tahap ketinggalan tertentu. Dengan menambahkan langkah pengoptimuman seperti pengesahan volum dan penapisan arah aliran, kestabilan dan kebolehpercayaan strategi boleh dipertingkatkan lagi. Strategi ini amat sesuai untuk menjejaki arah aliran jangka sederhana dan panjang dan merupakan pilihan yang baik untuk pelabur yang ingin membina sistem perdagangan 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!")