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

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

مصنف:چاؤ ژانگ، تاریخ: 2024-12-17 14:31:11
ٹیگز:ای ایم اےایم اےآر ایفVOLایس ایم اےہا

img

جائزہ

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

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

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

  1. لیکویڈیٹی تجزیہ: مارکیٹ کی لیکویڈیٹی کا اندازہ لگانے کے لئے حجم اور قیمت کی نقل و حرکت کے تناسب کا حساب لگایا جاتا ہے اور متحرک لیکویڈیٹی کی حدود مقرر کی جاتی ہیں۔
  2. رجحان کی تصدیق: رجحان کی سمت کی تصدیق کے لئے 50 اور 100 پیریڈ کے ایکسپونینشل موونگ اوسط (ای ایم اے) کا استعمال کرتا ہے۔
  3. رینج فلٹرنگ: متحرک ٹریڈنگ رینجز کی تعمیر کے لئے 50 پیریڈ سیمپلنگ پیریڈ اور 3x رینج ضرب کا استعمال کرتا ہے۔
  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!")

متعلقہ

مزید