यह रणनीति औसत वास्तविक सीमा (एटीआर) सूचक और औसत दिशात्मक सूचकांक (एडीएक्स) पर आधारित एक अनुकूलन मूल्य चैनल रणनीति है। इसका उद्देश्य साइडवेज बाजारों और मूल्य आंदोलनों में रुझानों की पहचान करना और तदनुसार ट्रेड करना है।
एक दी गई लंबाई पर उच्चतम उच्च (एचएच) और निम्नतम निम्न (एलएल) की गणना करें। उसी लंबाई पर एटीआर की गणना भी करें।
ऊपर और नीचे की ओर मूल्य आंदोलनों के आधार पर +DI और -DI की गणना करें। फिर ADX की गणना करें।
यदि ADX < 25, तो बाजार को साइडवेज माना जाता है। यदि बंद > ऊपरी चैनल (HH - ATR गुणक * ATR), लंबा जाएं। यदि बंद < निचला चैनल (LL + ATR गुणक * ATR), छोटा जाएं।
यदि ADX >= 25 और +DI > -DI है, तो बाजार तेजी से बढ़ रहा है। यदि बंद > ऊपरी चैनल है, तो लंबा हो।
यदि ADX >= 25 और +DI < -DI है, तो बाजार मंदी है। यदि बंद < निचला चैनल है, तो शॉर्ट करें।
प्रवेश के बाद से exit_length बारों के बाद बाहर निकलने की स्थिति।
यह रणनीति बाज़ार की स्थितियों के आधार पर स्वचालित रूप से अनुकूलित होती है, साइडवेज मार्केट में चैनल रणनीति और ट्रेंडिंग मार्केट में ट्रेंडिंग ट्रेंड का उपयोग करती है।
एटीआर और एडीएक्स का उपयोग अनुकूलन क्षमता सुनिश्चित करता है। एटीआर चैनल चौड़ाई को समायोजित करता है, एडीएक्स प्रवृत्ति निर्धारित करता है।
जबरन बाहर निकलने से स्थिरता बढ़ जाती है।
एडीएक्स अक्सर झूठे संकेत उत्पन्न कर सकता है।
खराब एटीआर और एडीएक्स मापदंड खराब प्रदर्शन का कारण बनते हैं।
ब्लैक स्वान घटनाओं के खिलाफ प्रभावी ढंग से रक्षा करने में असमर्थ।
अनुकूलन क्षमता में सुधार के लिए एटीआर और एडीएक्स के मापदंडों का अनुकूलन करना।
घाटे को सीमित करने के लिए स्टॉप लॉस जोड़ें.
झूठे संकेतों से बचने के लिए फ़िल्टर जोड़ें।
रणनीति में बाजार की स्थितियों में अनुकूलन के लिए संकेतकों और तंत्रों का संयोजन किया गया है। लेकिन संकेतकों की सीमाओं के कारण गलत आकलन हो सकते हैं। मापदंडों और जोखिम नियंत्रण पर भविष्य के अनुकूलन।
/*backtest start: 2023-11-03 00:00:00 end: 2023-12-03 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Adaptive Price Channel Strategy", overlay=true) length = input(20, title="Length") exit_length = input(10, title="Exit After X Periods") atr_multiplier = input(3.2, title="ATR Multiplier") startDate = input(defval = timestamp("2019-01-15T08:15:15+00:00"), title = "Start Date") endDate = input(defval = timestamp("2033-04-01T08:15:00+00:00"), title = "End Date") hh = ta.highest(high, length) ll = ta.lowest(low, length) atr = ta.atr(length) // calculate +DI and -DI upMove = high - high[1] downMove = low[1] - low plusDM = na(upMove[1]) ? na : (upMove > downMove and upMove > 0 ? upMove : 0) minusDM = na(downMove[1]) ? na : (downMove > upMove and downMove > 0 ? downMove : 0) plusDI = ta.rma(plusDM, length) / atr * 100 minusDI = ta.rma(minusDM, length) / atr * 100 // calculate ADX dx = math.abs(plusDI - minusDI) / (plusDI + minusDI) * 100 adx = ta.rma(dx, length) var int barSinceEntry = na if (not na(close[length]) ) if (adx < 25) // Sideways market if (close > hh - atr_multiplier * atr) strategy.entry("PChLE", strategy.long, comment="PChLE") barSinceEntry := 0 else if (close < ll + atr_multiplier * atr) strategy.entry("PChSE", strategy.short, comment="PChSE") barSinceEntry := 0 else if (adx >= 25 and plusDI > minusDI) // Bullish market if (close > hh - atr_multiplier * atr) strategy.entry("PChLE", strategy.long, comment="PChLE") barSinceEntry := 0 else if (adx >= 25 and plusDI < minusDI) // Bearish market if (close < ll + atr_multiplier * atr) strategy.entry("PChSE", strategy.short, comment="PChSE") barSinceEntry := 0 if (na(barSinceEntry)) barSinceEntry := barSinceEntry[1] + 1 else if (barSinceEntry >= exit_length) strategy.close("PChLE") strategy.close("PChSE") barSinceEntry := na plot(hh, title="Highest High", color=color.green, linewidth=2) plot(ll, title="Lowest Low", color=color.red, linewidth=2)