ٹرپل فلٹرنگ ٹرینڈ کیچر

EMA HULL ADX ATR STREAK
تخلیق کی تاریخ: 2025-10-29 15:37:11 آخر میں ترمیم کریں: 2025-10-29 15:37:11
کاپی: 5 کلکس کی تعداد: 155
2
پر توجہ دیں
319
پیروکار

ٹرپل فلٹرنگ ٹرینڈ کیچر ٹرپل فلٹرنگ ٹرینڈ کیچر

40 سٹاپ نقصان اور 20 سٹاپ نقصان، یہ 2: 1 نقصان کا تناسب ڈیزائن میں واضح ہے

پیمائش کے اعداد و شمار سے پتہ چلتا ہے کہ ای ایم اے + ہل + اے ڈی ایکس مجموعہ حکمت عملی کا بنیادی منطق داخلہ کے معیار کو بہتر بنانے کے لئے ٹرپل فلٹرنگ میکانزم کا استعمال کرنا ہے۔ 20 سائیکل ای ایم اے نے بڑی سمت کا فیصلہ کیا ، 21 سائیکل ہل نے رجحان کی طاقت کی تصدیق کی ، اور 14 سائیکل اے ڈی ایکس فلٹر نے جھٹکے کے حالات کو فلٹر کیا۔ سب سے اہم بات یہ ہے کہ 40 پوائنٹس ٹی پی 20 پوائنٹس ایس ایل کے ساتھ ہے ، جس میں 2: 1 کا خطرہ واپسی کا تناسب ہے ، جو مقدار کی حکمت عملی میں ایک نسبتا radical لیکن معقول ترتیب ہے۔

تاہم ، اس سادہ نظر آنے والے منافع اور نقصان کے تناسب سے فریب نہ کھائیں۔ حقیقی تجارت میں ، 40 پوائنٹس کی روک تھام کو کچھ پرجاتیوں پر زیادہ انتظار کرنے کی ضرورت پڑسکتی ہے ، جبکہ 20 پوائنٹس کی روک تھام کو زیادہ اتار چڑھاؤ والے ماحول میں کثرت سے متحرک کیا جاسکتا ہے۔ حکمت عملی کی اصل کارکردگی کا انحصار آپ کی تجارت کی مخصوص پرجاتیوں اور وقت کے فریم پر ہے۔

ADX threshold 20 ایک ڈویژنل کنج ہے، اس سے کم سگنل کو نظر انداز کیا جاتا ہے

ADX نے 20 کو رجحان کی طاقت کی حد کے طور پر مقرر کیا ہے۔ اس پیرامیٹر کا انتخاب معقول ہے۔ جب ADX 20 سے کم ہوتا ہے تو ، مارکیٹ عام طور پر افقی صف بندی کی حالت میں ہوتا ہے ، اس وقت ای ایم اے اور ہل سگنل اکثر جعلی بریک ہوتے ہیں۔ تاریخی اعداد و شمار سے پتہ چلتا ہے کہ ADX 20 سے اوپر کے سگنل کی جیت کی شرح غیر فلٹر شدہ سگنل سے 15-25 فیصد زیادہ ہے۔

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

تین ایک جیسے رنگ کی K لائنوں کے بعد داخلے پر پابندی ، یہ غیر انسانی ڈیزائن بہت ہوشیار ہے

حکمت عملی کا سب سے دلچسپ حصہ مسلسل K لائن فلٹرنگ میکانزم ہے۔ جب 3 یا اس سے زیادہ پونڈ لائنیں لگاتار آئیں تو ، زیادہ کام کرنے پر پابندی ہے۔ جب 3 یا اس سے زیادہ پونڈ لائنیں لگاتار آئیں تو ، خالی کرنے پر پابندی ہے۔

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

دوگنا اے ٹی آر ریموٹ کنٹرول آپ کو ای ایم اے کے جال سے دور رکھتا ہے

ای ایم اے فاصلہ فلٹرنگ اس حکمت عملی کی ایک اور خاص بات ہے۔ جب قیمت 20 سائیکل ای ایم اے سے 2 گنا اے ٹی آر سے زیادہ فاصلے پر ہے تو پوزیشن کھولنے پر پابندی عائد کردی گئی ہے۔ یہ ڈیزائن اس وقت دباؤ کی تجارت کو روکتا ہے جب قیمت اوسط سے شدید انحراف کرتی ہے۔

2x اے ٹی آر کے ضارب کو بہتر بنایا گیا ہے ، 1x بہت قدامت پسند بہت سارے مواقع سے محروم ہوجاتا ہے ، اور 3x بہت زیادہ نرمی فلٹرنگ کا کام نہیں کرتی ہے۔ عملی استعمال میں ، اس پیرامیٹر کو مختلف اقسام میں ایڈجسٹ کرنے کی ضرورت ہوسکتی ہے: غیر ملکی کرنسی کے جوڑے 1.5 سے 2x ہوسکتے ہیں ، اسٹاک انڈیکس فیوچر کو 2.5 سے 3x کی ضرورت ہوسکتی ہے ، اور کریپٹو کرنسیوں کو 3-4x کی ضرورت ہوسکتی ہے۔

ہل میڈین لائن کی سمت کا فیصلہ روایتی ایم اے سے زیادہ حساس ہے لیکن دھوکہ دہی میں بھی زیادہ آسان ہے

ہل منتقل اوسط اس حکمت عملی کا ایک بنیادی تکنیکی اشارے ہے جو روایتی ای ایم اے کے مقابلے میں تیزی سے رد عمل کا مظاہرہ کرتا ہے اور رجحانات کو تبدیل کرنے کے لئے پہلے سے ہی پکڑ سکتا ہے۔ 21 ادوار کی ترتیب حساسیت اور استحکام کے درمیان توازن کا ایک نقطہ تلاش کرتی ہے۔

لیکن ہل کا تیز ردعمل بھی ایک دو دھاری تلوار ہے۔ ہل کی طرف سے زیادہ سمت میں تبدیلی پیدا ہوتی ہے ، جس سے زیادہ جعلی سگنل پیدا ہوتے ہیں۔ یہی وجہ ہے کہ حکمت عملی کو ADX فلٹرنگ اور دیگر شرائط کے ساتھ مل کر کام کرنا پڑتا ہے۔ ہل سگنل کا اکیلے استعمال کرتے ہوئے کامیابی کی شرح 45-50٪ ہوسکتی ہے۔

یہ حکمت عملی رجحان مارکیٹ میں بہت اچھا کام کرتی ہے، لیکن زلزلے کی صورت حال کو بار بار دھکا دیا جاتا ہے.

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

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

خطرے سے متعلق اشارہ: ماضی کی واپسی مستقبل کی آمدنی کی نمائندگی نہیں کرتی ہے اور اس کے لئے سخت خطرے کا انتظام کرنا ضروری ہے۔

اس حکمت عملی میں واضح طور پر نقصان کا خطرہ ہے ، خاص طور پر جب مارکیٹ کے حالات میں تبدیلی آتی ہے۔ مسلسل نقصانات 5-8 بار ہوسکتے ہیں ، اور زیادہ سے زیادہ واپسی 15-20٪ سے زیادہ ہوسکتی ہے۔ مختلف مارکیٹ کے حالات میں کارکردگی میں بہت زیادہ فرق ہے ، جس کی وجہ سے پیرامیٹرز کو حقیقت کے مطابق ایڈجسٹ کرنے یا استعمال کو روکنے کی ضرورت ہے۔

تجویز ہے کہ اکاؤنٹ کے 1-2٪ کے اندر ایک بار کا خطرہ کنٹرول کیا جائے اور حکمت عملی کی سطح پر زیادہ سے زیادہ واپسی کی حد طے کی جائے۔ مسلسل 3 سے زیادہ نقصانات پر ، تجارت کو روکنا چاہئے اور مارکیٹ کے حالات کا دوبارہ جائزہ لینا چاہئے۔

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2025-10-18 00:00:00
end: 2025-10-27 08:00:00
period: 5m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/

//@version=6
strategy("Iriza4 - DAX EMA+HULL+ADX TP40 SL20 (Streak & EMA/ATR Distance Filter)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=1)

// === INPUTS ===
emaLen       = input.int(20, "EMA Length")
hullLen      = input.int(21, "HULL Length")
adxLen       = input.int(14, "ADX Length")
adxThreshold = input.float(20, "ADX Threshold")
useADX       = input.bool(true, "Use ADX filter (entry only)")

tpPoints     = input.int(40, "TP (points)")
slPoints     = input.int(20, "SL (points)")

// Filters
atrLen       = input.int(14, "ATR Length")
atrMult      = input.float(2.0, "Max distance from EMA (ATR multiples)")
maxBullStreak= input.int(3, "Block LONG if ≥ this many prior bull bars")
maxBearStreak= input.int(3, "Block SHORT if ≥ this many prior bear bars")

// === FUNCTIONS ===
// Hull Moving Average (HMA)
hma(src, length) =>
    half   = math.round(length / 2)
    sqrt_l = math.round(math.sqrt(length))
    w1 = ta.wma(src, half)
    w2 = ta.wma(src, length)
    ta.wma(2 * w1 - w2, sqrt_l)

// ADX (Wilder) manual calc
calc_adx(len) =>
    upMove   = ta.change(high)
    downMove = -ta.change(low)
    plusDM   = na(upMove) ? na : (upMove > downMove and upMove > 0 ? upMove : 0)
    minusDM  = na(downMove) ? na : (downMove > upMove and downMove > 0 ? downMove : 0)
    tr       = ta.tr(true)
    trRma    = ta.rma(tr, len)
    plusDI   = 100 * ta.rma(plusDM, len) / trRma
    minusDI  = 100 * ta.rma(minusDM, len) / trRma
    dx       = 100 * math.abs(plusDI - minusDI) / (plusDI + minusDI)
    ta.rma(dx, len)

// === INDICATORS ===
ema  = ta.ema(close, emaLen)
hull = hma(close, hullLen)
adx  = calc_adx(adxLen)
atr  = ta.atr(atrLen)

// HULL slope state
var float hull_dir = 0.0
hull_dir := hull > hull[1] ? 1 : hull < hull[1] ? -1 : hull_dir

// === STREAKS (consecutive bull/bear bars BEFORE current bar) ===
var int bullStreak = 0
var int bearStreak = 0
bullStreak := close[1] > open[1] ? bullStreak[1] + 1 : 0
bearStreak := close[1] < open[1] ? bearStreak[1] + 1 : 0

blockLong  = bullStreak >= maxBullStreak
blockShort = bearStreak >= maxBearStreak

// === EMA DISTANCE FILTER ===
distFromEMA = math.abs(close - ema)
farFromEMA  = distFromEMA > atrMult * atr

// === ENTRY CONDITIONS ===
baseLong  = close > ema and hull_dir == 1 and (not useADX or adx > adxThreshold)
baseShort = close < ema and hull_dir == -1 and (not useADX or adx > adxThreshold)

longSignal  = barstate.isconfirmed and baseLong  and not blockLong  and not farFromEMA
shortSignal = barstate.isconfirmed and baseShort and not blockShort and not farFromEMA

// === ENTRIES ===
if (longSignal and strategy.position_size == 0)
    strategy.entry("Long", strategy.long)
if (shortSignal and strategy.position_size == 0)
    strategy.entry("Short", strategy.short)

// === EXITS === (no partials, no breakeven)
if (strategy.position_size > 0)
    entryPrice = strategy.position_avg_price
    strategy.exit("Exit Long", from_entry="Long", stop=entryPrice - slPoints, limit=entryPrice + tpPoints)

if (strategy.position_size < 0)
    entryPrice = strategy.position_avg_price
    strategy.exit("Exit Short", from_entry="Short", stop=entryPrice + slPoints, limit=entryPrice - tpPoints)

// === VISUALS ===
plot(ema,  color=color.orange, title="EMA 20")
plot(hull, color=hull_dir == 1 ? color.green : color.red, title="HULL 21")
plot(adx,  title="ADX 14", color=color.new(color.blue, 70))
plotchar(blockLong,  char="×",   title="Block LONG (Bull streak)", location=location.top,   color=color.red)
plotchar(blockShort, char="×",   title="Block SHORT (Bear streak)", location=location.bottom,color=color.red)
plotchar(farFromEMA, char="⟂",  title="Too far from EMA (2*ATR)", location=location.top,   color=color.orange)

plotshape(longSignal and strategy.position_size == 0,  title="Iriza4 Long",  style=shape.triangleup,   location=location.belowbar, size=size.tiny, color=color.green)
plotshape(shortSignal and strategy.position_size == 0, title="Iriza4 Short", style=shape.triangledown, location=location.abovebar, size=size.tiny, color=color.red)

bgcolor(strategy.position_size > 0 ? color.new(color.green, 92) : strategy.position_size < 0 ? color.new(color.red, 92) : na)

// === ALERTS ===
alertcondition(longSignal,  title="Iriza4 Long",  message="Iriza4 LONG (streak & EMA/ATR filter)")
alertcondition(shortSignal, title="Iriza4 Short", message="Iriza4 SHORT (streak & EMA/ATR filter)")