यह रणनीति कमोडिटी चैनल इंडेक्स (CCI) संकेतक पर आधारित है और ट्रेंड रिवर्सल टाइमिंग निर्धारित करने के लिए गतिशील अनुकूलन योग्य प्रवेश स्तरों का उपयोग करती है, जबकि लाभ में लॉक करने के लिए एक ट्रैलिंग स्टॉप लॉस का उपयोग करती है। रणनीति का नाम
मुख्य संकेतक सीसीआई है, जिसका उपयोग ओवरसोल्ड जोन को स्पॉट करने के लिए किया जाता है, इस प्रकार प्रवृत्ति उलट अवसरों का संकेत देता है। इसके अलावा, सीसीआई ओवरसोल्ड जोन की सीमा विभिन्न उपकरणों और बाजार वातावरणों में भिन्न होती है। इसलिए, यह रणनीति गतिशील रूप से सीसीआई खरीद प्रवेश स्तर को निर्धारित करने के लिए, कुछ लुकबैक अवधि में सबसे कम सीसीआई स्तरों की जांच करके, एक "दूरदर्शी" दृष्टिकोण लेती है। यदि पिछले 40 दिनों में सबसे कम सीसीआई -90 से ऊपर है, तो -90 नया ओवरसोल्ड जोन थ्रेशोल्ड बन जाता है, और इसी तरह। यह अनुकूलन डिजाइन गतिशील रूप से विभिन्न बाजार स्थितियों के अनुरूप प्रवेश स्तरों की अनुमति देता है, मजबूत डाउनट्रेंड के दौरान अधिक रूढ़िवादी प्रविष्टियों का पीछा करते हुए, जबकि सीमा-बाधित बाजारों के दौरान अधिक आक्रामक प्रविष्टियां।
विशेष रूप से, डिफ़ॉल्ट सीसीआई खरीद सिग्नल स्तर -145 है। रणनीति तब पिछले 40 दिनों, 50 दिनों आदि में सबसे कम सीसीआई रीडिंग की जांच करती है। यदि सबसे कम सीसीआई अगले स्तर से ऊपर है जैसे -90, तो -90 नया प्रवेश स्तर बन जाता है। और इसी तरह, प्रवेश स्तर -145 / -90 / -70 / -50 / -4 / 0 / +25 / +50 / +70 के बीच गतिशील रूप से स्विच कर सकता है। जब सीसीआई संबंधित स्तर से नीचे गिरता है तो एक लंबा प्रवेश संकेत ट्रिगर किया जाता है।
इसके अतिरिक्त, लाभ में लॉक करने के लिए एक ट्रेलिंग स्टॉप लॉस का उपयोग किया जाता है, जिसमें स्टॉप स्तर कीमत के साथ ऊपर बढ़ता है।
फिक्स्ड एंट्री लेवल की तुलना में, इस तरह का गतिशील डिजाइन अनुकूलित एंट्री टाइमिंग को सक्षम करता है। मजबूत डाउनट्रेंड के दौरान अधिक रूढ़िवादी एंट्री का पीछा करने से जोखिम कम होता है, जबकि रेंज-बाउंड बाजारों के दौरान कम एंट्री अधिक अवसरों को पकड़ने की अनुमति देती है। इससे रणनीति की अनुकूलन क्षमता बढ़ जाती है।
सीसीआई स्वयं ओवरबॉट/ओवरसोल्ड स्तरों की पहचान करने के लिए एक स्पष्ट और विश्वसनीय संकेतक है। सीसीआई के आधार पर रुझान उलटने का न्याय करने का तर्क सिद्ध है। गतिशील प्रवेश डिजाइन के साथ संयुक्त, इस रणनीति का समग्र लाभ महत्वपूर्ण है।
ट्रेंड रिवर्स पॉइंट्स को स्पॉट करने के तर्क में कुछ पिछड़े गुण होते हैं। अचानक मूल्य वृद्धि या दुर्घटनाओं के दौरान प्रवेश समय सटीक नहीं हो सकता है। इसके अलावा, अनुकूलन तंत्र वर्तमान बाजार वातावरण में पूरी तरह से फिट नहीं हो सकता है, जिससे गैर-अनुकूल प्रविष्टियां हो सकती हैं। अंत में, कमोडिटी बाजारों में उच्च उतार-चढ़ाव से भारी नुकसान हो सकता है यदि स्टॉप लॉस पैरामीटर ठीक से सेट नहीं किए जाते हैं।
मुख्य रूप से सीसीआई स्वयं, प्रवेश स्तर के डिजाइन और स्टॉप लॉस मापदंडों में सुधार किया जा सकता है। विशिष्ट उपकरणों के लिए इष्टतम मापदंडों का सटीक पता लगाना रणनीति के प्रदर्शन को बढ़ा सकता है।
यह रणनीति ओवरबॉट/ओवरसोल्ड जोन को स्पॉट करने के लिए सीसीआई का उपयोग करने के तर्क और ट्रेंड रिवर्स को कैप्चर करने के लिए गतिशील अनुकूलन प्रविष्टि स्तर डिजाइन को जोड़ती है। निश्चित मापदंडों की तुलना में, गतिशील प्रविष्टि स्तर काफी अनुकूलन क्षमता में सुधार करते हैं। ट्रेलिंग स्टॉप लॉस के साथ यह प्रविष्टि रिवर्स कैप्चरिंग मॉडल मजबूत गति के साथ अवसरों को जब्त कर सकता है और समय में घाटे में कटौती कर सकता है। उचित रूप से कॉन्फ़िगर किए गए मापदंडों के साथ, यह रणनीति व्यवहार्यता और मजबूती का प्रदर्शन करती है। उच्च स्थिरता और लाभप्रदता प्राप्त करने के लिए सीसीआई मापदंडों और प्रवेश स्तर के नियमों को अनुकूलित करके आगे सुधार किए जा सकते हैं।
/*backtest start: 2023-11-20 00:00:00 end: 2023-12-20 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Extended Adaptive CCI Entry Strategy for Commodities", shorttitle="Ext_Adaptive_CCI_Entry_Com", overlay=true) // Inputs cciLength = input(20, title="CCI Period") defaultCCIEntryOversold = input(-145, title="Default CCI Entry Oversold Level") adaptiveCCIEntryLevel90 = input(-90, title="Adaptive CCI Entry Level for 40 Days") adaptiveCCIEntryLevel70_50Days = input(-70, title="Adaptive CCI Entry Level for 50 Days") adaptiveCCIEntryLevel50 = input(-50, title="Adaptive CCI Entry Level for 60 Days") adaptiveCCIEntryLevel4 = input(-4, title="Adaptive CCI Entry Level for 90 Days") adaptiveCCIEntryLevel0 = input(0, title="Adaptive CCI Entry Level for 120 Days") adaptiveCCIEntryLevel25 = input(25, title="Adaptive CCI Entry Level for 140 Days") adaptiveCCIEntryLevel50_160Days = input(50, title="Adaptive CCI Entry Level for 160 Days") adaptiveCCIEntryLevel70_180Days = input(70, title="Adaptive CCI Entry Level for 180 Days") lookback40 = input(40, title="Lookback Period for -90 Level") lookback50 = input(50, title="Lookback Period for -70 Level") lookback60 = input(60, title="Lookback Period for -50 Level") lookback90 = input(90, title="Lookback Period for -4 Level") lookback120 = input(120, title="Lookback Period for 0 Level") lookback140 = input(140, title="Lookback Period for +25 Level") lookback160 = input(160, title="Lookback Period for +50 Level") lookback180 = input(180, title="Lookback Period for +70 Level") // Indicator Calculation cci = ta.cci(close, cciLength) // Determine adaptive entry level based on lookback periods var float entryLevel = defaultCCIEntryOversold // Initialize with the default level if ta.lowest(cci, lookback40) > adaptiveCCIEntryLevel90 entryLevel := adaptiveCCIEntryLevel90 if ta.lowest(cci, lookback50) > adaptiveCCIEntryLevel70_50Days entryLevel := adaptiveCCIEntryLevel70_50Days if ta.lowest(cci, lookback60) > adaptiveCCIEntryLevel50 entryLevel := adaptiveCCIEntryLevel50 if ta.lowest(cci, lookback90) > adaptiveCCIEntryLevel4 entryLevel := adaptiveCCIEntryLevel4 if ta.lowest(cci, lookback120) > adaptiveCCIEntryLevel0 entryLevel := adaptiveCCIEntryLevel0 if ta.lowest(cci, lookback140) > adaptiveCCIEntryLevel25 entryLevel := adaptiveCCIEntryLevel25 if ta.lowest(cci, lookback160) > adaptiveCCIEntryLevel50_160Days entryLevel := adaptiveCCIEntryLevel50_160Days if ta.lowest(cci, lookback180) > adaptiveCCIEntryLevel70_180Days entryLevel := adaptiveCCIEntryLevel70_180Days // Entry Condition longCondition = cci < entryLevel // Entry and Exit if (longCondition) strategy.entry("Long", strategy.long, qty=1) alert("Long entry executed at " + str.tostring(close), alert.freq_once_per_bar) trailOffset = input(10.0, title="Trailing Stop Offset in USD") strategy.exit("Trailing Stop", "Long", trail_offset = trailOffset, trail_price = close) if (close < entryLevel - trailOffset) alert("Long position closed at " + str.tostring(close), alert.freq_once_per_bar) // Plotting plot(series=cci, color=color.purple, title="CCI") hline(price=defaultCCIEntryOversold, color=color.red, title="Default CCI Entry Oversold Level") hline(price=adaptiveCCIEntryLevel90, color=color.orange, title="CCI -90 Level (40 Days)") hline(price=adaptiveCCIEntryLevel70_50Days, color=color.yellow, title="CCI -70 Level (50 Days)") hline(price=adaptiveCCIEntryLevel50, color=color.green, title="CCI -50 Level (60 Days)") hline(price=adaptiveCCIEntryLevel4, color=color.blue, title="CCI -4 Level (90 Days)") hline(price=adaptiveCCIEntryLevel0, color=color.purple, title="CCI 0 Level (120 Days)") hline(price=adaptiveCCIEntryLevel25, color=color.aqua, title="CCI +25 Level (140 Days)") hline(price=adaptiveCCIEntryLevel50_160Days, color=color.black, title="CCI +50 Level (160 Days)") hline(price=adaptiveCCIEntryLevel70_180Days, color=color.gray, title="CCI +70 Level (180 Days)")