यह रणनीति CCI संकेतक, RSI संकेतक और दो चलती औसत को एक यौगिक ट्रेडिंग प्रणाली में जोड़ती है। यह कुछ शोर को फ़िल्टर करने के लिए प्रविष्टियों के लिए पुष्टि जोड़ने के लिए RSI क्रॉसओवर का उपयोग करते हुए पारंपरिक रुझानों को पकड़ सकती है।
यह रणनीति मुख्य रूप से प्रवृत्ति की दिशा निर्धारित करने के लिए सीसीआई संकेतक का उपयोग करती है। 100 से ऊपर के सीसीआई रीडिंग एक तेजी से बाजार को इंगित करते हैं, जबकि -100 से नीचे के बाजार एक मंदी बाजार को इंगित करते हैं। यह प्रणाली प्रवृत्ति की दिशा निर्धारित करने में मदद करने के लिए दो चलती औसत क्रॉसओवर का उपयोग करती है। जब तेजी से चलती औसत धीमी चलती औसत से ऊपर पार करती है, तो यह एक खरीद संकेत है, और इसके विपरीत बिक्री संकेतों के लिए।
तेजी या गिरावट की प्रवृत्ति निर्धारित करने के बाद, सिस्टम प्रवेश सत्यापन के रूप में विभिन्न पैरामीटर लंबाई के साथ दो आरएसआई के क्रॉसओवर का उपयोग करता है। उदाहरण के लिए, एक बैल बाजार में, यदि अल्पकालिक आरएसआई लंबी अवधि के आरएसआई से ऊपर पार करता है, तो यह अंतिम खरीद संकेत है। यह डिजाइन मुख्य रूप से रुझानों के दौरान अल्पकालिक सुधारों से ट्रिगर किए गए गलत ट्रेडों से बचने के लिए शोर को फ़िल्टर करता है।
रणनीति केवल निर्दिष्ट ट्रेडिंग सत्र के दौरान पदों को खोलती है, रातोंरात जोखिम से बचने के लिए बंद होने से 15 मिनट पहले सभी पदों को सक्रिय रूप से बंद कर देती है। पदों को खोलने के बाद, लाभ में लॉक करने के लिए ट्रैलिंग स्टॉप का उपयोग किया जाता है।
इस रणनीति में जोखिम को नियंत्रित करते हुए संकेत की वैधता सुनिश्चित करने के लिए प्रवृत्ति निर्धारण और संकेतक क्रॉसओवर सत्यापन पर व्यापक रूप से विचार किया गया है। पैरामीटर अनुकूलन और तर्क समायोजन के माध्यम से, रणनीति में लाभ के अवसरों का विस्तार करने और खोए हुए अवसरों को कम करने की अधिक क्षमता है। यह एक बहुत ही आशाजनक ट्रेडिंग अवधारणा है।
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © rwestbrookjr //@version=5 strategy("EMA with RSI Cross Strategy", overlay=true) //EMA fastLen = input(title='Fast EMA Length', defval=9) slowLen = input(title='Slow EMA Length', defval=20) fastEMA = ta.ema(close, fastLen) slowEMA = ta.ema(close, slowLen) fema = plot(fastEMA, title='FastEMA', color=color.new(color.green, 0), linewidth=1, style=plot.style_line) sema = plot(slowEMA, title='SlowEMA', color=color.new(color.red, 0), linewidth=1, style=plot.style_line) fill(fema, sema, color=fastEMA > slowEMA ? color.new(#417505, 50) : color.new(#890101, 50), title='Cloud') // Bull and Bear Alerts //Bull = ta.crossover(fastEMA, slowEMA) Bull = fastEMA > slowEMA //Bear = ta.crossunder(fastEMA, slowEMA) Bear = fastEMA < slowEMA //RSIs rsiLength1Input = input.int(9, minval=1, title="RSI Length", group="RSI Settings") rsiSource1Input = input.source(close, "Source", group="RSI Settings") rsiLength2Input = input.int(20, minval=1, title="RSI Length", group="RSI Settings") rsiSource2Input = input.source(close, "Source", group="RSI Settings") up1 = ta.rma(math.max(ta.change(rsiSource1Input), 0), rsiLength1Input) down1 = ta.rma(-math.min(ta.change(rsiSource1Input), 0), rsiLength1Input) rsi = down1 == 0 ? 100 : up1 == 0 ? 0 : 100 - (100 / (1 + up1 / down1)) up2 = ta.rma(math.max(ta.change(rsiSource2Input), 0), rsiLength2Input) down2 = ta.rma(-math.min(ta.change(rsiSource2Input), 0), rsiLength2Input) rsi2 = down2 == 0 ? 100 : up2 == 0 ? 0 : 100 - (100 / (1 + up2 / down2)) //CCI cciLength = input.int(20, minval=1) src = input(hlc3, title="Source") ma = ta.sma(src, cciLength) cci = (src - ma) / (0.015 * ta.dev(src, cciLength)) //Trail Stop Setup trstp = input.float(title="Trail Loss($)", minval = 0.0, step = 0.01, defval = 0.5) longStop = 0.0, shortStop = 0.0 longStop := if Bull stopValue = close - trstp math.max(stopValue, longStop[1]) else 0.0 shortStop := if Bear stopValue = close + trstp math.min(stopValue, shortStop[1]) else 999999 //Session Setup open_session=input(defval="0930-1545") session = time("1", open_session) validSession=(na(session) ? 0 : 1) //Trade Signals longCondition = Bull and cci > 100 and ta.crossover(rsi,rsi2) and validSession if (longCondition) strategy.entry("Long", strategy.long, 1) //longExit = close > strategy.opentrades.entry_price(0) + 1.5 or close < strategy.opentrades.entry_price(0) - 0.75 longExit = close < longStop or not validSession if (longExit) strategy.close("Long") shortCondition = Bear and cci < 100 and ta.crossunder(rsi,rsi2) and validSession if (shortCondition) strategy.entry("Short", strategy.short, 1) //shortExit = close < strategy.opentrades.entry_price(0) - 1.5 or close > strategy.opentrades.entry_price(0) + 0.75 shortExit = close > shortStop or not validSession if (shortExit) strategy.close("Short")