Smoothed Z-Score Crossover پر مبنی Momentum Optimized Price Statistics Trading Strategy

Z-SCORE SMA stdev PNL Momentum Filter
تخلیق کی تاریخ: 2025-06-03 10:44:56 آخر میں ترمیم کریں: 2025-06-03 10:44:56
کاپی: 0 کلکس کی تعداد: 330
2
پر توجہ دیں
319
پیروکار

Smoothed Z-Score Crossover پر مبنی Momentum Optimized Price Statistics Trading Strategy Smoothed Z-Score Crossover پر مبنی Momentum Optimized Price Statistics Trading Strategy

جائزہ

یہ حکمت عملی Z اسکور ((Z-Score) کے اعدادوشمار کے تصور پر مبنی ہے ، جس میں قیمتوں کے مقامی اوسط سے متعلق اعدادوشمار کے انحراف کی نشاندہی کی جاتی ہے۔ اس حکمت عملی میں اختتامی قیمتوں کے Z اسکور کا حساب لگایا جاتا ہے ، اور پھر Z اسکور کو ہموار کرنے کے لئے قلیل مدتی اور طویل مدتی منتقل اوسط کا اطلاق کیا جاتا ہے۔ جب قلیل مدتی ہموار Z اسکور کے اوپر طویل مدتی ہموار Z اسکور ہوتا ہے تو کثیر سر داخل ہونے کا اشارہ پیدا ہوتا ہے ، اور جب طویل مدتی ہموار Z اسکور کے نیچے طویل مدتی ہموار Z اسکور ہوتا ہے تو اس کی جگہ کا اشارہ پیدا ہوتا ہے۔ اس حکمت عملی میں شور تجارت کو کم کرنے کے لئے سگنل وقفہ کنٹرول اور متحرک مقدار پر مبنی فلٹر بھی شامل ہیں۔

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

اس حکمت عملی کا مرکز Z اسکور کے حساب کتاب اور اطلاق ہے۔ Z اسکور ایک اعدادوشمار ہے جس کی پیمائش ایک ڈیٹا پوائنٹ کے نمونے کی اوسط سے انحراف کی پیمائش کرنے کے لئے کی جاتی ہے ، معیاری فرق کی اکائیوں میں۔ اس حکمت عملی میں ، Z اسکور کا حساب کتاب کرنے کا فارمولا یہ ہے: Z = (ختم ہونے والی قیمت - SMA ((ختم ہونے والی قیمت ، N)) / STDEV ((ختم ہونے والی قیمت ، N) جہاں N صارف کی طرف سے وضاحت کی بنیادی دورانیہ ہے.

پالیسی پر عملدرآمد کا عمل مندرجہ ذیل ہے:

  1. اختتامی قیمت کا حساب لگانے کے لئے ابتدائی زیڈ اسکور
  2. مختصر مدت کے ہموار ((SMA) اصل Z درجہ بندی پر لاگو ہوتا ہے
  3. پرائمری Z درجہ بندی پر لاگو طویل مدتی ہموار ((SMA)
  4. طویل مدتی ہموار Z کی درجہ بندی پہننے کے لئے مختصر مدت کے ہموار Z کی درجہ بندی پر جب اضافی شرائط پوری ہوجائیں تو زیادہ پوزیشنیں کھولی جائیں
  5. طویل مدتی ہموار Z درجہ بندی کے تحت طویل مدتی ہموار Z درجہ بندی پہننے پر ، اگر اضافی شرائط پوری ہوجائیں تو ہموار پوزیشن

اضافی شرائط میں شامل ہیں:

  • سگنل وقفہ: دو ایک جیسی قسم کے سگنل ((ان پٹ یا آؤٹ پٹ) کے درمیان کم سے کم تعداد میں K لائنوں کا وقفہ ہونا ضروری ہے
  • متحرک فلٹرنگ: جب تین یا اس سے زیادہ لگاتار اوپر کی K لائنیں آئیں تو داخلے پر پابندی ہے۔ جب تین یا اس سے زیادہ نیچے کی K لائنیں لگاتار آئیں تو باہر نکلنے پر پابندی

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

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

اسٹریٹجک رسک

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

حل:

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

اصلاح کی سمت

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

خلاصہ کریں۔

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

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

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

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

//@version=6
strategy("Price Statistical Strategy-Z Score V 1.01", overlay=true)

// === Enable / Disable Z-Score Strategy Block ===
enableZScore = input.bool(true, title="Enable Smoothed Z-Score Strategy", tooltip="When enabled, this block calculates a smoothed Z-Score of the closing price and generates entry/exit signals based on crossover behavior between short-term and long-term smoothed Z-Scores.\n\nRecommended for quick and classic detection of price deviation from mean.\nSensitive to outliers. Best suited for relatively normal-distributed market conditions.")

// === Z-Score Parameters ===
zBaseLength = input.int(3, minval=1, title="Z-Score Base Period")
shortSmooth = input.int(3, title="Short-Term Smoothing")
longSmooth = input.int(5, title="Long-Term Smoothing")

// === Z-Score Calculation Function ===
f_zscore(src, length) =>
    mean = ta.sma(src, length)
    std_dev = ta.stdev(src, length)
    z = (src - mean) / std_dev
    z

// === Z-Score Logic ===
zRaw = f_zscore(close, zBaseLength)
zShort = ta.sma(zRaw, shortSmooth)
zLong = ta.sma(zRaw, longSmooth)


// === Minimum gap between identical signals ===
gapBars = input.int(5, minval=1, title="Bars gap between identical signals", tooltip="Minimum number of bars required between two identical signals (entry or exit). Helps reduce signal noise.")


// === Candle-based momentum filters ===
bullish_3bars = close > close[1] and close[1] > close[2] and close[2] > close[3] and close[3] > close[4]
bearish_3bars = close < close[1] and close[1] < close[2] and close[2] < close[3] and close[3] < close[4]

// === Entry and Exit Logic with minimum signal gap and candle momentum filter ===
var int lastEntryBar = na
var int lastExitBar  = na

if enableZScore
    longCondition = (zShort > zLong)
    exitCondition = (zShort < zLong)

    if longCondition and (na(lastEntryBar) or bar_index - lastEntryBar > gapBars) and not bullish_3bars
        strategy.entry("Z Score", strategy.long)
        lastEntryBar := bar_index

    if exitCondition and (na(lastExitBar) or bar_index - lastExitBar > gapBars) and not bearish_3bars
        strategy.close("Z Score", comment="Z Score")
        lastExitBar := bar_index

// === Real-time PnL Table for Last Open Position ===
var table positionTable = table.new(position.bottom_right, 2, 2, border_width=1)

// Header Labels
table.cell(positionTable, 0, 0, "Entry Price", text_color=color.white, bgcolor=color.gray)
table.cell(positionTable, 1, 0, "Unrealized PnL (%)", text_color=color.white, bgcolor=color.gray)

// Values (only when position is open)
isLong        = strategy.position_size > 0
entryPrice    = strategy.position_avg_price
unrealizedPnL = isLong ? (close - entryPrice) / entryPrice * 100 : na

// Define dynamic text color for PnL
pnlColor = unrealizedPnL > 0 ? color.green : unrealizedPnL < 0 ? color.red : color.gray

// Update Table Content
if isLong
    table.cell(positionTable, 0, 1, str.tostring(entryPrice, "#.####"), text_color=color.gray, bgcolor=color.new(color.gray, 90))
    table.cell(positionTable, 1, 1, str.tostring(unrealizedPnL, "#.##") + " %", text_color=pnlColor, bgcolor=color.new(pnlColor, 90))
else
    table.cell(positionTable, 0, 1, "—", text_color=color.gray, bgcolor=color.new(color.gray, 90))
    table.cell(positionTable, 1, 1, "—", text_color=color.gray, bgcolor=color.new(color.gray, 90))