মোমেন্টাম অ্যাডাপ্টিভ গাউসিয়ান চ্যানেল মাল্টি-পিরিয়ড কৌশল

ATR RSI HLC3 TR
সৃষ্টির তারিখ: 2025-02-08 14:49:15 অবশেষে সংশোধন করুন: 2025-02-08 14:49:15
অনুলিপি: 1 ক্লিকের সংখ্যা: 360
1
ফোকাস
1617
অনুসারী

মোমেন্টাম অ্যাডাপ্টিভ গাউসিয়ান চ্যানেল মাল্টি-পিরিয়ড কৌশল

ওভারভিউ

এই কৌশলটি একটি গতিশীল ট্রেডিং সিস্টেম যা গাউস চ্যানেল এবং এলোমেলো আরএসআই সূচকগুলির উপর ভিত্তি করে, মৌসুমী ফিল্টারিং এবং অস্থিরতা পরিচালনার সাথে মিলিত। কৌশলটি বাজারের প্রবণতা সনাক্ত করতে, এলোমেলো আরএসআই ব্যবহার করে গতিশীলতা নিশ্চিত করতে এবং নির্দিষ্ট মৌসুমী উইন্ডোর মধ্যে লেনদেন সম্পাদন করতে গাউস চ্যানেলের সাথে খাপ খাইয়ে নেয়। সিস্টেমটি প্রতিটি লেনদেনের জন্য ঝুঁকির দরজা নিয়ন্ত্রণের জন্য এটিআর-ভিত্তিক পজিশন ম্যানেজমেন্টকে সংহত করে।

কৌশল নীতি

কৌশলটির কেন্দ্রবিন্দু হল একটি মূল্য চ্যানেল যা মাল্টিপল পয়েন্ট গ্যাস ফিল্টারের উপর ভিত্তি করে নির্মিত হয়। এই চ্যানেলটি HLC3 এর দামের গ্যাস ফিল্টার মান গণনা করে এবং প্রকৃত ওঠানামা ((TR) এর ঘূর্ণন ফলাফলের সাথে মিলিত হয়, যা একটি গতিশীল উপরের এবং নীচের ট্র্যাক্ট তৈরি করে। লেনদেনের সংকেত তৈরির জন্য নিম্নলিখিত শর্তগুলি পূরণ করা প্রয়োজনঃ

  1. মূলধারার মুদ্রাস্ফীতির প্রবণতা বাড়ছে
  2. র্যান্ডম আরএসআই সূচকটি ওভারব্রেকিং দেখায়
  3. ডিফল্ট মৌসুমী উইন্ডোতে বর্তমান সময়
  4. পজিশনের আকার ATR গতিশীল গণনার উপর ভিত্তি করে

সমতল অবস্থানের সংকেতগুলি মূল্যের পতন দ্বারা ট্রিগার করা হয়। পুরো সিস্টেমটি একাধিক ফিল্টারিং প্রক্রিয়া দ্বারা লেনদেনের স্থায়িত্ব বাড়ায়।

কৌশলগত সুবিধা

  1. গ্যাস ফিল্টারগুলি দুর্দান্ত গোলমাল ফিল্টারিং ক্ষমতা সহ সত্যিকারের বাজারের প্রবণতা কার্যকরভাবে ক্যাপচার করতে পারে
  2. মাল্টিপড ডিজাইনগুলি মূল্য চ্যানেলের আরও সুনির্দিষ্ট সীমানা সরবরাহ করে
  3. গতিশীলতা এবং প্রবণতা সূচক একত্রিত করে সংকেতের নির্ভরযোগ্যতা বাড়ায়
  4. মৌসুমী ফিল্টারিং বিপজ্জনক বাজার পরিস্থিতি এড়াতে সাহায্য করে
  5. ডায়নামিক পজিশন ম্যানেজমেন্ট ঝুঁকির ধারাবাহিকতা নিশ্চিত করে
  6. সিস্টেম পরামিতি বিভিন্ন বাজার অবস্থার উপর ভিত্তি করে অপ্টিমাইজ করা যেতে পারে

কৌশলগত ঝুঁকি

  1. গ্যাস ফিল্টার জটিল গণনা, যার ফলে সম্পাদন বিলম্ব হতে পারে
  2. মাল্টি-ফিল্টারিংয়ের ফলে গুরুত্বপূর্ণ কিছু ব্যবসায়িক সুযোগ হাতছাড়া হতে পারে
  3. সিস্টেমটি প্যারামিটার সেটিংসে সংবেদনশীল এবং যত্নশীল অপ্টিমাইজেশান প্রয়োজন
  4. মৌসুমী উইন্ডোর স্থায়ী সেটিংগুলি বাজারের পরিবর্তিত পরিবেশের সাথে খাপ খাইয়ে নিতে পারে না
  5. উচ্চ অস্থিরতার সময় ATR- ভিত্তিক পজিশন কন্ট্রোল খুব বেশি রক্ষণশীল হতে পারে

কৌশল অপ্টিমাইজেশনের দিকনির্দেশনা

  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")