यह रणनीति कमोडिटी के दिशात्मक आंदोलन सूचकांक (डीआई) की गणना करती है और दो-दिशात्मक व्यापार को लागू करने के लिए इसे सीमा मापदंडों के साथ जोड़ती है। यह लंबी जाती है जब डीआई + एक सीमा मापदंड द्वारा डीआई से अधिक होता है और छोटी जाती है जब डीआई- एक सीमा मापदंड द्वारा डीआई + से अधिक होता है।
इस रणनीति का मुख्य सूचक दिशात्मक आंदोलन सूचकांक (डीआई) है। डीआई की गणना निम्नलिखित सूत्रों द्वारा की जाती हैः
डीआई+ = (डीएम+/सच्ची सीमा) × 100 डीआई- = (डीएम- / सच्ची सीमा) × 100
जहां डीएम+ दिशात्मक आंदोलन सकारात्मक का प्रतिनिधित्व करता है, डीएम- दिशात्मक आंदोलन नकारात्मक का प्रतिनिधित्व करता है। सच्ची सीमा पिछले तीन दिनों में उच्चतम मूल्य, सबसे कम मूल्य और पिछले दिन की समापन मूल्य के अधिकतम मूल्य की गणना करके हालिया अस्थिरता का प्रतिनिधित्व करती है।
डीआई की परिभाषा के अनुसार, जब डीआई+ > डीआई- का अर्थ है कि मौजूदा बाजार गति मजबूत है, तो यह एक बुल बाजार से संबंधित है; जब डीआई- > डीआई+ का अर्थ है कि मंदी गति मंदी बाजार से अधिक मजबूत है, जो मंदी बाजार से संबंधित है।
यह रणनीति इस विशेषता का उपयोग करती है और एक सीमा पैरामीटर निर्धारित करती है। जब DI + एक सीमा पैरामीटर द्वारा DI- से बड़ा होता है, तो यह निर्धारित करता है कि वर्तमान बाजार एक बुल बाजार है और लंबा जाता है। जब DI- एक सीमा पैरामीटर द्वारा DI + से बड़ा होता है, तो यह निर्धारित करता है कि वर्तमान बाजार एक भालू बाजार है और छोटा जाता है।
उदाहरण के लिए, यदि सीमा पैरामीटर 3 पर सेट किया गया है, तो विशिष्ट व्यापार नियम हैंः
चूंकि DI + और DI - के बीच अक्सर छोटे उतार-चढ़ाव वाले अंतर होते हैं, इसलिए एक सीमा पैरामीटर निर्धारित करने से कुछ ट्रेडों को बिना महत्वपूर्ण दिशा के फ़िल्टर किया जा सकता है और अनावश्यक ट्रेडों को कम किया जा सकता है। यह इस रणनीति का एक लाभ है।
इस रणनीति के मुख्य लाभ इस प्रकार हैंः
डीआई बाजार की दिशा का न्याय करने में विश्वसनीय है
डीआई सीधे बैल और भालू की शक्ति की गणना करके बाजार के रुझानों का न्याय करता है। यह सिद्धांत जटिल एल्गोरिदम जैसे वक्र फिट के बिना सरल और विश्वसनीय है।
सीमा पैरामीटर प्रभावी ढंग से संकेत फ़िल्टर कर सकते हैं
सीमा पैरामीटर बिना किसी महत्वपूर्ण दिशा के छोटे उतार-चढ़ावों को फ़िल्टर करता है, केवल व्यापार के लिए महत्वपूर्ण दिशा के साथ खंडों का चयन करता है, फंसने से बचता है।
स्वचालित दो-दिशात्मक व्यापार प्राप्त करना
लंबी और छोटी पोजीशनों को मैन्युअल निर्णय के बिना डीआई संकेतक के आधार पर स्वचालित रूप से स्विच किया जा सकता है, जिससे ट्रेडिंग की कठिनाई कम होती है।
अनुकूलन योग्य ट्रेडिंग समय सीमा
केवल अनुकूलन योग्य दिनांक सीमा के भीतर व्यापार करने के लिए सेटिंग का समर्थन करता है और बाद में सभी पदों को स्वचालित रूप से बंद कर देता है, लचीला और सुविधाजनक है।
केवल लंबी या छोटी चुनने योग्य
लंबी और छोटी स्विच के माध्यम से, केवल एक-दिशात्मक संकेतों को विभिन्न बाजार वातावरणों के लिए उपयुक्त लंबी या छोटी रणनीतियों को लागू करने के लिए चुना जा सकता है।
इस रणनीति के साथ कुछ जोखिम भी हैंः
डीआई के गलत संकेत देने की संभावना
जब बाजार में भारी उतार-चढ़ाव होता है, तो डीआई अल्पकालिक गलत संकेत दे सकता है, जिससे ट्रेड विफल हो जाते हैं। सत्यापन के लिए अन्य संकेतकों को जोड़ने की आवश्यकता होती है।
गलत सीमा पैरामीटर सेटिंग्स
गलत उच्च या निम्न सीमा पैरामीटर सेटिंग्स से बहुत कम या बहुत अधिक ट्रेडिंग सिग्नल हो सकते हैं। बाजार के अनुसार पैरामीटर को समायोजित करने की आवश्यकता है।
प्रवृत्ति अंत बिंदु निर्धारित करने में असमर्थ
डीआई केवल वर्तमान रुझान की दिशा निर्धारित कर सकता है और यह न्याय नहीं कर सकता है कि रुझान समाप्त हो गया है या उलट गया है। अन्य संकेतकों को मिलाकर देखना आवश्यक है।
जोखिमों के समाधानों में निम्नलिखित शामिल हैंः
डीआई संकेतों को फ़िल्टर करने के लिए चलती औसत और अन्य संकेतकों को मिलाएं
बैकटेस्ट परिणामों के आधार पर सीमा पैरामीटर समायोजित करें
यह निर्धारित करने के लिए वॉल्यूम, एमएसीडी आदि का संयोजन करें कि क्या रुझान उलटा है
इस रणनीति को निम्नलिखित तरीकों से और अधिक अनुकूलित किया जा सकता हैः
बाजार प्रोफ़ाइल जैसे अन्य रुझान आकलन संकेतकों को मिलाएं
मार्केट प्रोफाइल जैसे संकेतकों को जोड़कर, जो डीआई के साथ लंबी-छोटी शक्ति का भी सहज रूप से आकलन करते हैं, आकलन की सटीकता में सुधार किया जा सकता है।
स्टॉप-प्रॉफिट और स्टॉप-लॉस रणनीतियों को जोड़ें
लाभ, समय या प्रतिशत स्टॉप-लॉस को पीछे रखने से लाभ में ताला लगा सकता है और नुकसान को कम कर सकता है।
विशिष्ट उत्पादों के लिए मापदंडों को समायोजित करें
विभिन्न उत्पाद विशेषताओं के अनुसार सीमा मापदंडों और व्यापार समय को समायोजित करने से रणनीति प्रदर्शन में सुधार हो सकता है।
मशीन लर्निंग का उपयोग करके गतिशील अनुकूलन
प्रत्यक्ष संकेतों के आधार पर पैरामीटर सेटिंग्स को गतिशील रूप से अनुकूलित करने के लिए सुदृढीकरण सीखने के एल्गोरिदम लागू करना।
संक्षेप में, यह रणनीति अपेक्षाकृत सरल और व्यावहारिक है। यह बाजार की दिशा निर्धारित करने के लिए DI
/*backtest start: 2022-12-12 00:00:00 end: 2023-12-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Noro's DI Strategy", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %") len = input(title="Length", defval=14) limit = input(3, title = "limit, %") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //DI TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1]))) DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0 DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0 SmoothedTrueRange = 0.0 SmoothedDirectionalMovementPlus = 0.0 SmoothedDirectionalMovementMinus = 0.0 SmoothedTrueRange := nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/len) + TrueRange SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/len) + DirectionalMovementPlus SmoothedDirectionalMovementMinus := nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/len) + DirectionalMovementMinus DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100 DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100 //Trend trend = 0 trend := DIPlus > DIMinus + limit ? 1 : DIPlus < DIMinus - limit ? -1 : trend[1] //Background col = trend == 1 ? lime : red bgcolor(col, transp = 80) //Lines plot(DIPlus, color=lime, title="DI+", linewidth = 3) plot(DIMinus, color=red, title="DI-", linewidth = 3) //Trading size = strategy.position_size lot = 0.0 lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1] if trend == 1 strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if trend == -1 strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if time > timestamp(toyear, tomonth, today, 23, 59) strategy.close_all()