یہ حکمت عملی اجناس کے سمتی تحریک انڈیکس (ڈی آئی) کا حساب لگاتی ہے اور اسے دو طرفہ تجارت کو نافذ کرنے کے لئے حد کے پیرامیٹرز کے ساتھ جوڑتی ہے۔ جب ڈی آئی + حد کے پیرامیٹر سے زیادہ ہے تو یہ طویل ہوجاتا ہے اور جب ڈی آئی + حد کے پیرامیٹر سے زیادہ ہے تو یہ مختصر ہوجاتا ہے۔
اس حکمت عملی کا بنیادی اشارے سمتی تحریک انڈیکس (ڈی آئی) ہے۔ ڈی آئی کا حساب مندرجہ ذیل فارمولوں کے ذریعہ کیا جاتا ہے:
DI+ = (DM+ / حقیقی رینج) × 100 DI- = (DM- / حقیقی رینج) × 100
جہاں ڈی ایم + سمت کی تحریک مثبت کی نمائندگی کرتا ہے ، ڈی ایم - سمت کی تحریک منفی کی نمائندگی کرتا ہے۔ حقیقی رینج پچھلے دن کی سب سے زیادہ قیمت ، سب سے کم قیمت اور بند ہونے کی قیمت کا حساب لگاتے ہوئے حالیہ اتار چڑھاؤ کی نمائندگی کرتا ہے۔
ڈی آئی کی تعریف کے مطابق، جب ڈی آئی + > ڈی آئی -، اس کا مطلب یہ ہے کہ موجودہ مارکیٹ کی رفتار مضبوط ہے، جو ایک بیل مارکیٹ سے تعلق رکھتا ہے؛ جب ڈی آئی - > ڈی آئی +، اس کا مطلب یہ ہے کہ ریچھ کی رفتار ریچھ کی رفتار سے زیادہ مضبوط ہے، جو ریچھ مارکیٹ سے تعلق رکھتا ہے.
یہ حکمت عملی اس خصوصیت کا استعمال کرتی ہے اور ایک حد پیرامیٹر طے کرتی ہے۔ جب DI + ایک حد پیرامیٹر کے ذریعہ DI- سے بڑا ہوتا ہے تو ، یہ طے کرتا ہے کہ موجودہ مارکیٹ ایک بیل مارکیٹ ہے اور لمبی جاتی ہے۔ جب DI- ایک حد پیرامیٹر کے ذریعہ DI + سے بڑا ہوتا ہے تو ، یہ طے کرتا ہے کہ موجودہ مارکیٹ ایک ریچھ مارکیٹ ہے اور مختصر ہوجاتی ہے۔
مثال کے طور پر، اگر حد پیرامیٹر 3 پر مقرر کیا جاتا ہے تو، مخصوص تجارتی قوانین ہیں:
چونکہ DI + اور DI - کے درمیان اکثر چھوٹے اتار چڑھاؤ والے اختلافات ہوتے ہیں ، لہذا ایک حد پیرامیٹر کا تعین کرنا کچھ تجارتوں کو بغیر کسی اہم سمت کے فلٹر کرسکتا ہے اور غیر ضروری تجارت کو کم کرسکتا ہے۔ یہ اس حکمت عملی کا ایک فائدہ ہے۔
اس حکمت عملی کے اہم فوائد یہ ہیں:
ڈی آئی مارکیٹ کی سمت کا جائزہ لینے میں قابل اعتماد ہے
ڈی آئی براہ راست بیلوں اور ریچھوں کی طاقت کا حساب لگا کر مارکیٹ کے رجحانات کا جائزہ لیتا ہے۔ یہ نظریہ پیچیدہ الگورتھم جیسے منحنی فٹنگ کے بغیر آسان اور قابل اعتماد ہے۔
حد پیرامیٹر مؤثر طریقے سے سگنل فلٹر کر سکتے ہیں
حد پیرامیٹر اہم سمت کے بغیر چھوٹے اتار چڑھاؤ کو فلٹر کرتا ہے ، صرف تجارت کے لئے اہم سمت کے ساتھ حصوں کا انتخاب کرتا ہے ، اس طرح پھنس جانے سے بچتا ہے۔
خودکار دو طرفہ تجارت حاصل کریں
طویل اور مختصر پوزیشنوں کو دستی فیصلے کے بغیر DI اشارے کی بنیاد پر خود بخود تبدیل کیا جاسکتا ہے، جس سے ٹریڈنگ کی مشکل کم ہوتی ہے۔
اپنی مرضی کے مطابق ٹریڈنگ کا وقت فریم
صرف ایک مرضی کے مطابق تاریخ کی حد کے اندر تجارت کرنے کی ترتیب کی حمایت کرتا ہے اور بعد میں تمام پوزیشنوں کو خود بخود بند کر دیتا ہے، لچکدار اور آسان.
صرف طویل یا مختصر منتخب
لمبی اور مختصر سوئچوں کے ذریعے ، صرف ایک طرفہ سگنل کا انتخاب مختلف مارکیٹ کے ماحول کے لئے موزوں صرف لمبی یا مختصر حکمت عملیوں کو نافذ کرنے کے لئے کیا جاسکتا ہے۔
اس حکمت عملی کے ساتھ کچھ خطرات بھی ہیں:
DI غلط سگنل دینے کا امکان
جب مارکیٹ میں شدید اتار چڑھاؤ ہوتا ہے تو ڈی آئی قلیل مدتی غلط سگنل دے سکتا ہے ، جس کی وجہ سے تجارت ناکام ہوجاتی ہے۔ تصدیق کے لئے دوسرے اشارے کو جوڑنے کی ضرورت ہے۔
غلط حد پیرامیٹر کی ترتیبات
اعلی یا کم حد کے پیرامیٹرز کی غلط ترتیب سے بہت کم یا بہت زیادہ تجارتی سگنل پیدا ہوسکتے ہیں۔ پیرامیٹرز کو مارکیٹ کے مطابق ایڈجسٹ کرنے کی ضرورت ہے۔
رجحان اختتامی نقطہ کا تعین کرنے میں ناکام
ڈی آئی صرف موجودہ رجحان کی سمت کا تعین کرسکتا ہے اور اس کا فیصلہ نہیں کرسکتا ہے کہ رجحان ختم ہو گیا ہے یا الٹ گیا ہے۔ دیگر اشارے کو جوڑنے کی ضرورت ہے۔
خطرات کے حل میں شامل ہیں:
DI سگنل فلٹر کرنے کے لئے چلتی اوسط اور دیگر اشارے کو یکجا کریں
بیک ٹسٹ کے نتائج کی بنیاد پر حد کے پیرامیٹرز کو ایڈجسٹ کریں
حجم، ایم اے سی ڈی وغیرہ کو یکجا کریں تاکہ یہ معلوم ہو سکے کہ رجحان کی تبدیلی
حکمت عملی کو مندرجہ ذیل طریقوں سے مزید بہتر بنایا جاسکتا ہے:
مارکیٹ پروفائل جیسے دیگر رجحان کی تشخیص کے اشارے کو یکجا کریں
مارکیٹ پروفائل جیسے اشارے کو جوڑنا جو طویل قلیل طاقت کو DI کے ساتھ بدیہی طور پر بھی اندازہ لگاتے ہیں ، فیصلے کی درستگی کو بہتر بنا سکتے ہیں۔
سٹاپ منافع اور سٹاپ نقصان کی حکمت عملی شامل کریں
اسٹاپ منافع ، وقت یا فیصد اسٹاپ نقصانات کی ترتیب سے منافع میں تالا لگا اور نقصانات کو کم کیا جاسکتا ہے۔
مخصوص مصنوعات کے لئے پیرامیٹرز کو ایڈجسٹ کریں
مختلف مصنوعات کی خصوصیات کے مطابق حد کے پیرامیٹرز اور تجارتی اوقات کو ایڈجسٹ کرنے سے حکمت عملی کی کارکردگی میں بہتری آسکتی ہے۔
مشین لرننگ کا استعمال کرتے ہوئے متحرک اصلاح
مضبوطی سیکھنے کے الگورتھم کا اطلاق براہ راست سگنلز کی بنیاد پر پیرامیٹر کی ترتیبات کو متحرک طور پر بہتر بنانے کے لئے۔
خلاصہ یہ ہے کہ یہ حکمت عملی نسبتا simple آسان اور عملی ہے۔ یہ مارکیٹ کی سمت کا تعین کرنے کے لئے DI
/*backtest start: 2022-12-12 00:00:00 end: 2023-12-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Noro's DI Strategy", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %") len = input(title="Length", defval=14) limit = input(3, title = "limit, %") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //DI TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1]))) DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0 DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0 SmoothedTrueRange = 0.0 SmoothedDirectionalMovementPlus = 0.0 SmoothedDirectionalMovementMinus = 0.0 SmoothedTrueRange := nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/len) + TrueRange SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/len) + DirectionalMovementPlus SmoothedDirectionalMovementMinus := nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/len) + DirectionalMovementMinus DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100 DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100 //Trend trend = 0 trend := DIPlus > DIMinus + limit ? 1 : DIPlus < DIMinus - limit ? -1 : trend[1] //Background col = trend == 1 ? lime : red bgcolor(col, transp = 80) //Lines plot(DIPlus, color=lime, title="DI+", linewidth = 3) plot(DIMinus, color=red, title="DI-", linewidth = 3) //Trading size = strategy.position_size lot = 0.0 lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1] if trend == 1 strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if trend == -1 strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if time > timestamp(toyear, tomonth, today, 23, 59) strategy.close_all()