
यह रणनीति स्टोकेस्टिक मोमेंटम इंडिकेटर (SMI) पर आधारित एक अनुकूली ट्रेडिंग प्रणाली है। यह एसएमआई संकेतक और इसकी सिग्नल लाइन के क्रॉसओवर का विश्लेषण करके बाजार के रुझान की भविष्यवाणी करता है, और प्रमुख स्थितियों पर स्वचालित रूप से खरीद और बिक्री के संकेत जारी करता है। यह रणनीति डेटा को सुचारू बनाने और सिग्नल की विश्वसनीयता में सुधार करने के लिए दोहरे घातीय मूविंग औसत (ईएमए) का उपयोग करती है। यह प्रणाली विशेष रूप से मध्यम और दीर्घकालिक लेनदेन के लिए उपयुक्त है और प्रमुख बाजार प्रवृत्तियों के महत्वपूर्ण बिंदुओं को प्रभावी ढंग से पकड़ सकती है।
इस रणनीति का मूल उद्देश्य स्टोकेस्टिक मोमेंटम इंडिकेटर (एसएमआई) की गणना करके मूल्य गति को मापना है। सबसे पहले एक विशिष्ट अवधि के भीतर उच्च और निम्न कीमतों की सीमा की गणना की जाती है, और फिर समापन मूल्य को इस सीमा के सापेक्ष सामान्यीकृत किया जाता है। सापेक्ष सीमा और मूल्य सीमा पर डबल ईएमए स्मूथिंग लागू करने से, अधिक स्थिर एसएमआई मूल्य प्राप्त होता है। जब एसएमआई लाइन अपनी सिग्नल लाइन (एसएमआई का ईएमए) के साथ गोल्डन क्रॉस बनाती है, तो खरीद संकेत सक्रिय होता है; जब यह डेथ क्रॉस बनाती है, तो बिक्री संकेत सक्रिय होता है। इसी समय, सिग्नल की विश्वसनीयता की पुष्टि करने के लिए ओवरबॉट और ओवरसोल्ड रेंज (+40/-40) निर्धारित की जाती हैं।
यह 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!")