وسائل لوڈ ہو رہے ہیں... لوڈنگ...

ADX متحرک رجحان کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-01-15 15:32:45
ٹیگز:

img

جائزہ

اے ڈی ایکس متحرک رجحان حکمت عملی ایک مقداری تجارتی حکمت عملی ہے جو مارکیٹ کے رجحانات کی طاقت اور سمت کا تعین کرنے کے لئے اے ڈی ایکس اشارے کا استعمال کرتی ہے۔ یہ مارکیٹ میں رجحان موجود ہے یا نہیں اس کا فیصلہ کرنے کے لئے اوسط سمت اشاریہ (ADX) کا حساب کرکے اور رجحان کی سمت کا تعین کرنے کے لئے مثبت سمت اشاریہ (DI +) اور منفی سمت اشاریہ (DI-) کا حساب کتاب کرکے خرید و فروخت کے سگنل تیار کرتی ہے۔

تجارتی منطق

یہ حکمت عملی سب سے پہلے ADX اشارے کا استعمال کرتی ہے تاکہ یہ معلوم کیا جاسکے کہ آیا مارکیٹ میں کوئی رجحان موجود ہے۔ جب ADX صارف کے ذریعہ طے شدہ کلیدی سطح (ڈیفالٹ 23) سے اوپر ہے تو ، یہ اس بات کی نشاندہی کرتا ہے کہ مارکیٹ کا رجحان نسبتا strong مضبوط ہے۔ جب موجودہ ADX قیمت n دن پہلے ADX قیمت سے زیادہ ہے (n صارف کے ذریعہ طے شدہ نظرثانی کی مدت ہے ، ڈیفالٹ 3 دن) ، یہ اس بات کی نشاندہی کرتا ہے کہ ADX بڑھ رہا ہے اور مارکیٹ میں رجحان تشکیل دے رہا ہے۔

اس کے بعد حکمت عملی مارکیٹ کے رجحان کی سمت کا تعین کرنے کے لئے DI + اور DI- کا استعمال کرتی ہے۔ جب DI + DI- سے زیادہ ہوتا ہے تو ، یہ مارکیٹ میں بڑھتی ہوئی رجحان کا اشارہ کرتا ہے۔ جب DI + DI- سے کم ہوتا ہے تو ، یہ مارکیٹ میں نیچے کی رجحان کا اشارہ کرتا ہے۔

آخر میں، حکمت عملی مخصوص خرید اور فروخت سگنل پیدا کرنے کے لئے ADX اور DI تجزیہ کو یکجا کرتی ہے:

  1. جب ADX بڑھتا ہے اور کلیدی سطح سے اوپر ہے اور DI + DI- سے زیادہ ہے تو ، خریدنے کا اشارہ پیدا ہوتا ہے
  2. جب ADX بڑھتا ہے اور کلیدی سطح سے اوپر ہے اور DI + DI- سے کم ہے تو ، فروخت کا اشارہ پیدا ہوتا ہے
  3. جب ADX کم کرنے کے لئے بدل جاتا ہے، ایک فلیٹ پوزیشن سگنل پیدا کیا جاتا ہے

اس حکمت عملی میں چلتی اوسط فلٹرنگ اور حسب ضرورت بیک ٹسٹنگ ٹائم رینج جیسی خصوصیات بھی فراہم کی گئی ہیں۔

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

ADX متحرک رجحان کی حکمت عملی کے مندرجہ ذیل فوائد ہیں:

  1. خود کار طریقے سے مارکیٹ کے رجحانات کی موجودگی کا پتہ لگائیں، غیر موثر تجارت سے بچنے
  2. خود کار طریقے سے رجحان کے بعد مارکیٹ کے رجحانات کی سمت کا تعین
  3. رجحان کے وجود پر خریدنے اور رجحان کے غائب ہونے پر چپٹانے کا واضح منطق
  4. ترتیب دینے کے قابل چلتی اوسط فلٹرنگ جھوٹے بریک آؤٹ سے بچتا ہے
  5. ماضی کی جانچ کے لئے حسب ضرورت بیک ٹسٹنگ ٹائم رینج
  6. مختلف مصنوعات میں اصلاح کے لئے سایڈست اشارے کے پیرامیٹرز

خطرے کا تجزیہ

اس حکمت عملی میں کچھ خطرات بھی ہیں:

  1. ADX اشارے میں تاخیر کا اثر ہے، ممکنہ طور پر ابتدائی رجحان کے مواقع کو یاد کرنا
  2. DI پر رجحان کی سمت پر انحصار غلط سگنل پیدا کرسکتا ہے کیونکہ DI حساس ہے
  3. چلتی اوسط فلٹر مختصر مدت کے مواقع کو یاد کر سکتا ہے
  4. غلط backtesting وقت کی حد سے زیادہ فٹنگ کا سبب بن سکتا ہے
  5. اشارے کے ناقص پیرامیٹرز حکمت عملی کی کارکردگی کو متاثر کرسکتے ہیں

خطرات کو کم کرنے کے لیے مندرجہ ذیل پر غور کیا جا سکتا ہے:

  1. تاخیر کو کم کرنے کے لئے ADX پیرامیٹرز کو مختصر کریں
  2. غلط سگنل کو روکنے کے لئے DI فلٹر کو ہٹا دیں یا ایڈجسٹ کریں
  3. چلتی اوسط مدت کو کم کرنا
  4. مکمل نمونہ ٹیسٹنگ کے لئے بیک ٹسٹنگ ٹائم فریم کو بڑھانا
  5. بہترین ترتیبات تلاش کرنے کے لئے پیرامیٹرز کو بہتر بنائیں

بہتر مواقع

حکمت عملی کو مندرجہ ذیل پہلوؤں سے بہتر بنایا جاسکتا ہے:

  1. ایک ہی اسٹاک کے خطرے کو متنوع کرنے کے لئے متعدد اسٹاک پر پورٹ فولیو ٹیسٹنگ
  2. ہر تجارت کے نقصان پر کنٹرول میں سٹاپ نقصان منطق شامل کریں
  3. درستگی کو بہتر بنانے کے لئے سگنل کی تصدیق کے لئے دیگر اشارے کے ساتھ مل کر
  4. خرید/فروخت کے سگنل کی تخلیق کے لئے مشین لرننگ الگورتھم متعارف کروانا
  5. متحرک ایڈجسٹمنٹ کے لئے آٹو پیرامیٹر ٹیوننگ ماڈیول شامل کریں

نتیجہ

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


/*backtest
start: 2024-01-07 00:00:00
end: 2024-01-14 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © millerrh with inspiration from @9e52f12edd034d28bdd5544e7ff92e 
//The intent behind this study is to look at ADX when it has an increasing slope and is above a user-defined key level (23 default). 
//This is to identify when it is trending.
//It then looks at the DMI levels.  If D+ is above D- and the ADX is sloping upwards and above the key level, it triggers a buy condition.  Opposite for short.
//Can use a user-defined moving average to filter long/short if desried.
// NOTE: THIS IS MEANT TO BE USED IN CONJUNCTION WITH MY "ATX TRIGGER" INDICATOR FOR VISUALIZATION. MAKE SURE SETTINGS ARE THE SAME FOR BOTH.

strategy("ADX | DMI Trend", overlay=true, initial_capital=10000, currency='USD', 
   default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.04)

// === BACKTEST RANGE ===
From_Year  = input(defval = 2019, title = "From Year")
From_Month = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
From_Day   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
To_Year    = input(defval = 9999, title = "To Year")
To_Month   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
To_Day     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
Start  = timestamp(From_Year, From_Month, From_Day, 00, 00)  // backtest start window
Finish = timestamp(To_Year, To_Month, To_Day, 23, 59)        // backtest finish window

// == INPUTS ==
// ADX Info
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Period")
keyLevel = input(23, title="Keylevel for ADX")
adxLookback = input(3, title="Lookback Period for Slope")

// == FILTERING ==
// Inputs
useMaFilter = input(title = "Use MA for Filtering?", type = input.bool, defval = true)
maType = input(defval="EMA", options=["EMA", "SMA"], title = "MA Type For Filtering")
maLength   = input(defval = 200, title = "MA Period for Filtering", minval = 1)

// Declare function to be able to swap out EMA/SMA
ma(maType, src, length) =>
    maType == "EMA" ? ema(src, length) : sma(src, length) //Ternary Operator (if maType equals EMA, then do ema calc, else do sma calc)
maFilter = ma(maType, close, maLength)
plot(maFilter, title = "Trend Filter MA", color = color.green, linewidth = 3, style = plot.style_line, transp = 50)

// Check to see if the useMaFilter check box is checked, this then inputs this conditional "maFilterCheck" variable into the strategy entry 
maFilterCheck = if useMaFilter == true
    maFilter
else
    close

// == USE BUILT-IN DMI FUNCTION TO DETERMINE ADX AND BULL/BEAR STRENGTH
[diplus, diminus, adx] = dmi(dilen, adxlen)

buySignal = (adx[0]-adx[adxLookback] > 0) and adx > keyLevel and diplus > diminus  and close >= maFilterCheck
// buySignalValue = valuewhen(buySignal, close, 0)
shortSignal = (adx[0]-adx[adxLookback] > 0) and adx > keyLevel and diplus < diminus  and close <= maFilterCheck
// shortSignalValue = valuewhen(shortSignal, close, 0)
sellCoverSignal = adx[0]-adx[adxLookback] < 0

// == ENTRY & EXIT CRITERIA
// Triggers to be TRUE for it to fire of the BUY Signal : (opposite for the SELL signal).
// (1): Price is over the 200 EMA line. (EMA level configurable by the user)
// (2): "D+" is OVER the "D-" line
// (3): RSI 7 is under 30 (for SELL, RSI 7 is over 70)
// 1* = The ultimate is to have a combination line of 3 EMA values, EMA 14, EMA 50 and EMA 200 - And if price is over this "combo" line, then it's a strong signal

// == STRATEGY ENTRIES/EXITS == 
strategy.entry("Long", strategy.long, when = buySignal)
strategy.close("Long", when = sellCoverSignal)
strategy.entry("Short", strategy.short, when = shortSignal)
strategy.close("Short", when = sellCoverSignal)
    
// == ALERTS == 
// alertcondition(buySignal, title='ADX Trigger Buy', message='ADX Trigger Buy')
// alertcondition(sellSignal, title='ADX Trigger Sell', message='ADX Trigger Sell')

مزید