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

GC SRSI HLC3 TR RSI
সৃষ্টির তারিখ: 2025-02-21 11:28:34 অবশেষে সংশোধন করুন: 2025-02-21 11:28:34
অনুলিপি: 0 ক্লিকের সংখ্যা: 410
2
ফোকাস
319
অনুসারী

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

ওভারভিউ

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

কৌশল নীতি

কৌশলটির মূল যুক্তি নিম্নলিখিত মূল উপাদানগুলির উপর ভিত্তি করে:

  1. গস চ্যানেল গণনাঃ একটি বহুদৈর্ঘ্য গস ফিল্টার ব্যবহার করে এইচএলসি 3 দামের ডেটা প্রক্রিয়া করুন, একটি স্বনির্ধারিত চ্যানেল তৈরি করুন। বেটা এবং আলফা প্যারামিটারগুলির মাধ্যমে ফিল্টার প্রভাবগুলি অনুকূলিত করুন এবং বিকল্পভাবে পিছিয়ে পড়া হ্রাস করুন।
  2. চ্যানেল প্রস্থ সমন্বয়ঃ চ্যানেল প্রস্থের গতিশীল সমন্বয় বাস্তব তরঙ্গদৈর্ঘ্যের উপর ভিত্তি করে, 1.414 ডিফল্ট গুণক হিসাবে ব্যবহার করে।
  3. র্যান্ডম আরএসআই সংকেতঃ ১৪টি চক্রের আরএসআই এবং র্যান্ডম সূচকগুলির সংমিশ্রণ, 80 এর উপরে বা 20 এর নীচে একটি সংকেত দেয়।
  4. প্রবেশের শর্তঃ একই সময়ে গাউস চ্যানেলের উপরে, দামের বিপর্যয় এবং র্যান্ডম আরএসআই ট্রিগার সিগন্যালের তিনটি শর্ত পূরণ করতে হবে।
  5. প্রস্থান লজিকঃ যখন দাম গাউস চ্যানেলের উপরে নেমে যায় তখন সমতল অবস্থান।

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

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

কৌশলগত ঝুঁকি

  1. প্যারামিটার সংবেদনশীলতাঃ গস চ্যানেলের পয়েন্ট সংখ্যা এবং নমুনা চক্রের সেটিং কৌশলগত কর্মক্ষমতা প্রভাবিত করে।
  2. পিছিয়ে পড়ার ঝুঁকিঃ পিছিয়ে পড়ার ঝুঁকি হ্রাস করার বিকল্পগুলি দেওয়া হলেও, সূচকটি নিজেই কিছুটা পিছিয়ে রয়েছে।
  3. ভুয়া ব্রেকিংয়ের ঝুঁকিঃ প্রায়শই ভুয়া ব্রেকিংয়ের সংকেত পাওয়া যায়।
  4. তহবিল পরিচালনার অভাবঃ বর্তমান সংস্করণে বিস্তারিত পজিশন ম্যানেজমেন্টের অভাব রয়েছে।

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

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

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2024-02-22 00:00:00
end: 2025-02-19 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/

//@version=5
strategy(title="Gaussian Channel Strategy v3.0", overlay=true, calc_on_every_tick=false, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, slippage=0, fill_orders_on_standard_ohlc=true)

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
// Gaussian Filter Functions (Must be declared first)
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
f_filt9x(_a, _s, _i) =>
    var int _m2 = 0, var int _m3 = 0, var int _m4 = 0, var int _m5 = 0, var int _m6 = 0, 
    var int _m7 = 0, var int _m8 = 0, var int _m9 = 0, var float _f = .0
    _x = 1 - _a
    _m2 := _i == 9 ? 36  : _i == 8 ? 28 : _i == 7 ? 21 : _i == 6 ? 15 : _i == 5 ? 10 : _i == 4 ? 6 : _i == 3 ? 3 : _i == 2 ? 1 : 0
    _m3 := _i == 9 ? 84  : _i == 8 ? 56 : _i == 7 ? 35 : _i == 6 ? 20 : _i == 5 ? 10 : _i == 4 ? 4 : _i == 3 ? 1 : 0
    _m4 := _i == 9 ? 126 : _i == 8 ? 70 : _i == 7 ? 35 : _i == 6 ? 15 : _i == 5 ? 5  : _i == 4 ? 1 : 0
    _m5 := _i == 9 ? 126 : _i == 8 ? 56 : _i == 7 ? 21 : _i == 6 ? 6  : _i == 5 ? 1  : 0 
    _m6 := _i == 9 ? 84  : _i == 8 ? 28 : _i == 7 ? 7  : _i == 6 ? 1  : 0 
    _m7 := _i == 9 ? 36  : _i == 8 ? 8  : _i == 7 ? 1  : 0 
    _m8 := _i == 9 ? 9   : _i == 8 ? 1  : 0 
    _m9 := _i == 9 ? 1   : 0
    _f := math.pow(_a, _i) * nz(_s) + _i * _x * nz(_f[1]) - (_i >= 2 ? _m2 * math.pow(_x, 2) * nz(_f[2]) : 0) + (_i >= 3 ? _m3 * math.pow(_x, 3) * nz(_f[3]) : 0) - (_i >= 4 ? _m4 * math.pow(_x, 4) * nz(_f[4]) : 0) + (_i >= 5 ? _m5 * math.pow(_x, 5) * nz(_f[5]) : 0) - (_i >= 6 ? _m6 * math.pow(_x, 6) * nz(_f[6]) : 0) + (_i >= 7 ? _m7 * math.pow(_x, 7) * nz(_f[7]) : 0) - (_i >= 8 ? _m8 * math.pow(_x, 8) * nz(_f[8]) : 0) + (_i == 9 ? _m9 * math.pow(_x, 9) * nz(_f[9]) : 0)

f_pole(_a, _s, _i) =>
    _f1 = f_filt9x(_a, _s, 1)
    _f2 = _i >= 2 ? f_filt9x(_a, _s, 2) : 0.0
    _f3 = _i >= 3 ? f_filt9x(_a, _s, 3) : 0.0
    _f4 = _i >= 4 ? f_filt9x(_a, _s, 4) : 0.0
    _f5 = _i >= 5 ? f_filt9x(_a, _s, 5) : 0.0
    _f6 = _i >= 6 ? f_filt9x(_a, _s, 6) : 0.0
    _f7 = _i >= 7 ? f_filt9x(_a, _s, 7) : 0.0
    _f8 = _i >= 8 ? f_filt9x(_a, _s, 8) : 0.0
    _f9 = _i == 9 ? f_filt9x(_a, _s, 9) : 0.0
    _fn = _i == 1 ? _f1 : _i == 2 ? _f2 : _i == 3 ? _f3 : _i == 4 ? _f4 : _i == 5 ? _f5 : _i == 6 ? _f6 : _i == 7 ? _f7 : _i == 8 ? _f8 : _i == 9 ? _f9 : na
    [_fn, _f1]

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
// Inputs
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------


// Gaussian Channel
int poles = input.int(4, "Poles", 1, 9, group="Gaussian Channel")
int period = input.int(144, "Sampling Period", 2, group="Gaussian Channel")
float mult = input.float(1.414, "True Range Multiplier", group="Gaussian Channel")
bool reducedLag = input.bool(false, "Reduced Lag Mode", group="Gaussian Channel")
bool fastResponse = input.bool(false, "Fast Response Mode", group="Gaussian Channel")

// Stochastic RSI
smoothK = input.int(3, "K", 1, group="Stochastic RSI")
smoothD = input.int(3, "D", 1, group="Stochastic RSI")
lengthRSI = input.int(14, "RSI Length", 1, group="Stochastic RSI")
lengthStoch = input.int(14, "Stochastic Length", 1, group="Stochastic RSI")

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
// Calculations
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
// Gaussian Channel
beta = (1 - math.cos(4*math.asin(1)/period)) / (math.pow(1.414, 2/poles) - 1)
alpha = -beta + math.sqrt(math.pow(beta, 2) + 2*beta)
lag = (period - 1)/(2*poles)

src = hlc3
srcData = reducedLag ? src + (src - src[lag]) : src
trData = reducedLag ? ta.tr + (ta.tr - ta.tr[lag]) : ta.tr

[filterMain, filter1] = f_pole(alpha, srcData, poles)
[filterTRMain, filterTR1] = f_pole(alpha, trData, poles)

finalFilter = fastResponse ? (filterMain + filter1)/2 : filterMain
finalTR = fastResponse ? (filterTRMain + filterTR1)/2 : filterTRMain

hband = finalFilter + finalTR * mult
lband = finalFilter - finalTR * mult

// Stochastic RSI
rsi = ta.rsi(close, lengthRSI)
k = ta.sma(ta.stoch(rsi, rsi, rsi, lengthStoch), smoothK)
d = ta.sma(k, smoothD)

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
// Trading Logic
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
gaussianGreen = finalFilter > finalFilter[1]
priceAbove = close > hband
stochCondition = k > 80 or k < 20

longCondition = gaussianGreen and priceAbove and stochCondition 
exitCondition = ta.crossunder(close, hband) 

strategy.entry("Long", strategy.long, when=longCondition)
strategy.close("Long", when=exitCondition)

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
// Visuals
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
filterColor = finalFilter > finalFilter[1] ? #0aff68 : #ff0a5a
plot(finalFilter, "Filter", filterColor, 2)
plot(hband, "High Band", filterColor)
plot(lband, "Low Band", filterColor)
fill(plot(hband), plot(lband), color.new(filterColor, 90), "Channel Fill")