یہ حکمت عملی ADX اشارے کی متحرک تبدیلیوں کو ٹریک کرتی ہے تاکہ بروقت رجحان کی پیروی کے لئے مارکیٹ کے رجحانات میں ابتدائی تبدیلیوں کو حاصل کیا جاسکے۔ جب ADX کم سطحوں سے تیزی سے بڑھتا ہے تو ، یہ اشارہ کرتا ہے کہ ایک رجحان تشکیل دے رہا ہے جس میں داخل ہونے کا ایک بہت بڑا موقع موجود ہے۔ حرکت پذیر اوسط کی مدد سے ، یہ غلط سگنل کو مؤثر طریقے سے فلٹر کرسکتا ہے۔
اس حکمت عملی کا مرکز ADX اشارے کی متحرک تبدیلیوں کی بنیاد پر رجحان کی ترقی کا فیصلہ کرنے میں ہے۔ کم ADX رجحانات میں چھوٹے اتار چڑھاو کا مطلب ہے۔ جب ADX کم سطحوں سے تیزی سے بڑھتا ہے تو ، یہ اشارہ کرتا ہے کہ ایک رجحان تشکیل دے رہا ہے۔ یہ حکمت عملی ADX کے تیز اضافے کی نگرانی کرکے رجحان کے ظہور کو پکڑتی ہے۔
خاص طور پر، داخلہ سگنل مندرجہ ذیل عوامل پر مشتمل ہے:
جب مذکورہ بالا تمام شرائط پوری ہوجاتی ہیں تو ، اس سے یہ اشارہ ہوتا ہے کہ طویل عرصے تک جانے کے لئے ایک اپ ٹرینڈ تشکیل دے رہا ہے۔ جب قیمت چلتی اوسط سے نیچے آجاتی ہے تو ، پوزیشنیں بند ہوجاتی ہیں۔ دو چلتی اوسطوں کا استعمال رجحانات کو زیادہ درست طریقے سے فیصلہ کرنے کے لئے کیا جاتا ہے۔
اسٹاپ نقصان کا منطق بھی اسی طرح کا ہے۔ جب ADX تیزی سے گرتا ہے تو مختصر ہوجائیں ، اور جب قیمت بڑھتی ہوئی اوسط سے اوپر ہوجاتی ہے تو پوزیشن بند ہوجائیں۔
یہاں سب سے بڑا فائدہ ابھرتے ہوئے رجحانات کو بروقت گرفت میں لینا ہے۔ مطلق ADX اقدار کو دیکھنے کا روایتی طریقہ اکثر رجحان کو کال کرنے کے لئے 20 یا 25 سے زیادہ کی تصدیق کی ضرورت ہوتی ہے ، اس طرح مثالی انٹری ٹائمنگ سے محروم ہوجاتا ہے۔ یہ حکمت عملی ADX کے تیزی سے اضافے کو ٹریک کرکے رجحان کی ابتدائی ترقی کو پکڑتی ہے۔
اس کے علاوہ، چلتی اوسط مؤثر طریقے سے غلط سگنل کو فلٹر کرنے میں مدد کرتی ہے، حکمت عملی کی استحکام کو بڑھانے میں مدد ملتی ہے.
سب سے بڑا خطرہ خود ADX کی پسماندہ نوعیت سے آتا ہے۔ پسماندہ کو کم کرنے کے لئے تیزی سے اضافے کو پکڑنے کے باوجود ، ابھی بھی کچھ تاخیر ہے۔ اس سے کچھ تیزی سے الٹ جانے والی منڈیوں میں کمی واقع ہوتی ہے۔
مزید برآں ، ADX رجحانات کا کامل اندازہ نہیں لگاتا ہے اور وقتا فوقتا ان کی غلط تشخیص کرتا ہے۔ چلتی اوسط کچھ شور کو فلٹر کرتی ہے لیکن مزید اصلاح کی ضرورت ہوتی ہے۔
اس حکمت عملی کو بہتر بنانے کے لئے ابھی بھی بہت زیادہ گنجائش موجود ہے ، بنیادی طور پر رجحانات کو پکڑنے میں ADX کی درستگی کو بڑھانا۔ مشین لرننگ جیسے طریقوں کو دریافت کیا جاسکتا ہے ، ADX تبدیلیوں کی بنیاد پر امکانات کی تقسیم کی پیش گوئی کرنے کے لئے ٹریننگ ماڈل۔ پیرامیٹر ٹیوننگ ، اضافی اشارے وغیرہ جیسے دیگر پہلوؤں کی بھی جانچ کی جاسکتی ہے۔
یہ متحرک بڑھتی ہوئی ADX رجحان کی پیروی کرنے والی حکمت عملی تیزی سے ADX کے تیز اضافے کی نشاندہی کرکے رجحان کی تبدیلیوں کو تیزی سے پکڑتی ہے ، اس طرح بروقت انداز میں رجحانات کی پیروی کرتی ہے۔ اس کا سب سے بڑا فائدہ وقت میں اس کی چپلتا ہے ، جو ابتدائی رجحان کی پیشرفت کو مؤثر طریقے سے پکڑتا ہے۔ اس دوران ، غلط تشخیص کے کچھ خطرات باقی رہتے ہیں جن میں مسلسل اصلاح اور جانچ کی ضرورت ہوتی ہے۔
/*backtest start: 2023-12-03 00:00:00 end: 2023-12-10 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © dhilipthegreat //@version=4 //Rising ADX strategy strategy(title="Rising ADX strategy", overlay=false) adxlen = input(14, title="ADX Length", minval=1) threshold = input(10, title="threshold", minval=5) hline(threshold, color=color.black, linestyle=hline.style_dashed) atype = input(2,minval=1,maxval=7,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA") malen=input(20, title="Moving average 1 ",minval=1, maxval=50) avg = atype == 1 ? sma(close,malen) : atype == 2 ? ema(close,malen) : atype == 3 ? wma(close,malen) : atype == 4 ? hma(close,malen) : na atype2 = input(2,minval=1,maxval=7,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA") malen2=input(20, title="Moving average 2",minval=1, maxval=200) avg2 = atype2 == 1 ? sma(close,malen2) : atype2 == 2 ? ema(close,malen2) : atype2 == 3 ? wma(close,malen2) : atype2 == 4 ? hma(close,malen2) : na //ADX&DI dilen = 14 dirmov(len,_high,_low,_tr) => up = change(_high) down = -change(_low) plusDM = na(up) ? na : (up > down and up > 0 ? up : 0) minusDM = na(down) ? na : (down > up and down > 0 ? down : 0) truerange = rma(_tr, len) plus = fixnan(100 * rma(plusDM, len) / truerange) minus = fixnan(100 * rma(minusDM, len) / truerange) [plus, minus] adx(dilen, adxlen,_high,_low,_tr) => [plus, minus] = dirmov(dilen,_high,_low,_tr) sum = plus + minus adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen) [plus, minus] = dirmov(dilen,high,low,tr) sig = adx(dilen, adxlen,high,low,tr) prev_sig = adx(dilen, adxlen,high[1],low[1],tr) plot(sig ? sig : na, color = rising(sig, 1) ? color.lime : falling(sig, 1) ? color.orange : color.purple, title="ADX",linewidth=2) ////// longCondition= sig > threshold and rising(sig, 1) and falling(prev_sig, 1) and close > avg and close > avg2 barcolor(longCondition ? color.yellow: na) Long_side = input(true, "Long side") if Long_side strategy.entry(id="Long", long=true, when= longCondition and strategy.position_size<1) exitCondition= (rising(prev_sig, 1) and falling(sig, 1)) or close < avg and close < avg2 strategy.close(id="Long",comment="L exit", qty=strategy.position_size , when= exitCondition) //close all shortCondition= sig > threshold and rising(sig, 1) and falling(prev_sig, 1) and close < avg and close < avg2 barcolor(shortCondition ? color.gray: na) Short_side = input(true, "Short side") if Short_side strategy.entry(id="Short", long=false, when= shortCondition and strategy.position_size<1) sell_exitCondition= (rising(prev_sig, 1) and falling(sig, 1)) or close > avg and close > avg2 strategy.close(id="Short",comment="S exit", qty=strategy.position_size , when= sell_exitCondition) //close all barcolor(strategy.position_size>1 ? color.lime: na) bgcolor(strategy.position_size>1 ? color.lime: na) barcolor(strategy.position_size<0 ? color.orange: na) bgcolor(strategy.position_size<0 ? color.orange: na)