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