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