
یہ حکمت عملی ایک رجحان ٹریڈنگ سسٹم ہے جس میں ایک گاسکی ویٹڈ منتقل اوسط چینل اور ایک بے ترتیب نسبتا weak مضبوط اشاریہ (اسٹوکاسٹک آر ایس آئی) کو ملایا گیا ہے۔ حکمت عملی قیمتوں کے چینل کو گاسکی ویٹڈ طریقہ کار کے ذریعہ بناتی ہے ، اور رجحانات کی گرفت اور حرکیات کی تصدیق کے ل entry داخلے اور باہر نکلنے کے وقت کا تعین کرنے کے لئے بے ترتیب آر ایس آئی اشارے کے ساتھ مل کر کراس سگنل فراہم کرتی ہے۔ اس حکمت عملی میں ایک اچھی ریاضی کی بنیاد ہے جو مارکیٹ کے شور کو مؤثر طریقے سے فلٹر کرنے اور اہم رجحانات کو پکڑنے کے قابل ہے۔
اس حکمت عملی کی بنیادی منطق دو اہم حصوں پر مشتمل ہے:
گوسٹ چینل سسٹم: گوسٹ ویٹڈ موبائل اوسط ((GWMA) اور گوسٹ ویٹڈ اسٹینڈرڈ ڈیفریکٹ ((GWSD) کا استعمال کرتے ہوئے قیمتوں کا چینل بنائیں۔ GWMA حالیہ اعداد و شمار کو زیادہ وزن دیتا ہے ، جس سے مساوی لائنوں کو قیمتوں میں تبدیلی کے ردعمل کے ل more زیادہ حساس بنایا جاتا ہے۔
بے ترتیب آر ایس آئی سسٹم: روایتی آر ایس آئی اشارے کو بے ترتیب طریقے سے پروسیس کیا جاتا ہے ، K اور D اقدار کا حساب لگایا جاتا ہے۔ اس طرح کی پروسیسنگ سے اوورلوڈ اور اوور سیل علاقوں کی بہتر شناخت ہوسکتی ہے ، اور زیادہ درست حرکیاتی سگنل فراہم کیے جاسکتے ہیں۔
ٹریڈنگ سگنل کی پیداوار مندرجہ ذیل شرائط پر مبنی ہے:
اس حکمت عملی نے گاسس چینل اور بے ترتیب آر ایس آئی اشارے کے ساتھ مل کر ایک مضبوط ریاضیاتی بنیاد کے ساتھ ایک رجحان سے باخبر رہنے کا نظام تشکیل دیا ہے۔ حکمت عملی واضح رجحانات والے بازاروں میں عمدہ کارکردگی کا مظاہرہ کرتی ہے ، لیکن پیرامیٹرز کی اصلاح اور مارکیٹ کے ماحول میں اس کی موافقت پر توجہ دینے کی ضرورت ہے۔ تجویز کردہ اصلاحات پر عمل درآمد کے ذریعہ حکمت عملی کی استحکام اور منافع کو مزید بڑھاوا دیا جاسکتا ہے۔
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Gaussian Channel + Stoch RSI Strategy", overlay=true, margin_long=100, margin_short=100, initial_capital=100000, commission_type=strategy.commission.percent, commission_value=0.1, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=1)
// User Inputs
length = input.int(20, "Gaussian Length", minval=5)
multiplier = input.float(2.0, "Channel Multiplier", step=0.1)
rsiLength = input.int(14, "RSI Length", minval=1)
stochLength= input.int(14, "Stoch RSI Length", minval=1)
kLength = input.int(3, "Stoch K Smoothing", minval=1)
dLength = input.int(3, "Stoch D Smoothing", minval=1)
// Gaussian Weighted Moving Average Function
f_gaussian(source, length) =>
half = (length - 1) / 2.0
sum = 0.0
norm = 0.0
// Gaussian standard deviation chosen as length/6 for a smooth curve
denom = (length / 6.0) * (length / 6.0)
for i = 0 to length - 1
x = i - half
w = math.exp(-(x * x) / (2 * denom))
sum += source[i] * w
norm += w
sum / norm
// Gaussian Weighted Standard Deviation Function
f_gaussian_std(source, length) =>
half = (length - 1) / 2.0
gavg = f_gaussian(source, length)
sum = 0.0
norm = 0.0
denom = (length / 6.0) * (length / 6.0)
for i = 0 to length - 1
x = i - half
w = math.exp(-(x * x)/(2*denom))
diff = source[i] - gavg
sum += diff * diff * w
norm += w
math.sqrt(sum/norm)
// Compute Gaussian Channel
gaussMid = f_gaussian(close, length)
gaussStd = f_gaussian_std(close, length)
gaussUpper = gaussMid + gaussStd * multiplier
gaussLower = gaussMid - gaussStd * multiplier
// Stochastic RSI Calculation
rsi = ta.rsi(close, rsiLength)
rsiLowest = ta.lowest(rsi, stochLength)
rsiHighest = ta.highest(rsi, stochLength)
stoch = 100 * (rsi - rsiLowest) / math.max(rsiHighest - rsiLowest, 1e-10)
k = ta.sma(stoch, kLength)
d = ta.sma(k, dLength)
// Conditions
// Long entry: Price closes above upper Gaussian line AND Stoch RSI K > D (stochastic is "up")
longCondition = close > gaussUpper and k > d
// Exit condition: Price closes below upper Gaussian line
exitCondition = close < gaussUpper
// Only trade in the specified date range
inDateRange = time >= timestamp("2018-01-01T00:00:00") and time < timestamp("2069-01-01T00:00:00")
// Submit Orders
if inDateRange
if longCondition and strategy.position_size <= 0
strategy.entry("Long", strategy.long)
if exitCondition and strategy.position_size > 0
strategy.close("Long")
// Plot Gaussian Channel
plot(gaussMid, "Gaussian Mid", color=color.new(color.yellow, 0))
plot(gaussUpper, "Gaussian Upper", color=color.new(color.green, 0))
plot(gaussLower, "Gaussian Lower", color=color.new(color.red, 0))