سونے اور چاندی کی ثالثی کی حکمت عملی


تخلیق کی تاریخ: 2026-03-12 11:50:47 آخر میں ترمیم کریں: 2026-03-12 11:50:47
کاپی: 0 کلکس کی تعداد: 22
2
پر توجہ دیں
413
پیروکار

سونے اور چاندی کی ثالثی کی حکمت عملی سونے اور چاندی کی ثالثی کی حکمت عملی

ZSCORE, RSI, ATR, SMA, EMA

Z-Score Statistical Arbitrage: سونے اور چاندی کی قیمتوں کا ریاضی کا کھیل

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

20 سائیکل معیاری تناسب: روایتی ارتباط تجزیہ سے زیادہ درست

اس حکمت عملی کا بنیادی مقصد معیاری قیمت تناسب ماڈل کی تعمیر کرنا ہے۔ XAG اور XAU کو 20 سائیکل SMA کے ذریعہ معیاری بنائیں ، پھر تناسب کا حساب لگائیں اور 3 سائیکل EMA کے ساتھ ہموار کریں۔ یہ طریقہ کار سادہ قیمت تناسب سے زیادہ مستحکم ہے ، جو مختصر مدت کے شور کو مؤثر طریقے سے فلٹر کرتا ہے۔ جب معیاری تناسب کا Z-Score ± 2 کی حد سے تجاوز کرتا ہے ، جس سے ظاہر ہوتا ہے کہ موجودہ قیمت تاریخی اوسط سے 2 معیاری سے زیادہ ہے ، تو یہ اعدادوشمار کے لحاظ سے ایک چھوٹا امکان واقعہ ہے ، جس میں اوسط کی واپسی کے لئے موقع فراہم کیا گیا ہے۔

RSI فلٹرز: 50 ڈفریجریٹرز کا ہوشیار استعمال

روایتی آر ایس آئی اوور خرید اوور فروخت سگنل کے برعکس ، آر ایس آئی = 50 کو ایک فاریکس فلٹرنگ شرط کے طور پر استعمال کیا جاتا ہے۔ آر ایس آئی <50 کے ساتھ زیادہ کرنے کی اجازت ہے ، آر ایس آئی> 50 کے ساتھ خالی کرنے کی اجازت ہے۔ اس ڈیزائن کی منطق واضح ہے: جب نسبتا weak کمزوری ہو تو خریدیں اور ردوبدل کا انتظار کریں ، جب نسبتا strong مضبوط ہو تو بیچیں اور ریڈیکشن کا انتظار کریں۔ اس فلٹرنگ میکانزم نے مخالف تجارت کے خطرے کو مؤثر طریقے سے کم کیا ہے ، سگنل کے معیار کو بہتر بنایا ہے۔

3:8 اے ٹی آر رسک کمائی کا تناسب: ریاضی کی توقع مثبت ہے

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

قابل اطلاق منظرنامہ: رجحان مارکیٹ کے مقابلے میں ہلچل مارکیٹ

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

خطرے سے متعلق اشارے: شماریاتی ماڈل کی حدود

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

حکمت عملی کا ماخذ کوڈ
//@version=6
strategy("Stat Arb(xag & xau)")

// ══════════════════════════════════════════════════════════════
// BENCHMARK DATA
// ══════════════════════════════════════════════════════════════
float benchClose = request.security("XAG_USDT.swap", timeframe.period, close)

// ══════════════════════════════════════════════════════════════
// HELPER FUNCTIONS
// ══════════════════════════════════════════════════════════════
f_cov(float src1, float src2, int len) =>
    ta.sma(src1 * src2, len) - ta.sma(src1, len) * ta.sma(src2, len)

f_var(float src, int len) =>
    ta.sma(src * src, len) - math.pow(ta.sma(src, len), 2)

// ══════════════════════════════════════════════════════════════
// SPREAD ENGINE — NORMALIZED RATIO
// ══════════════════════════════════════════════════════════════
int lookback = 20

float pairSma   = ta.sma(close,      lookback)
float benchSma  = ta.sma(benchClose, lookback)
float pairNorm  = pairSma  != 0 ? close      / pairSma  * 100.0 : 100.0
float benchNorm = benchSma != 0 ? benchClose / benchSma * 100.0 : 100.0
float modelRaw  = benchNorm != 0 ? pairNorm / benchNorm : 1.0
float model     = ta.ema(modelRaw, 3)

float zMean  = ta.sma(model, lookback)
float zStd   = ta.stdev(model, lookback)
float zScore = zStd != 0 ? (model - zMean) / zStd : 0.0

// ══════════════════════════════════════════════════════════════
// RSI FILTER — BELOW / ABOVE 50
// ══════════════════════════════════════════════════════════════
float rsiVal    = ta.rsi(close, 14)
bool  rsiLongOk  = rsiVal < 50.0
bool  rsiShortOk = rsiVal > 50.0

// ══════════════════════════════════════════════════════════════
// ENTRY SIGNALS
// Z crosses below -2 = long, above +2 = short
// ══════════════════════════════════════════════════════════════
bool enterLong  = ta.crossunder(zScore, -2.0) and rsiLongOk
bool enterShort = ta.crossover(zScore,   2.0) and rsiShortOk

// ══════════════════════════════════════════════════════════════
// ATR STOP + TAKE PROFIT
// Stop:  8x ATR from entry (hardcoded)
// TP:    3x ATR from entry (hardcoded), stamped at entry
// ══════════════════════════════════════════════════════════════
float atrVal = ta.atr(14)

var float tpLevel   = na
var float slLevel   = na
var float entryPrice = na

bool isNewEntry = strategy.position_size != 0 and strategy.position_size[1] == 0
if isNewEntry
    entryPrice := strategy.position_avg_price
    if strategy.position_size > 0
        tpLevel := entryPrice + atrVal * 3.0
        slLevel := entryPrice - atrVal * 8.0
    else
        tpLevel := entryPrice - atrVal * 3.0
        slLevel := entryPrice + atrVal * 8.0

if strategy.position_size == 0
    tpLevel    := na
    slLevel    := na
    entryPrice := na

// ══════════════════════════════════════════════════════════════
// EXIT CONDITIONS — high/low for intrabar touch
// ══════════════════════════════════════════════════════════════
bool tpHitLong  = strategy.position_size > 0 and not na(tpLevel) and high >= tpLevel
bool tpHitShort = strategy.position_size < 0 and not na(tpLevel) and low  <= tpLevel
bool slHitLong  = strategy.position_size > 0 and not na(slLevel) and low  <  slLevel
bool slHitShort = strategy.position_size < 0 and not na(slLevel) and high >  slLevel

// ══════════════════════════════════════════════════════════════
// EXECUTION
// ══════════════════════════════════════════════════════════════
if enterLong
    strategy.close("Short", comment="Flip")
    strategy.entry("Long",  strategy.long)
if enterShort
    strategy.close("Long",  comment="Flip")
    strategy.entry("Short", strategy.short)

if tpHitLong
    strategy.close("Long",  comment="TP")
if tpHitShort
    strategy.close("Short", comment="TP")
if slHitLong
    strategy.close("Long",  comment="SL")
if slHitShort
    strategy.close("Short", comment="SL")

// ══════════════════════════════════════════════════════════════
// VISUALS
// ══════════════════════════════════════════════════════════════
hline( 2.0, "+2",  color=color.new(color.red,  20), linestyle=hline.style_dashed)
hline(-2.0, "-2",  color=color.new(color.teal, 20), linestyle=hline.style_dashed)
hline( 0.0, "Mid", color=color.gray,                linestyle=hline.style_solid)

color zCol = zScore >= 0 ? color.new(color.red, 10) : color.new(color.teal, 10)
plot(zScore, title="Z Score", color=zCol, linewidth=3)

bgcolor(zScore >  2.0 ? color.new(color.red,  90) : na, title="Overbought Zone")
bgcolor(zScore < -2.0 ? color.new(color.teal, 90) : na, title="Oversold Zone")
bgcolor(strategy.position_size > 0 ? color.new(color.teal, 93) : na, title="In Long")
bgcolor(strategy.position_size < 0 ? color.new(color.red,  93) : na, title="In Short")

plotshape(enterLong,  style=shape.triangleup,   location=location.bottom, color=color.teal, size=size.small)
plotshape(enterShort, style=shape.triangledown, location=location.top,    color=color.red,  size=size.small)
plotshape(tpHitLong or tpHitShort, style=shape.flag,   location=location.top, color=color.yellow, size=size.tiny, text="TP")
plotshape(slHitLong or slHitShort, style=shape.xcross, location=location.top, color=color.orange, size=size.tiny, text="SL")