ADX ڈائنامک انڈیکیٹر کے ساتھ مل کر موونگ ایوریج کراس اوور کو کھولنے اور بند کرنے کی مقداری تجارتی حکمت عملی

MA ADX SMMA EMA DEMA TEMA WMA VWMA HullMA LSMA ALMA SSMA TMA ATR
تخلیق کی تاریخ: 2025-02-18 13:35:54 آخر میں ترمیم کریں: 2025-02-18 13:35:54
کاپی: 1 کلکس کی تعداد: 445
1
پر توجہ دیں
1617
پیروکار

ADX ڈائنامک انڈیکیٹر کے ساتھ مل کر موونگ ایوریج کراس اوور کو کھولنے اور بند کرنے کی مقداری تجارتی حکمت عملی

جائزہ

یہ ایک متحرک اوسط لکیری کراسنگ ہے جو کھلی قیمت اور بند قیمت پر مبنی ہے ، اور اوسط رجحان اشارے ((ADX) کے ساتھ مل کر فلٹر کے طور پر۔ یہ حکمت عملی متعدد متحرک اوسط لکیری کی اقسام کو اپناتی ہے ، بشمول ایس ایم ایم اے ، ای ایم اے ، ڈی ای ایم اے ، وغیرہ ، مارکیٹ کے رجحان میں تبدیلی کو پکڑنے کے لئے مساوی لکیری کراسنگ کی شناخت کرتے ہیں ، جبکہ رجحان کی طاقت کی تصدیق کے لئے ADX اشارے کا استعمال کرتے ہیں ، جس سے تجارت کی وشوسنییتا میں اضافہ ہوتا ہے۔

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

اس حکمت عملی کی بنیادی منطق یہ ہے کہ کھلی قیمت اور بند قیمت کی ایک متحرک اوسط کا حساب لگایا جائے ، جب بند قیمت کی اوسط اوپر کی طرف سے کھولی گئی قیمت کی اوسط کو عبور کرتی ہے اور ADX کی قیمت طے شدہ حد سے زیادہ ہوتی ہے تو ، ایک کثیر سگنل پیدا ہوتا ہے۔ جب بند قیمت کی اوسط نیچے کی طرف سے کھولی گئی قیمت کی اوسط کو عبور کرتی ہے اور ADX کی قیمت طے شدہ حد سے زیادہ ہوتی ہے تو ، ایک خالی سگنل پیدا ہوتا ہے۔ حکمت عملی میں متعدد متحرک اوسط حساب کتاب کی حمایت کی جاتی ہے ، بشمول سادہ متحرک اوسط ((SMA) ، اشاریہ متحرک اوسط ((EMA)) ، ڈبل اشاریہ متحرک اوسط ((EMA)) ، وغیرہ۔

اسٹریٹجک فوائد

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

اسٹریٹجک رسک

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

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

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

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2024-02-18 00:00:00
end: 2025-02-16 08:00:00
period: 3d
basePeriod: 3d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © algostudio

//@version=6
strategy("Open Close Cross Strategy R5.1", shorttitle="OCC Strategy R5.1", overlay=true,
     pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=10, calc_on_every_tick=false)

// === INPUTS ===
useRes      = input.bool(true, title="Use Alternate Resolution?")
intRes      = input.int(3, title="Multiplier for Alternate Resolution", minval=1)
stratRes    = timeframe.ismonthly ? str.tostring(timeframe.multiplier * intRes) + "M" :
              timeframe.isweekly ? str.tostring(timeframe.multiplier * intRes) + "W" :
              timeframe.isdaily ? str.tostring(timeframe.multiplier * intRes) + "D" :
              timeframe.isintraday ? str.tostring(timeframe.multiplier * intRes) : "60"

basisType   = input.string("SMMA", title="MA Type:", options=["SMA", "EMA", "DEMA", "TEMA", "WMA", "VWMA", "SMMA", "HullMA", "LSMA", "ALMA", "SSMA", "TMA"])
basisLen    = input.int(8, title="MA Period", minval=1)
offsetSigma = input.int(6, title="Offset for LSMA / Sigma for ALMA", minval=0)
offsetALMA  = input.float(0.85, title="Offset for ALMA", minval=0, step=0.01)
scolor      = input.bool(false, title="Show Colored Bars to Indicate Trend?")
delayOffset = input.int(0, title="Delay Open/Close MA (Forces Non-Repainting)", minval=0, step=1)
tradeType   = input.string("BOTH", title="What trades should be taken:", options=["LONG", "SHORT", "BOTH", "NONE"])

// === BASE FUNCTIONS ===
variant(type, src, len, offSig, offALMA) =>
    if type == "EMA"
        ta.ema(src, len)
    else if type == "DEMA"
        ta.ema(ta.ema(src, len), len) * 2 - ta.ema(ta.ema(ta.ema(src, len), len), len)
    else if type == "TEMA"
        3 * (ta.ema(src, len) - ta.ema(ta.ema(src, len), len)) + ta.ema(ta.ema(ta.ema(src, len), len), len)
    else if type == "WMA"
        ta.wma(src, len)
    else if type == "VWMA"
        ta.vwma(src, len)
    else if type == "SMMA"
        ta.sma(src, len)
    else if type == "HullMA"
        ta.wma(2 * ta.wma(src, len / 2) - ta.wma(src, len), math.round(math.sqrt(len)))
    else if type == "LSMA"
        ta.linreg(src, len, offSig)
    else if type == "ALMA"
        ta.alma(src, len, offALMA, offSig)
    else if type == "TMA"
        ta.sma(ta.sma(src, len), len)
    else
        ta.sma(src, len)

// Security wrapper
reso(exp, use, res) => use ? request.security(syminfo.tickerid, res, exp, lookahead=barmerge.lookahead_on) : exp

// === SERIES SETUP ===
closeSeries = variant(basisType, close[delayOffset], basisLen, offsetSigma, offsetALMA)
openSeries  = variant(basisType, open[delayOffset], basisLen, offsetSigma, offsetALMA)

// Alternate resolution series
closeSeriesAlt = reso(closeSeries, useRes, stratRes)
openSeriesAlt  = reso(openSeries, useRes, stratRes)

// Trend Colors
trendColour = closeSeriesAlt > openSeriesAlt ? color.green : color.red
bcolour     = closeSeries > openSeriesAlt ? color.lime : color.red
barcolor(scolor ? bcolour : na, title="Bar Colours")

closeP = plot(closeSeriesAlt, title="Close Series", color=trendColour, linewidth=2, style=plot.style_line)
openP  = plot(openSeriesAlt, title="Open Series", color=trendColour, linewidth=2, style=plot.style_line)
fill(closeP, openP, color=trendColour)
// === ADX FILTER ===
// ADX Calculation
// Input parameters
adxLength = input.int(14, title="ADX Length", minval=1)
adxfilter = input.int(13, title="ADX filter", minval=1)
// Calculate +DM and -DM (Directional Movement)
plusDM = math.max(high - high[1], 0)
minusDM = math.max(low[1] - low, 0)

// Remove cases where both are positive
plusDM := plusDM > minusDM ? plusDM : 0
minusDM := minusDM > plusDM ? minusDM : 0

// Smooth the directional movement using RMA
smoothedPlusDM = ta.rma(plusDM, adxLength)
smoothedMinusDM = ta.rma(minusDM, adxLength)

// Calculate True Range and smooth it
tr = ta.atr(adxLength)
smoothedTR = ta.rma(tr, adxLength)

// Compute +DI and -DI
plusDI = (smoothedPlusDM / smoothedTR) * 100
minusDI = (smoothedMinusDM / smoothedTR) * 100

// Compute DX (Directional Index)
dx = math.abs(plusDI - minusDI) / (plusDI + minusDI) * 100

// Compute ADX by smoothing DX
adx = ta.rma(dx, adxLength)




// === UPDATED TRADE CONDITIONS ===
xlong     = ta.crossover(closeSeriesAlt, openSeriesAlt) and adx > adxfilter
xshort    = ta.crossunder(closeSeriesAlt, openSeriesAlt) and adx > adxfilter
longCond  = xlong
shortCond = xshort


// === STRATEGY ===
slPoints  = input.float(0, title="Initial Stop Loss Points", minval=0)
tpPoints  = input.float(0, title="Initial Target Profit Points", minval=0)
ebar      = input.int(10000, title="Number of Bars for Back Testing", minval=0)

tdays     = (timenow - time) / 60000.0

tdays     := timeframe.ismonthly ? tdays / 1440.0 / 5.0 / 4.3 / timeframe.multiplier :
             timeframe.isweekly ? tdays / 1440.0 / 5.0 / timeframe.multiplier :
             timeframe.isdaily ? tdays / 1440.0 / timeframe.multiplier :
             tdays / timeframe.multiplier

TP = tpPoints > 0 ? tpPoints : na
SL = slPoints > 0 ? slPoints : na

if (ebar == 0 or tdays <= ebar)
    if longCond and tradeType != "SHORT"
        strategy.entry("long", strategy.long)
    if shortCond and tradeType != "LONG"
        strategy.entry("short", strategy.short)
    if shortCond and tradeType == "LONG"
        strategy.close("long")
    if longCond and tradeType == "SHORT"
        strategy.close("short")
    strategy.exit("XL", from_entry="long", profit=TP, loss=SL)
    strategy.exit("XS", from_entry="short", profit=TP, loss=SL)

// === END ===