Momentum Adaptive Gaussian Channel Multi-Pried Strategy

ATR RSI HLC3 TR
تخلیق کی تاریخ: 2025-02-08 14:49:15 آخر میں ترمیم کریں: 2025-02-08 14:49:15
کاپی: 1 کلکس کی تعداد: 360
1
پر توجہ دیں
1617
پیروکار

Momentum Adaptive Gaussian Channel Multi-Pried Strategy

جائزہ

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

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

حکمت عملی کا مرکز ایک قیمت چینل ہے جو کثیر قطبی گوسٹن فلٹر پر مبنی ہے۔ یہ چینل HLC3 قیمت کے گوسٹن ویلیو کی حساب سے ، اور حقیقی اتار چڑھاؤ کی شدت ((TR) کے ساتھ مل کر ، ایک متحرک اوپر نیچے کی راہ تشکیل دیتا ہے۔ ٹریڈنگ سگنل کی پیداوار کے لئے درج ذیل شرائط کو پورا کرنا ضروری ہے۔

  1. قیمتوں میں اضافہ ہوا ہے اور مرکزی لہر اوپر کی طرف بڑھ رہی ہے
  2. بے ترتیب آر ایس آئی اشارے نے اوور بیو کو ظاہر کیا
  3. موجودہ وقت پہلے سے طے شدہ موسمی ونڈو کے اندر
  4. پوزیشن کا سائز ATR متحرک حساب پر مبنی ہے

اس کے علاوہ ، جب قیمت نیچے کی طرف جاتی ہے تو فین پوزیشن سگنل کو متحرک کیا جاتا ہے۔ پورے نظام میں متعدد فلٹرنگ میکانزم موجود ہیں ، جس سے تجارت میں استحکام پیدا ہوتا ہے۔

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

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

اسٹریٹجک رسک

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

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

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

خلاصہ کریں۔

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

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

//@version=6
strategy("Demo GPT - Gold Gaussian Strategy", overlay=true, commission_type=strategy.commission.percent, commission_value=0.1)

// ====== INPUTS ======
// Gaussian Channel
lengthGC = input.int(144, "Gaussian Period", minval=20)
poles = input.int(4, "Poles", minval=1, maxval=9)
multiplier = input.float(1.414, "Volatility Multiplier", minval=1)

// Stochastic RSI
smoothK = input.int(3, "Stoch K", minval=1)
lengthRSI = input.int(14, "RSI Length", minval=1)
lengthStoch = input.int(14, "Stoch Length", minval=1)
overbought = input.int(80, "Overbought Level", minval=50)

// Seasonal Filter (corrected)
startMonth = input.int(9, "Start Month (1-12)", minval=1, maxval=12)
endMonth = input.int(2, "End Month (1-12)", minval=1, maxval=12)

// Volatility Management
atrLength = input.int(22, "ATR Length", minval=5)
riskPercent = input.float(0.5, "Risk per Trade (%)", minval=0.1, step=0.1)

// ====== GAUSSIAN CHANNEL ======
f_filt9x(alpha, source, iterations) =>
    float f = 0.0
    float x = 1 - alpha
    int m2 = iterations == 9 ? 36 : iterations == 8 ? 28 : iterations == 7 ? 21 : 
           iterations == 6 ? 15 : iterations == 5 ? 10 : iterations == 4 ? 6 : 
           iterations == 3 ? 3 : iterations == 2 ? 1 : 0
    
    int m3 = iterations == 9 ? 84 : iterations == 8 ? 56 : iterations == 7 ? 35 : 
           iterations == 6 ? 20 : iterations == 5 ? 10 : iterations == 4 ? 4 : 
           iterations == 3 ? 1 : 0
    
    int m4 = iterations == 9 ? 126 : iterations == 8 ? 70 : iterations == 7 ? 35 : 
           iterations == 6 ? 15 : iterations == 5 ? 5 : iterations == 4 ? 1 : 0
    
    int m5 = iterations == 9 ? 126 : iterations == 8 ? 56 : iterations == 7 ? 21 : 
           iterations == 6 ? 6 : iterations == 5 ? 1 : 0
    
    int m6 = iterations == 9 ? 84 : iterations == 8 ? 28 : iterations == 7 ? 7 : 
           iterations == 6 ? 1 : 0
    
    int m7 = iterations == 9 ? 36 : iterations == 8 ? 8 : iterations == 7 ? 1 : 0
    
    int m8 = iterations == 9 ? 9 : iterations == 8 ? 1 : 0
    int m9 = iterations == 9 ? 1 : 0
    
    f := math.pow(alpha, iterations) * nz(source) +
      iterations * x * nz(f[1]) -
      (iterations >= 2 ? m2 * math.pow(x, 2) * nz(f[2]) : 0) +
      (iterations >= 3 ? m3 * math.pow(x, 3) * nz(f[3]) : 0) -
      (iterations >= 4 ? m4 * math.pow(x, 4) * nz(f[4]) : 0) +
      (iterations >= 5 ? m5 * math.pow(x, 5) * nz(f[5]) : 0) -
      (iterations >= 6 ? m6 * math.pow(x, 6) * nz(f[6]) : 0) +
      (iterations >= 7 ? m7 * math.pow(x, 7) * nz(f[7]) : 0) -
      (iterations >= 8 ? m8 * math.pow(x, 8) * nz(f[8]) : 0) +
      (iterations == 9 ? m9 * math.pow(x, 9) * nz(f[9]) : 0)
    f

f_pole(alpha, source, iterations) =>
    float fn = na
    float f1 = f_filt9x(alpha, source, 1)
    float f2 = iterations >= 2 ? f_filt9x(alpha, source, 2) : na
    float f3 = iterations >= 3 ? f_filt9x(alpha, source, 3) : na
    float f4 = iterations >= 4 ? f_filt9x(alpha, source, 4) : na
    float f5 = iterations >= 5 ? f_filt9x(alpha, source, 5) : na
    float f6 = iterations >= 6 ? f_filt9x(alpha, source, 6) : na
    float f7 = iterations >= 7 ? f_filt9x(alpha, source, 7) : na
    float f8 = iterations >= 8 ? f_filt9x(alpha, source, 8) : na
    float f9 = iterations == 9 ? f_filt9x(alpha, source, 9) : na
    
    fn := iterations == 1 ? f1 : 
         iterations == 2 ? f2 : 
         iterations == 3 ? f3 : 
         iterations == 4 ? f4 : 
         iterations == 5 ? f5 : 
         iterations == 6 ? f6 : 
         iterations == 7 ? f7 : 
         iterations == 8 ? f8 : 
         iterations == 9 ? f9 : na
    [fn, f1]

beta = (1 - math.cos(4 * math.asin(1) / lengthGC)) / (math.pow(1.414, 2 / poles) - 1)
alpha = -beta + math.sqrt(math.pow(beta, 2) + 2 * beta)
lag = int((lengthGC - 1) / (2 * poles))

srcAdjusted = hlc3 + (hlc3 - hlc3[lag])
[mainFilter, filt1] = f_pole(alpha, srcAdjusted, poles)
[trFilter, tr1] = f_pole(alpha, ta.tr(true), poles)

upperBand = mainFilter + trFilter * multiplier
lowerBand = mainFilter - trFilter * multiplier

// ====== STOCHASTIC RSI ======
rsiValue = ta.rsi(close, lengthRSI)
k = ta.sma(ta.stoch(rsiValue, rsiValue, rsiValue, lengthStoch), smoothK)
stochSignal = k >= overbought

// ====== SEASONAL FILTER (FIXED) ======
currentMonth = month(time)
inSeason = (currentMonth >= startMonth and currentMonth <= 12) or 
         (currentMonth >= 1 and currentMonth <= endMonth)

// ====== VOLATILITY MANAGEMENT ======
atr = ta.atr(atrLength)
positionSize = math.min((strategy.equity * riskPercent/100) / atr, strategy.equity * 0.5 / close)

// ====== TRADING LOGIC ======
trendUp = mainFilter > mainFilter[1]
priceAbove = close > upperBand
longCondition = trendUp and priceAbove and stochSignal and inSeason

exitCondition = ta.crossunder(close, lowerBand)

// ====== EXECUTION ======
if longCondition
    strategy.entry("Long", strategy.long, qty=positionSize)
    
if exitCondition
    strategy.close("Long")

// ====== VISUALIZATION ======
plot(upperBand, "Upper Band", color=color.new(#00FF00, 0))
plot(lowerBand, "Lower Band", color=color.new(#FF0000, 0))
bgcolor(inSeason ? color.new(color.blue, 90) : na, title="Season Filter")