
यह एक ट्रेंड ट्रैकिंग रणनीति है जो सूचकांक चलती औसत (EMA) और एक यादृच्छिक अपेक्षाकृत मजबूत सूचक (Stochastic RSI) को जोड़ती है। यह रणनीति उच्च संभावना वाले व्यापारिक अवसरों की पहचान करने के लिए मूल्य प्रवृत्तियों और ओवरबॉय ओवरसोल की स्थिति का विश्लेषण करती है। यह रणनीति ईएमए 9 और ईएमए 21 के क्रॉसिंग का उपयोग करती है ताकि प्रवृत्ति की दिशा निर्धारित की जा सके, जबकि स्टोकास्टिक आरएसआई का उपयोग बाजार की स्थिति की पुष्टि करने के लिए किया जाता है, जिससे ट्रेडिंग सिग्नल की गुणवत्ता में सुधार होता है।
रणनीति का मुख्य तर्क दो प्रमुख तकनीकी संकेतकों के संयोजन पर आधारित हैः
ट्रेडिंग सिग्नल ट्रिगरिंग स्थितियाँ:
यह एक स्पष्ट रूप से संरचित, तार्किक रूप से सख्त प्रवृत्ति ट्रैकिंग रणनीति है। ईएमए और स्टोकेस्टिक आरएसआई के संयोजन के माध्यम से, रणनीति प्रवृत्ति और बाजार की स्थिति की पहचान करने के लिए अच्छी तरह से संतुलित है। हालांकि कुछ अंतर्निहित जोखिम हैं, उचित पैरामीटर अनुकूलन और जोखिम प्रबंधन के माध्यम से, रणनीति कई बाजार स्थितियों में स्थिर प्रदर्शन रख सकती है। व्यापारियों को सलाह दी जाती है कि वे वास्तविक समय में उपयोग करने से पहले पर्याप्त प्रतिक्रिया दें और विशिष्ट बाजार विशेषताओं के अनुसार पैरामीटर सेटिंग्स को समायोजित करें।
/*backtest
start: 2025-01-10 00:00:00
end: 2025-02-09 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA 9/21 + Stoch RSI Strategy", shorttitle="EMA+StochRSI", overlay=true)
// ===== Užívateľské vstupy ===== //
emaFastLen = input.int(9, "Rýchla EMA (9)")
emaSlowLen = input.int(21, "Pomalá EMA (21)")
rsiLen = input.int(14, "RSI Length")
stochRsiLen = input.int(14, "Stoch RSI Length") // úsek, z ktorého berieme min/max RSI
stochSignalLen = input.int(3, "Stoch RSI K/D Smoothing")
overSold = input.int(20, "Stoch RSI Oversold (%)")
overBought = input.int(80, "Stoch RSI Overbought (%)")
// ===== Výpočet EMA(9) a EMA(21) ===== //
emaFast = ta.ema(close, emaFastLen)
emaSlow = ta.ema(close, emaSlowLen)
// ===== Výpočet RSI a Stoch RSI ===== //
// 1) Klasické RSI
rsiValue = ta.rsi(close, rsiLen)
// 2) Prevod RSI -> Stoch RSI:
// (rsiValue - min(rsiValue, stochRsiLen)) / (max(rsiValue, stochRsiLen) - min(rsiValue, stochRsiLen)) * 100
// Následne vyhladíme K a D (podobne ako pri bežnom Stochastic)
rsiLowest = ta.lowest(rsiValue, stochRsiLen)
rsiHighest = ta.highest(rsiValue, stochRsiLen)
stochRaw = (rsiValue - rsiLowest) / math.max(rsiHighest - rsiLowest, 1e-10) * 100.0
stochK = ta.sma(stochRaw, stochSignalLen)
stochD = ta.sma(stochK, stochSignalLen)
// ===== Podmienky pre LONG / SHORT ===== //
// LONG, ak:
// - EMA(9) prekríži EMA(21) smerom nahor
// - Stoch RSI je v prepredanej zóne (t.j. stochK < overSold)
longCondition = ta.crossover(emaFast, emaSlow) and (stochK < overSold)
// SHORT, ak:
// - EMA(9) prekríži EMA(21) smerom nadol
// - Stoch RSI je v prekúpenej zóne (stochK > overBought)
shortCondition = ta.crossunder(emaFast, emaSlow) and (stochK > overBought)
// ===== Vstup do pozícií ===== //
if longCondition
strategy.entry("Long", strategy.long)
if shortCondition
strategy.entry("Short", strategy.short)
// ===== Výstup z pozície pri opačnom signáli (okamžite na trhu) ===== //
if strategy.position_size > 0 and shortCondition
// Ak držíme LONG a príde signál na SHORT, zavrieme LONG
strategy.close("Long", comment="Exit Long")
if strategy.position_size < 0 and longCondition
// Ak držíme SHORT a príde signál na LONG, zavrieme SHORT
strategy.close("Short", comment="Exit Short")
// ===== (Nepovinné) Môžeš pridať stop-loss, take-profit, trailing stop atď. ===== //