यह प्रणाली नीचे दिए गए चरणों का पालन करती हैः
14-अवधि एटीआर की गणना करें और इसे समापन मूल्य से विभाजित करके सामान्य करें।
सामान्यीकृत एटीआर के 100 दिन के सरल चलती औसत (एसएमए) की गणना की जाए।
सामान्यीकृत एटीआर के 100 दिन के एसएमए के अनुपात की गणना करें।
अनुपात (2/ratio) के विपरीत के आधार पर लक्ष्य उत्तोलन निर्धारित करें।
लक्ष्य लाभप्रदता को 5 से गुणा करके खुले ट्रेडों की लक्ष्य संख्या की गणना करें।
चार्ट लक्ष्य और वर्तमान खुले ट्रेडों पर चार्ट.
जांचें कि क्या खरीदने का मौका है (यदि वर्तमान खुले ट्रेड लक्ष्य से कम हैं) या बंद ट्रेड (यदि वर्तमान खुले ट्रेड लक्ष्य प्लस 1 से अधिक हैं) ।
यदि खरीदने का मौका मिले, तो लॉन्ग ट्रेड खोलें और ओपन ट्रेड्स सरणी में जोड़ें।
यदि openTrades सरणी में व्यापार और ट्रेडों को बंद करने का मौका मौजूद है, तो सरणी को संदर्भित करके सबसे हालिया व्यापार को बंद करें और सरणी से हटा दें.
इस प्रणाली का उद्देश्य बाजार की अस्थिरता के आधार पर खुले ट्रेडों और लीवरेज को गतिशील रूप से समायोजित करके रुझानों को पकड़ना है। यह बेहतर नियंत्रण के लिए खुले ट्रेडों को ट्रैक करने के लिए सरणी का उपयोग करता है।
इस रणनीति के फायदे:
बाजार की अस्थिरता में परिवर्तन के आधार पर लाभप्रदता और स्थिति के आकार का गतिशील समायोजन जोखिम को प्रभावी ढंग से प्रबंधित कर सकता है।
लक्ष्य स्थिति के आकार की गणना के लिए एटीआर संकेतक का उपयोग करना, जो बाजार की अस्थिरता को दर्शाता है, एक उचित विकल्प है।
कई पदों के साथ पिरामिड बनाना रुझानों से लाभ उठा सकता है।
सरणी में प्रत्येक व्यापार को रिकॉर्ड करने से ट्रेडों के उद्घाटन और समापन का स्पष्ट नियंत्रण संभव हो जाता है।
इस रणनीति में कुछ पैरामीटर हैं और इसे लागू करना और संचालित करना आसान है।
तर्क स्पष्ट है और कोड संरचना आसान अनुकूलन और पुनरावृत्ति के लिए अच्छी तरह से संगठित है।
इस रणनीति के जोखिमः
एटीआर केवल अतीत की अस्थिरता को दर्शाता है, भविष्य के परिवर्तनों की भविष्यवाणी करने में असमर्थ है, जिससे गलत लाभप्रदता समायोजन हो सकता है।
पिरामिडिंग से रुझान उलटा होने पर नुकसान हो सकता है।
सरणी रिकॉर्डिंग ट्रेड केवल सरल ओपन/क्लोज ऑपरेशन पर लागू होता है। जटिल तर्क के लिए अधिक जटिल डेटा संरचना की आवश्यकता होती है।
लक्षित लीवरेज और स्थिति आकार सेटिंग्स को निश्चित मापदंडों के बजाय प्रतीक विशिष्टताओं के आधार पर समायोजित करने की आवश्यकता है।
एकल संकेतक पर निर्भरता भ्रामक हो सकती है। अन्य अस्थिरता संकेतक या मशीन लर्निंग एल्गोरिदम मजबूती में सुधार कर सकते हैं।
रणनीति को निम्नलिखित पहलुओं में अनुकूलित किया जा सकता हैः
स्टॉप लॉस के स्तर तक पहुँचने पर स्टॉप लॉस को सक्रिय रूप से कट करने के लिए स्टॉप लॉस जोड़ें।
विभिन्न एटीआर अवधि का परीक्षण करके संकेतक मापदंडों का अनुकूलन करना।
अन्य प्रविष्टि रणनीतियों जैसे निश्चित मात्रा प्रविष्टियों का प्रयास करें और परिणामों का परीक्षण करें।
अन्य अस्थिरता मेट्रिक्स जैसे बोलिंगर बैंड्स WIDTH, KD, RSI आदि जोड़ें।
सरल चिकनाई के बजाय अस्थिरता की भविष्यवाणी करने के लिए मशीन लर्निंग मॉडल का उपयोग करें।
स्थिति के आकार की गणना को अनुकूलित करना, जैसे कि एटीआर गुणकों या अस्थिरता कार्यों का उपयोग करना।
रणनीति विश्लेषण और अनुकूलन के लिए प्रवेश मूल्य, समय आदि जैसे अधिक प्रविष्टि विवरण रिकॉर्ड करें।
अधिकतम पैरामीटर सेट खोजने के लिए ऑटो-अनुकूलन के लिए पैरामीटर अनुकूलन जोड़ें.
रणनीति गतिशील रूप से एटीआर के आधार पर लीवरेज और स्थिति के आकार को ट्रेंड के दौरान जोखिम जोखिम को प्रबंधित करने के लिए समायोजित करती है, और इसके कुछ फायदे हैं। लेकिन पैरामीटर सेटिंग कठिनाई और संकेतक अनुकूलन स्थान जैसी चुनौतियां आगे के सुधारों के लिए बनी हुई हैं। कुल मिलाकर, तर्क स्पष्ट और संचालित और अनुकूलित करने में आसान है, गहन अनुसंधान और अनुप्रयोग के योग्य है।
/*backtest start: 2022-10-09 00:00:00 end: 2023-10-15 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("I11L - Risk Adjusted Leveraging", overlay=false, pyramiding=25, default_qty_value=20, initial_capital=20000, default_qty_type=strategy.percent_of_equity,process_orders_on_close=false, calc_on_every_tick=false) atr = ta.atr(14) / close avg_atr = ta.sma(atr,100) ratio = atr / avg_atr targetLeverage = 2 / ratio targetOpentrades = 5 * targetLeverage plot(targetOpentrades) plot(strategy.opentrades) isBuy = strategy.opentrades < targetOpentrades isClose = strategy.opentrades > targetOpentrades + 1 var string[] openTrades = array.new_string(0) if(isBuy) strategy.entry("Buy"+str.tostring(array.size(openTrades)),strategy.long) array.push(openTrades, "Buy" + str.tostring(array.size(openTrades))) if(isClose) if array.size(openTrades) > 0 strategy.close(array.get(openTrades, array.size(openTrades) - 1)) array.pop(openTrades)