متحرک رینج فلٹر کے ساتھ مل کر اعلی درجے کی مقداری رجحان کی گرفتاری کی حکمت عملی

EMA MA RF VOL SMA HA
تخلیق کی تاریخ: 2024-12-17 14:31:11 آخر میں ترمیم کریں: 2024-12-17 14:31:11
کاپی: 4 کلکس کی تعداد: 420
1
پر توجہ دیں
1617
پیروکار

متحرک رینج فلٹر کے ساتھ مل کر اعلی درجے کی مقداری رجحان کی گرفتاری کی حکمت عملی

جائزہ

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

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

اس حکمت عملی کا بنیادی منطق مندرجہ ذیل کلیدی حسابات پر مبنی ہے:

  1. لیکویڈیٹی تجزیہ: مارکیٹ کی لیکویڈیٹی کا اندازہ لگانے کے لئے لیکویڈیٹی کی حد مقرر کرنے کے لئے لیکویڈیٹی کی مقدار اور قیمت میں تبدیلی کے تناسب کا حساب لگائیں۔
  2. رجحان کی تصدیق: رجحان کی سمت کی تصدیق کرنے کے لئے 50 اور 100 دوروں کی اشاریہ حرکت پذیری اوسط ((EMA) کا استعمال کریں۔
  3. رینج فلٹرنگ: 50 سائیکل نمونہ سائیکل اور 3 گنا رینج ضرب استعمال کرتے ہوئے متحرک ٹریڈنگ زون کی تعمیر کریں۔
  4. سگنل جنریشن: جب قیمت رینج فلٹر کو توڑ دیتی ہے اور ای ایم اے اشارے رجحان کے مطابق دکھاتے ہیں تو ، تجارتی سگنل پیدا ہوتا ہے۔

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

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

اسٹریٹجک رسک

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

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

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

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-15 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Killer Coin V2 + Range Filter Strategy", shorttitle="KC-RF Strategy", overlay=true
         )

// === INPUT BACKTEST RANGE ===
useDate = input(true, title='---------------- Use Date ----------------', group="Backtest Settings")
FromMonth = input.int(7, title="From Month", minval=1, maxval=12, group="Backtest Settings")
FromDay = input.int(25, title="From Day", minval=1, maxval=31, group="Backtest Settings")
FromYear = input.int(2019, title="From Year", minval=2017, group="Backtest Settings")
ToMonth = input.int(1, title="To Month", minval=1, maxval=12, group="Backtest Settings")
ToDay = input.int(1, title="To Day", minval=1, maxval=31, group="Backtest Settings")
ToYear = input.int(9999, title="To Year", minval=2017, group="Backtest Settings")
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)
window() => time >= start and time <= finish

// === KILLER COIN V2 INPUTS ===
outlierThreshold = input.int(10, "Outlier Threshold Length", group="Killer Coin Settings")
fastMovingAverageLength = input.int(50, "Fast MA length", group="Killer Coin Settings")
slowMovingAverageLength = input.int(100, "Slow MA length", group="Killer Coin Settings")

// === RANGE FILTER INPUTS ===
sources = input(close, "Source", group="Range Filter Settings")
isHA = input(false, "Use HA Candles", group="Range Filter Settings")
per = input.int(50, "Sampling Period", minval=1, group="Range Filter Settings")
mult = input.float(3.0, "Range Multiplier", minval=0.1, group="Range Filter Settings")

// === KILLER COIN V2 CALCULATIONS ===
priceMovementLiquidity = volume / math.abs(close - open)
liquidityBoundary = ta.ema(priceMovementLiquidity, outlierThreshold) + ta.stdev(priceMovementLiquidity, outlierThreshold)
var liquidityValues = array.new_float(5)

if ta.crossover(priceMovementLiquidity, liquidityBoundary)
    array.insert(liquidityValues, 0, close)

fastEMA = ta.ema(array.get(liquidityValues, 0), fastMovingAverageLength)
slowEMA = ta.ema(array.get(liquidityValues, 0), slowMovingAverageLength)

// === RANGE FILTER CALCULATIONS ===
src = isHA ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, sources) : sources

// Smooth Average Range
smoothrng(x, t, m) =>
    wper = (t*2) - 1
    avrng = ta.ema(math.abs(x - x[1]), t)
    smoothrng = ta.ema(avrng, wper)*m
    smoothrng

smrng = smoothrng(src, per, mult)

// Range Filter
rngfilt(x, r) =>
    rngfilt = x
    rngfilt := x > nz(rngfilt[1]) ? ((x - r) < nz(rngfilt[1]) ? nz(rngfilt[1]) : (x - r)) : ((x + r) > nz(rngfilt[1]) ? nz(rngfilt[1]) : (x + r))
    rngfilt

filt = rngfilt(src, smrng)

// Filter Direction
upward = 0.0
upward := filt > filt[1] ? nz(upward[1]) + 1 : filt < filt[1] ? 0 : nz(upward[1])
downward = 0.0
downward := filt < filt[1] ? nz(downward[1]) + 1 : filt > filt[1] ? 0 : nz(downward[1])

// Target Bands
hband = filt + smrng
lband = filt - smrng

// === PLOTTING ===
// Killer Coin V2 Plots
bullColor = color.new(#00ffbb, 50)
bearColor = color.new(#800080, 50)
fastPlot = plot(fastEMA, "Fast EMA", color = fastEMA > slowEMA ? bullColor : bearColor)
slowPlot = plot(slowEMA, "Slow EMA", color = fastEMA > slowEMA ? bullColor : bearColor)
fill(fastPlot, slowPlot, color = fastEMA > slowEMA ? bullColor : bearColor)

// Range Filter Plots
filtcolor = upward > 0 ? color.new(color.lime, 0) : downward > 0 ? color.new(color.red, 0) : color.new(color.orange, 0)
filtplot = plot(filt, "Range Filter", color=filtcolor, linewidth=3)
hbandplot = plot(hband, "High Target", color=color.new(color.aqua, 90))
lbandplot = plot(lband, "Low Target", color=color.new(color.fuchsia, 90))
fill(hbandplot, filtplot, color=color.new(color.aqua, 90))
fill(lbandplot, filtplot, color=color.new(color.fuchsia, 90))

// === STRATEGY CONDITIONS ===
// Range Filter Conditions
longCond = ((src > filt) and (src > src[1]) and (upward > 0)) or ((src > filt) and (src < src[1]) and (upward > 0))
shortCond = ((src < filt) and (src < src[1]) and (downward > 0)) or ((src < filt) and (src > src[1]) and (downward > 0))

CondIni = 0
CondIni := longCond ? 1 : shortCond ? -1 : CondIni[1]
longCondition = longCond and CondIni[1] == -1
shortCondition = shortCond and CondIni[1] == 1

// Combined Conditions
finalLongSignal = longCondition and fastEMA > slowEMA and window()
finalShortSignal = shortCondition and fastEMA < slowEMA and window()

// === PLOTTING SIGNALS ===
plotshape(finalLongSignal, "Buy Signal", text="BUY", textcolor=color.white, 
         style=shape.labelup, size=size.normal, location=location.belowbar, 
         color=color.new(color.green, 0))
         
plotshape(finalShortSignal, "Sell Signal", text="SELL", textcolor=color.white, 
         style=shape.labeldown, size=size.normal, location=location.abovebar, 
         color=color.new(color.red, 0))

// === STRATEGY ENTRIES ===
if finalLongSignal
    strategy.entry("Long", strategy.long, stop=hband)
    
if finalShortSignal
    strategy.entry("Short", strategy.short, stop=lband)

// === ALERTS ===
alertcondition(finalLongSignal, "Strong Buy Signal", "🚨 Buy - Both Indicators Aligned!")
alertcondition(finalShortSignal, "Strong Sell Signal", "🚨 Sell - Both Indicators Aligned!")