यह एक ट्रेंड फॉलो करने वाली रणनीति है जो एटीआर इंडिकेटर और एडीएक्स इंडिकेटर को जोड़ती है। यह बेहतर ट्रेंड ट्रैकिंग प्राप्त करने के लिए बाजार की ट्रेंड स्थितियों के अनुसार एटीआर गुणक को गतिशील रूप से समायोजित करती है।
यह रणनीति मुख्य रूप से एटीआर और एडीएक्स संकेतकों पर आधारित है।
सबसे पहले, यह True Range (ATR) और ADX की गणना करता है। ATR बाजार की अस्थिरता को दर्शाता है जबकि ADX प्रवृत्ति की ताकत का आकलन करता है।
दूसरा, यह ADX सूचक में DI+ और DI- के बीच अंतर के अनुसार वर्तमान प्रवृत्ति की दिशा निर्धारित करता है। यदि DI+ DI- से अधिक है, तो यह एक अपट्रेंड है। यदि DI- DI+ से अधिक है, तो यह एक डाउनट्रेंड है।
फिर, जब ADX बढ़ रहा है, तो यह एक बड़ा ATR गुणक (m1) का उपयोग करता है। जब ADX गिर रहा है, तो यह गतिशील समायोजन प्राप्त करने के लिए एक छोटे ATR गुणक (m2) का उपयोग करता है। यह रणनीति का मूल है।
अंत में, एटीआर और मूल्य के मध्य बिंदु के साथ संयुक्त, यह प्रवृत्ति की दिशा निर्धारित करने के लिए ऊपरी और निचले बैंड की गणना करता है। जब मूल्य ऊपरी बैंड को तोड़ता है, तो यह लंबा हो जाता है। जब मूल्य निचले बैंड को तोड़ता है, तो यह छोटा हो जाता है।
इसलिए रणनीति में एटीआर और एडीएक्स शामिल हैं, और एटीआर मापदंडों को गतिशील रूप से समायोजित करके, यह व्यापार के लिए रुझानों को बेहतर ढंग से पकड़ सकता है।
इस रणनीति के कई स्पष्ट फायदे हैंः
इसलिए, यह एक बहुत ही व्यावहारिक प्रवृत्ति है, जो एक अच्छी ड्रॉडाउन नियंत्रण के साथ रणनीति का पालन करती है।
इस रणनीति में कुछ जोखिम भी हैं:
इसलिए पैरामीटर अनुकूलन और जोखिम नियंत्रण पर ध्यान देने की आवश्यकता है। इसके अलावा, ब्लैक स्वान घटनाओं का अधिक प्रभाव हो सकता है।
इस रणनीति को निम्नलिखित पहलुओं में अनुकूलित किया जा सकता हैः
इसलिए समस्याओं के अनुसार मापदंडों और तंत्रों को समायोजित करके अनुकूलन के लिए अभी भी बहुत जगह है।
सामान्य तौर पर, यह अनुकूली एटीआर-एडीएक्स प्रवृत्ति रणनीति वी 2 बहुत अच्छा प्रदर्शन करती है। एटीआर मापदंडों को गतिशील रूप से समायोजित करके, यह प्रवृत्तियों को अच्छी तरह से पकड़ती है। इसके अलावा, एटीआर और एडीएक्स में दो संकेतकों को जोड़ने से यह अधिक मजबूत हो जाता है। लेकिन हमें अभी भी जोखिम नियंत्रण और अनुकूलन पर ध्यान देने की आवश्यकता है ताकि पिछड़ने और ओवरसाइज्ड नुकसान को रोका जा सके। कुल मिलाकर, रणनीति सीखने और लागू करने के लायक है।
/*backtest start: 2022-11-28 00:00:00 end: 2023-12-04 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 // From mortdiggiddy's indicator to strategy // See also: https://www.tradingview.com/u/mortdiggiddy/ strategy(title = "Adaptive ATR-ADX Trend V2", shorttitle = "Adaptive ATR V2 Strategy", overlay = true) //Mode src = input(title = "Source", defval = hlc3) atrLen = input(title = "ATR", defval = 21, minval = 1, maxval = 100) m1 = input(title = "ATR Multiplier - ADX Rising", type = float, defval = 3.5, minval = 1, step = 0.1, maxval = 100) m2 = input(title = "ATR Multiplier - ADX Falling", type = float, defval = 1.75, minval = 1, step = 0.1, maxval = 100) adxLen = input(title = "ADX", defval = 14, minval = 1, maxval = 100) adxThresh = input(title = "ADX Threshold", defval = 30, minval = 1) aboveThresh = input(true, title = "ADX Above Threshold uses ATR Falling Multiplier Even if Rising?") useHeiken = input(false, title = "Use Heiken-Ashi Bars (Source will be ohlc4)") // DI-Pos, DI-Neg, ADX hR = change(high) lR = -change(low) dmPos = hR > lR ? max(hR, 0) : 0 dmNeg = lR > hR ? max(lR, 0) : 0 sTR = nz(sTR[1]) - nz(sTR[1]) / adxLen + tr sDMPos = nz(sDMPos[1]) - nz(sDMPos[1]) / adxLen + dmPos sDMNeg = nz(sDMNeg[1]) - nz(sDMNeg[1]) / adxLen + dmNeg DIP = sDMPos / sTR * 100 DIN = sDMNeg / sTR * 100 DX = abs(DIP - DIN) / (DIP + DIN) * 100 adx = sma(DX, adxLen) // Heiken-Ashi xClose = ohlc4 xOpen = (nz(xOpen[1]) + nz(close[1])) / 2 xHigh = max(high, max(xOpen, xClose)) xLow = min(low, min(xOpen, xClose)) // Trailing ATR v1 = abs(xHigh - xClose[1]) v2 = abs(xLow - xClose[1]) v3 = xHigh - xLow trueRange = max(v1, max(v2, v3)) atr = useHeiken ? rma(trueRange, atrLen) : atr(atrLen) m = rising(adx, 1) and (adx < adxThresh or not aboveThresh) ? m1 : falling(adx, 1) or (adx > adxThresh and aboveThresh) ? m2 : nz(m[1]) mUp = DIP >= DIN ? m : m2 mDn = DIN >= DIP ? m : m2 src_ = useHeiken ? xClose : src c = useHeiken ? xClose : close t = useHeiken ? (xHigh + xLow) / 2 : hl2 up = t - mUp * atr dn = t + mDn * atr TUp = max(src_[1], c[1]) > TUp[1] ? max(up, TUp[1]) : up TDown = min(src_[1], c[1]) < TDown[1] ? min(dn, TDown[1]) : dn trend = min(src_, min(c, close)) > TDown[1] ? 1 : max(src_, max(c, close)) < TUp[1]? -1 : nz(trend[1], 1) stop = trend == 1 ? TUp : TDown trendChange = change(trend) longCondition = (trendChange > 0) if (longCondition) strategy.entry("long", strategy.long) shortCondition = (trendChange < 0) if (shortCondition) strategy.entry("short", strategy.short) // Plot lineColor = not(trendChange) ? trend > 0 ? #00FF00DD : #FF0000DD : #00000000 shapeColor = trendChange ? trendChange > 0 ? #00FF00F8 : #FF0000F8 : #00000000 plot(stop, color = lineColor, style = line, linewidth = 1, title = "ATR Trend") plotshape(trendChange ? stop : na, style = shape.circle, size = size.tiny, location = location.absolute, color = shapeColor, title = "Change") alertcondition(trendChange > 0, title = "ATR-ADX Change Up", message = "ATR-ADX Change Up") alertcondition(trendChange < 0, title = "ATR-ADX Change Down", message = "ATR-ADX Change Down") // end