اے ڈی ایکس مومنٹم ٹرینڈ حکمت عملی

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

img

جائزہ

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

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

  1. ADX، DI+ اور DI- اشارے کا حساب لگائیں۔
  2. ADX جھکاو > 0 بڑھتی ہوئی رجحان کی نشاندہی کرتا ہے۔ غیر رجحان پذیر مارکیٹوں کو فلٹر کرنے کے لئے کلیدی سطح 23 پر مقرر کی گئی ہے۔
  3. DI+ DI- سے اوپر بولش موتمینٹ کو کم موتمینٹ کو ختم کرتا ہے، خریدنے کا اشارہ دیتا ہے۔
  4. جب چلتی اوسط فلٹر فعال ہو تو، صرف خرید سگنل پیدا کریں جب قریب چلتی اوسط سے اوپر ہے.
  5. جب ADX جھکاؤ < 0 ہو تو پوزیشنیں بند کریں، جو زوال پذیر رجحان کی نشاندہی کرتی ہیں۔

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

  1. ایم اے فلٹر غیر رجحان مارکیٹوں میں شور کی تجارت کو کم کرتا ہے۔
  2. ADX ڈھلوان درست طریقے سے رجحان کی طاقت کا تعین کرتا ہے.
  3. DI سمت کی نشاندہی کرتا ہے جو طاقت کے لئے ADX کے ساتھ مل کر ایک مضبوط رجحان ٹریڈنگ سسٹم تشکیل دیتا ہے۔
  4. سادہ ایم اے حکمت عملیوں کے مقابلے میں کم ڈراؤنڈ اور اعلی منافع کا عنصر کی توقع کریں.

خطرے کا تجزیہ

  1. ADX کے نتائج مختلف ان پٹ پیرامیٹرز کے ساتھ نمایاں طور پر مختلف ہوتے ہیں۔
  2. DMI واضح طور پر سمت کا تعین کرنے سے پہلے غلط سگنل دے سکتا ہے.
  3. کچھ تاخیر موجود ہے، حکمت عملی کی کارکردگی کو کم کرتی ہے.

اصلاح کی ہدایات

  1. بہترین نتائج کے لئے ADX پیرامیٹرز کو بہتر بنائیں.
  2. اسٹاپ نقصان کو ایک ہی تجارت پر نقصان کی حد میں شامل کریں.
  3. سگنلز کو فلٹر کرنے کے لیے دیگر اشارے کو یکجا کرنے کی کوشش کریں، مثلاً آر ایس آئی، بولنگر بینڈ۔

خلاصہ

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


/*backtest
start: 2024-01-08 00:00:00
end: 2024-01-15 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')

مزید