ڈائریکشنل موومنٹ انڈیکیٹر (DMI) تجارتی حکمت عملی


تخلیق کی تاریخ: 2023-09-18 14:11:21 آخر میں ترمیم کریں: 2023-09-18 14:11:21
کاپی: 0 کلکس کی تعداد: 804
1
پر توجہ دیں
1617
پیروکار

جائزہ

یہ حکمت عملی متحرک اشارے ڈی ایم آئی پر مبنی ہے جس میں رجحان کی تجارت ہوتی ہے۔ ڈی ایم آئی تین منحنی خطوط پر مشتمل ہے: ADX ، + DI اور -DI۔ ADX رجحان کی کمزوری کی نشاندہی کرتا ہے ، اور کسی دیئے گئے نقطہ سے زیادہ ہونے پر رجحان میں داخل ہوتا ہے۔ + DI اور -DI بالترتیب بڑھتے ہوئے رجحان اور گرنے والے رجحان کی طاقت کی نشاندہی کرتے ہیں۔ جب + DI اوپر ہوتا ہے تو -DI سے زیادہ ہوتا ہے۔ جب -DI اوپر ہوتا ہے تو + DI سے زیادہ ہوتا ہے۔

حکمت عملی کا اصول

ADX ، + DI اور -DI کے منحنی خطوط کا حساب لگائیں۔ ADX کا معقول گھاٹ طے کریں کہ آیا یہ رجحان میں داخل ہوا ہے ، مثال کے طور پر 25۔ جب ADX اس گھاٹ سے زیادہ ہے تو ، اگر + DI DI سے زیادہ ہے تو ، اس کا فیصلہ اوپر کی طرف ہے ، اور زیادہ ہے۔ اگر -DI + DI سے زیادہ ہے تو ، اس کا فیصلہ نیچے کی طرف ہے ، اور خالی ہے۔

طاقت کا تجزیہ

  • ڈی ایم آئی اشارے رجحان کی سمت کا درست اندازہ لگاتا ہے ، سگنل کم ہے
  • اے ڈی ایکس کا استعمال کرتے ہوئے رجحانات کو کمزور کرنے کے لئے ، شور کی تجارت سے بچنے کے لئے ناکامی سے بچیں
  • ایک بار میں صرف ایک ہی رقم کا زیادہ یا کم استعمال کریں تاکہ بار بار تجارت سے بچا جا سکے
  • پیرامیٹرز کو ایڈجسٹ کرنے کے لئے کافی جگہ ہے ، ADX threshold ، DI cycle وغیرہ کو ایڈجسٹ کیا جاسکتا ہے

خطرے کا تجزیہ

  • ٹرینڈ ریورسنگ سے بچنے کے لیے احتیاط کی ضرورت
  • ADX نے رجحان کو کمزور اور پیچھے چھوڑ دیا
  • طویل مدتی پوزیشنوں میں واپسی کا خطرہ زیادہ ہوتا ہے

مناسب طریقے سے پوزیشن کی مدت کو کم کیا جاسکتا ہے ، یا رجحان کو تبدیل کرنے کے لئے دوسرے اشارے کے ساتھ مل کر۔

اصلاح کی سمت

  • ADX پیرامیٹرز کو بہتر بنانا ، ردعمل کی حساسیت کو متوازن کرنا اور جعلی سگنل کو فلٹر کرنا
  • مختلف ہولڈنگ سائیکل پیرامیٹرز کے اثرات کی جانچ
  • رجحان کی تبدیلی کے لئے اشارے جیسے مساوی لائن کو مدنظر رکھا جاسکتا ہے
  • مختلف اقسام کے پیرامیٹرز پر استحکام کی جانچ

خلاصہ کریں۔

ڈی ایم آئی حکمت عملی رجحان کی سمت کا تعین کرنے کے لئے درست ہے ، پیچھے ہٹنے کا کنٹرول بہتر ہے۔ پیرامیٹرز کو بہتر بنانے کے ذریعے مزید بہتری لائی جاسکتی ہے ، یہ ایک آسان اور عملی رجحان کی پیروی کرنے والی حکمت عملی ہے۔

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-09-10 00:00:00
end: 2023-09-17 00:00:00
period: 30m
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/
// ©wojak_bogdanoff
// @version=5
// Directional Movement Index (DMI)

strategy(title="Directional Movement Index", shorttitle="DMI︎", overlay=true, pyramiding=1, calc_on_every_tick=false, calc_on_order_fills=false, initial_capital=100.0, default_qty_type=strategy.percent_of_equity, default_qty_value=100.0, commission_type=strategy.commission.percent, commission_value=0.1, slippage=1)

trade_type = 'Long' // input.string(defval = "Long", title="Position Type", options=["Both", "Long", "Short"], group='Trading Settings')
strategy_type = 'DMI' // input.string(defval="ECS︎", title="Strategy Type", options='[ECS︎'], group='Trading Settings')

start_date  = input(title='Testing Start Date', defval=timestamp("2017-01-01T00:00:00"), group='Trading Settings')
finish_date = input(title='Testing End Date', defval=timestamp("2025-01-01T00:00:00"), group='Trading Settings')

_testperiod = true
_check = _testperiod

// --- (Start) Directional Movement Index (DMI) ----------------------------- //

dmi_adxSmoothing = input.int(14, title="ADX Smoothing", minval=1, maxval=50)
dmi_len = input.int(7, minval=1, title="DI Length")
dmi_up = ta.change(high)
dmi_down = -ta.change(low)
dmi_plusDM = na(dmi_up) ? na : (dmi_up > dmi_down and dmi_up > 0 ? dmi_up : 0)
dmi_minusDM = na(dmi_down) ? na : (dmi_down > dmi_up and dmi_down > 0 ? dmi_down : 0)
dmi_rma = ta.rma(ta.tr, dmi_len)
dmi_plus = fixnan(100 * ta.rma(dmi_plusDM, dmi_len) / dmi_rma)
dmi_minus = fixnan(100 * ta.rma(dmi_minusDM, dmi_len) / dmi_rma)
dmi_sum = dmi_plus + dmi_minus
dmi_adx = 100 * ta.rma(math.abs(dmi_plus - dmi_minus) / (dmi_sum == 0 ? 1 : dmi_sum), dmi_adxSmoothing)

plot(dmi_adx, color=#F50057, title="ADX")
plot(dmi_plus, color=#2962FF, title="+DI")
plot(dmi_minus, color=#FF6D00, title="-DI")

dmi_consld_limit=input.int(defval=25, title='Consolidation ADX')
dmi_consld=dmi_adx<=dmi_consld_limit
dmi_strong_up=dmi_adx>dmi_consld_limit and dmi_plus>dmi_minus
dmi_strong_down=dmi_adx>dmi_consld_limit and dmi_plus<dmi_minus

barcolor(dmi_consld ? color.new(color.black,0) : na, title='Consolidation region', display=display.none)
barcolor(dmi_strong_up ? color.new(color.green,0) : na, title='Uptrend Region')
barcolor(dmi_strong_down ? color.new(color.red,0) : na, title='Downtrend Region')

dmi_long_e = (not dmi_strong_up[1]) and dmi_strong_up[0]
dmi_long_x = dmi_strong_up[1] and (not dmi_strong_up[0])

dmi_short_e = dmi_strong_up[1] and (not dmi_strong_up[0])
dmi_short_x = (not dmi_strong_up[1]) and dmi_strong_up[0]

// --- (End) Directional Movement Index (DMI) ------------------------------- //

// --- Trade Conditions ----------------------------------------------------- //

var is_long_open=false, var is_short_open=false

long_e = strategy_type == "DMI" ? dmi_long_e : na
long_x = strategy_type == "DMI" ? dmi_long_x : na

short_e = strategy_type == "DMI" ? dmi_short_e : na
short_x = strategy_type == "DMI" ? dmi_short_x : na

long_e_color = input.color(defval=color.new(color.teal,0), title='Long Entry', group='Signals Style - Setting')
long_x_color = input.color(defval=color.new(color.purple,0), title='Long Exit', group='Signals Style - Setting')

is_trade_bar = (long_e and not is_long_open) or (long_x and is_long_open)

barcolor(color=is_trade_bar ? na : (close>open ? color.new(color.green,90) : color.new(color.red,90)), title='Trade Bars')

barcolor(color=(trade_type == 'Long' or trade_type == 'Both') ? long_e and not is_long_open ? long_e_color : na : na, title="Long - Entry Bar", editable=false)
barcolor(color=(trade_type == 'Long' or trade_type == 'Both') ? long_x and is_long_open ? long_x_color : na : na, title="Long - Exit Bar", editable=false)

plotshape((trade_type == 'Long' or trade_type == 'Both') ? long_e and not is_long_open : na, text="B", textcolor=color.white, style=shape.labelup, color=long_e_color, size=size.tiny, location=location.belowbar, title="Long - Entry Labels")
plotshape((trade_type == 'Long' or trade_type == 'Both') ? long_x and is_long_open : na, text="S", textcolor=color.white, style=shape.labeldown, color=long_x_color, size=size.tiny, location=location.abovebar, title="Long - Exit Labels")

plotshape((trade_type == 'Short' or trade_type == 'Both') ? short_e and not is_short_open : na, text="E", textcolor=color.black, style=shape.labeldown, color=color.new(color.yellow,30), size=size.tiny, location=location.abovebar, title="Short - Entry Labels", editable=false)
plotshape((trade_type == 'Short' or trade_type == 'Both') ? short_x and is_short_open : na, text="X", textcolor=color.black, style=shape.labeldown, color=color.new(color.orange,30), size=size.tiny, location=location.abovebar, title="Short - Exit Labels", editable=false)

if long_e and not is_long_open
    is_long_open:=true
if long_x and is_long_open
    is_long_open:=false

if short_e and not is_short_open
    is_short_open:=true
if short_x and is_short_open
    is_short_open:=false

// --- Trade Executions ----------------------------------------------------- //

if trade_type == "Both" and _check
    strategy.entry("Long", strategy.long, comment="Long", when=long_e and _testperiod)
    strategy.close("Long", comment="Exit Long", when=long_x and _testperiod)
    strategy.entry("Short", strategy.short, comment="Short", when=short_e and _testperiod)
    strategy.close("Short", comment="Exit Short", when=short_x and _testperiod)

if trade_type == "Long" and _check
    strategy.entry("Long", strategy.long, comment=" ", when=long_e and _testperiod)
    strategy.close("Long", comment=" ", when=long_x and _testperiod)

if trade_type == "Short" and _check
    strategy.entry("Short", strategy.short, comment="Short", when=short_e and _testperiod)
    strategy.close("Short", comment="Exit Short", when=short_x and _testperiod)