ڈائریکشنل موومنٹ انڈیکس (ڈی ایم آئی) ٹریڈنگ حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-09-18 14:11:21
ٹیگز:

جائزہ

یہ حکمت عملی ڈائریکشنل موومنٹ انڈیکس (ڈی ایم آئی) کی بنیاد پر ٹرینڈ ٹریڈنگ کو نافذ کرتی ہے۔ ڈی ایم آئی میں تین لائنیں شامل ہیں: اے ڈی ایکس ، + ڈی آئی اور - ڈی آئی۔ اے ڈی ایکس ٹرینڈ کی طاقت دکھاتا ہے ، ایک حد سے زیادہ کی اقدار ایک رجحان کی نشاندہی کرتی ہیں۔ + ڈی آئی اور - ڈی آئی اوپر اور نیچے کی رجحان کی طاقت دکھاتے ہیں۔ جب + ڈی آئی - ڈی آئی سے اوپر گزر جاتا ہے تو طویل اور جب - ڈی آئی + ڈی آئی سے اوپر گزر جاتا ہے تو مختصر ہوجائیں۔

حکمت عملی منطق

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

فوائد کا تجزیہ

  • ڈی ایم آئی کم سگنلز کے ساتھ رجحان کی سمت کی درست شناخت کرتا ہے
  • ADX بے معنی تجارت سے بچنے کے لئے غیر اہم بریکآؤٹس کو فلٹر کرتا ہے
  • رجحان کی سمت میں ٹریڈنگ وِپساؤ سے بچتی ہے
  • پیرامیٹرز کے لیے بڑی ایڈجسٹمنٹ کی جگہ - ADX کی حد، DI کی مدت وغیرہ

خطرے کا تجزیہ

  • رجحان کی تبدیلی نقصانات کا باعث بن سکتی ہے
  • 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)
    

مزید