এটি একটি প্রবণতা অনুসরণকারী কৌশল যা এটিআর সূচক এবং এডিএক্স সূচককে একত্রিত করে। এটি আরও ভাল প্রবণতা ট্র্যাকিং অর্জনের জন্য বাজারের প্রবণতা অবস্থার অনুযায়ী গতিশীলভাবে এটিআর গুণক সামঞ্জস্য করে।
এই কৌশলটি মূলত ATR এবং ADX সূচকের উপর ভিত্তি করে।
প্রথমত, এটি ট্রু রেঞ্জ (এটিআর) এবং এডিএক্স গণনা করে। এটিআর বাজারের অস্থিরতা প্রতিফলিত করে যখন এডিএক্স প্রবণতার শক্তি বিচার করে।
দ্বিতীয়ত, এটি ADX সূচকের DI + এবং DI- এর মধ্যে পার্থক্য অনুযায়ী বর্তমান প্রবণতার দিক নির্ধারণ করে। যদি DI + DI- এর চেয়ে বেশি হয় তবে এটি একটি আপট্রেন্ড। যদি DI- DI + এর চেয়ে বেশি হয় তবে এটি একটি ডাউনট্রেন্ড।
তারপর, যখন ADX বৃদ্ধি পাচ্ছে, এটি একটি বৃহত্তর ATR গুণক (m1) ব্যবহার করে। যখন ADX হ্রাস পাচ্ছে, এটি গতিশীল সমন্বয় অর্জনের জন্য একটি ছোট ATR গুণক (m2) ব্যবহার করে। এটি কৌশলটির মূল।
অবশেষে, এটিআর এবং মূল্যের মাঝামাঝি পয়েন্টের সাথে মিলিত, এটি প্রবণতা দিক নির্ধারণের জন্য উপরের এবং নীচের ব্যান্ডগুলি গণনা করে। যখন দাম উপরের ব্যান্ডটি ভেঙে যায়, তখন এটি দীর্ঘ হয়। যখন দাম নিম্ন ব্যান্ডটি ভেঙে যায়, তখন এটি সংক্ষিপ্ত হয়।
সুতরাং কৌশলটি ATR এবং ADX অন্তর্ভুক্ত করে, এবং গতিশীলভাবে ATR পরামিতিগুলি সামঞ্জস্য করে, এটি ট্রেডিংয়ের জন্য প্রবণতা আরও ভালভাবে ক্যাপচার করতে পারে।
এই কৌশলটির বেশ কয়েকটি সুস্পষ্ট সুবিধা রয়েছে:
অতএব, এটি একটি ভাল ড্রাউনডাউন নিয়ন্ত্রণের সাথে কৌশল অনুসরণ করে একটি খুব বাস্তব প্রবণতা।
এই কৌশলের কিছু ঝুঁকিও রয়েছে:
সুতরাং পরামিতি অপ্টিমাইজেশান এবং ঝুঁকি নিয়ন্ত্রণের দিকে মনোযোগ দিতে হবে। এছাড়াও, ব্ল্যাক সোয়ান ইভেন্টগুলি আরও বেশি প্রভাব ফেলতে পারে।
কৌশলটি নিম্নলিখিত দিকগুলিতে অপ্টিমাইজ করা যেতে পারেঃ
সুতরাং সমস্যা অনুযায়ী পরামিতি এবং প্রক্রিয়াগুলি সামঞ্জস্য করে অপ্টিমাইজেশনের জন্য এখনও অনেক জায়গা রয়েছে।
সাধারণভাবে, এই অ্যাডাপ্টিভ এটিআর-এডিএক্স ট্রেন্ড স্ট্র্যাটেজি ভি 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