অ্যাডাপ্টিভ ATR-ADX ট্রেন্ড স্ট্র্যাটেজি V2


সৃষ্টির তারিখ: 2023-12-05 18:08:14 অবশেষে সংশোধন করুন: 2023-12-05 18:08:14
অনুলিপি: 0 ক্লিকের সংখ্যা: 1056
1
ফোকাস
1619
অনুসারী

অ্যাডাপ্টিভ ATR-ADX ট্রেন্ড স্ট্র্যাটেজি V2

ওভারভিউ

এই কৌশলটি একটি ট্রেন্ড ট্র্যাকিং কৌশল যা এটিআর এবং এডিএক্স সূচকগুলির সমন্বয় করে। এটি বাজারের প্রবণতার উপর নির্ভর করে এটিআর এর গুণককে গতিশীলভাবে সামঞ্জস্য করে, যার ফলে আরও ভাল ট্রেন্ড ট্র্যাকিং সম্ভব হয়।

কৌশল নীতি

এই কৌশলটি মূলত এটিআর এবং এডিএক্স সূচকগুলির উপর ভিত্তি করে।

প্রথমত, আসল অস্থিরতার পরিসীমা (ATR) এবং ADX গণনা করুন। এটিআর বাজারের অস্থিরতার মাত্রা প্রতিফলিত করে এবং ADX প্রবণতার শক্তি নির্ধারণ করে।

তারপর, ADX এর পলিহোয়ারি নির্দেশক DX এর পার্থক্যের উপর ভিত্তি করে, বর্তমান প্রবণতার পলিহোয়ারি অবস্থা বিচার করুন। যদি ডিআই + ডিআই -এর চেয়ে বেশি হয় তবে এটি একটি মাল্টিহেড প্রবণতা, যদি ডিআই -ডিআই + এর চেয়ে বেশি হয় তবে এটি একটি ফাঁকা প্রবণতা।

এরপরে, যখন ADX বৃদ্ধি পায় তখন একটি বড় ATR গুণক ব্যবহার করা হয় (m1) এবং যখন ADX হ্রাস পায় তখন একটি ছোট ATR গুণক ব্যবহার করা হয় (m2), যার ফলে গতিশীল সমন্বয় করা যায়। এটিই এই কৌশলটির মূল বিষয়।

অবশেষে, এটিআর এবং দামের মধ্যম মানের সাথে মিলিত হয়ে, ট্রেন্ডের দিকনির্দেশের জন্য ট্রেডিং ট্র্যাকের উপরে এবং নীচে গণনা করুন। দামগুলি যখন ট্রেনে উঠে যায় তখন বেশি দেখুন, যখন দামগুলি ট্রেন ভেঙে যায় তখন কম দেখুন।

সুতরাং, এই কৌশলটি ATR সূচক এবং ADX সূচকগুলিকে একত্রিত করে, এটিআর প্যারামিটারগুলিকে গতিশীলভাবে সামঞ্জস্য করে ট্রেডিংয়ের প্রবণতা আরও ভালভাবে ধরতে সক্ষম করে।

সামর্থ্য বিশ্লেষণ

এই কৌশলটির বেশ কিছু সুস্পষ্ট সুবিধা রয়েছেঃ

  1. গতিশীলভাবে প্যারামিটারগুলি সামঞ্জস্য করতে সক্ষম, যাতে ট্রেন্ডগুলি আরও ভালভাবে ধরা যায়
  2. এটিআর এবং এডিএক্সের সমন্বয়ে, এটি আরও ব্যাপকভাবে বিচার করা যায়
  3. প্রত্যাহারের সম্ভাবনা সীমিত
  4. বাস্তবায়ন প্রক্রিয়া সহজ এবং সহজে বোঝা যায়

সুতরাং, এটি একটি খুব কার্যকর ট্রেন্ড ট্র্যাকিং কৌশল, এবং এটির প্রত্যাহারের ক্ষমতা দুর্দান্ত এবং এটি সুপারিশ করা হয়।

ঝুঁকি বিশ্লেষণ

এই কৌশলটির কিছু ঝুঁকিও রয়েছেঃ

  1. ADX সূচকটি পিছিয়ে আছে, সম্ভবত প্রবণতা পাল্টাতে ব্যর্থ হয়েছে
  2. এটিআর-এর আকার ভুলভাবে নির্বাচন করা হয়েছে, যার ফলে কম লাভ বা বেশি ক্ষতি হতে পারে
  3. ট্রেনের ট্র্যাকটি দ্রুত ভেঙে পড়ে এবং ক্ষতিগ্রস্ত হয়।

সুতরাং, প্যারামিটার অপ্টিমাইজেশান এবং ঝুঁকি নিয়ন্ত্রণের দিকে মনোযোগ দেওয়া দরকার। এছাড়াও, ব্ল্যাক সোয়ান ইভেন্টগুলি কৌশলগুলিতে বড় প্রভাব ফেলতে পারে।

অপ্টিমাইজেশান দিক

এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে অপ্টিমাইজ করা যেতে পারেঃ

  1. ATR এবং ADX এর প্যারামিটারগুলিকে আরও ভালভাবে ট্রেন্ড ক্যাপচার করার জন্য অপ্টিমাইজ করা হয়েছে
  2. ADX-এর পিছিয়ে পড়া এড়াতে অন্যান্য সূচক যোগ করুন
  3. একক ক্ষতি নিয়ন্ত্রণের জন্য গতিশীল স্টপ লস ম্যানেজমেন্ট তৈরি করা
  4. পজিশন ম্যানেজমেন্টের পরিবর্তন, বিভিন্ন বাজারের পরিস্থিতিতে বিভিন্ন কৌশল গ্রহণ

তাই, এই কৌশলটি এখনও অপ্টিমাইজ করার জন্য অনেক জায়গা রয়েছে, এবং এই সমস্যার জন্য প্যারামিটার এবং প্রক্রিয়াগুলিকে সামঞ্জস্য করার জন্য এটি প্রয়োজনীয়।

সারসংক্ষেপ

এটিআর-এডিএক্স প্রবণতা কৌশলটি সামগ্রিকভাবে ভি 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