
یہ حکمت عملی Z اسکور ((Z-Score) کے اعدادوشمار کے تصور پر مبنی ہے ، جس میں قیمتوں کے مقامی اوسط سے متعلق اعدادوشمار کے انحراف کی نشاندہی کی جاتی ہے۔ اس حکمت عملی میں اختتامی قیمتوں کے Z اسکور کا حساب لگایا جاتا ہے ، اور پھر Z اسکور کو ہموار کرنے کے لئے قلیل مدتی اور طویل مدتی منتقل اوسط کا اطلاق کیا جاتا ہے۔ جب قلیل مدتی ہموار Z اسکور کے اوپر طویل مدتی ہموار Z اسکور ہوتا ہے تو کثیر سر داخل ہونے کا اشارہ پیدا ہوتا ہے ، اور جب طویل مدتی ہموار Z اسکور کے نیچے طویل مدتی ہموار Z اسکور ہوتا ہے تو اس کی جگہ کا اشارہ پیدا ہوتا ہے۔ اس حکمت عملی میں شور تجارت کو کم کرنے کے لئے سگنل وقفہ کنٹرول اور متحرک مقدار پر مبنی فلٹر بھی شامل ہیں۔
اس حکمت عملی کا مرکز Z اسکور کے حساب کتاب اور اطلاق ہے۔ Z اسکور ایک اعدادوشمار ہے جس کی پیمائش ایک ڈیٹا پوائنٹ کے نمونے کی اوسط سے انحراف کی پیمائش کرنے کے لئے کی جاتی ہے ، معیاری فرق کی اکائیوں میں۔ اس حکمت عملی میں ، Z اسکور کا حساب کتاب کرنے کا فارمولا یہ ہے: Z = (ختم ہونے والی قیمت - SMA ((ختم ہونے والی قیمت ، N)) / STDEV ((ختم ہونے والی قیمت ، N) جہاں N صارف کی طرف سے وضاحت کی بنیادی دورانیہ ہے.
پالیسی پر عملدرآمد کا عمل مندرجہ ذیل ہے:
اضافی شرائط میں شامل ہیں:
حل:
ہموار زیڈ اسکور کراسنگ پر مبنی متحرک طور پر بہتر قیمتوں کے اعدادوشمار کی تجارت کی حکمت عملی ایک سادہ تجارتی نظام ہے جو اعدادوشمار کے اصولوں پر مبنی ہے اور اس کی توجہ قیمتوں کے مقامی اوسط سے انحراف اور واپسی پر مرکوز ہے۔ ہموار پروسیسنگ ، سگنل وقفہ کنٹرول اور متحرک فلٹرنگ کے ذریعہ ، اس حکمت عملی سے شور کی تجارت کو مؤثر طریقے سے کم کیا جاتا ہے اور سگنل کے معیار میں اضافہ ہوتا ہے۔ یہ حکمت عملی خاص طور پر فاریکس مصنوعات کے لئے موزوں ہے جس میں ہلچل والی مارکیٹ اور اوسط واپسی کا مظاہرہ ہوتا ہے۔
تاہم ، حکمت عملی میں کچھ حدود بھی ہیں ، جیسے اعدادوشمار کے مفروضوں ، پیرامیٹرز کی حساسیت اور واحد عنصر کے فیصلے پر انحصار کرنا۔ رجحانات کی شناخت ، اتار چڑھاؤ کی ایڈجسٹمنٹ ، کثیر ٹائم فریم تجزیہ ، اسٹاپ لاسر میکانزم ، ٹرانزیکشن کی تصدیق اور کثیر عنصر کے مجموعے جیسے اصلاحی اقدامات کو شامل کرکے حکمت عملی کی لچک اور کارکردگی میں نمایاں اضافہ کیا جاسکتا ہے۔
مجموعی طور پر ، یہ ایک مضبوط نظریاتی بنیاد ہے ، جس میں ایک مختصر ، آسانی سے سمجھنے اور توسیع کرنے کے لئے حکمت عملی کا فریم ورک ہے ، جو تجارتی نظام کے بنیادی اجزاء یا تعلیمی اوزار کے طور پر موزوں ہے ، جو تاجروں کو تجارت میں اعدادوشمار کے استعمال کو سمجھنے میں مدد کرتا ہے۔
/*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))