
এই কৌশলটি একটি প্রবণতা-অনুসরণকারী ট্রেডিং সিস্টেম যা গ্যাসকেয়ার ওয়ারেন্টিড মুভিং এভারেজ চ্যানেল এবং র্যান্ডম আপেক্ষিকভাবে দুর্বল সূচক (স্টোক্যাস্টিক আরএসআই) সংযুক্ত করে। কৌশলটি গ্যাসকেয়ার ওয়ারেন্টিড পদ্ধতির মাধ্যমে মূল্য চ্যানেল তৈরি করে এবং র্যান্ডম আরএসআই সূচকের ক্রস সিগন্যালের সাথে মিলিত হয় যা প্রবণতা সম্পর্কে জালিয়াতি এবং গতিশীলতা নিশ্চিত করার জন্য প্রবেশ এবং প্রস্থান নির্ধারণ করে। কৌশলটির একটি ভাল গাণিতিক ভিত্তি রয়েছে, যা কার্যকরভাবে বাজার শব্দটি ফিল্টার করতে এবং মূল প্রবণতাটি ধরতে সক্ষম।
কৌশলটির মূল যুক্তি দুটি প্রধান অংশ নিয়ে গঠিতঃ
গ্যাস চ্যানেল সিস্টেমঃ গ্যাস ওজনের চলমান গড় ((GWMA) এবং গ্যাস ওজনের স্ট্যান্ডার্ড পার্থক্য ((GWSD) ব্যবহার করে একটি মূল্য চ্যানেল তৈরি করা। GWMA সাম্প্রতিক ডেটাকে আরও বেশি ওজন দেয়, যা সমান্তরালকে মূল্য পরিবর্তনের প্রতি আরও সংবেদনশীল করে তোলে। চ্যানেলের আপ এবং ডাউন ট্র্যাকটি GWSD এর গুণিতক ফ্যাক্টর দ্বারা নির্ধারিত হয়।
এলোমেলো আরএসআই সিস্টেমঃ প্রচলিত আরএসআই সূচককে এলোমেলোভাবে প্রক্রিয়াকরণ করা হয়, কে এবং ডি মান গণনা করা হয়। এই প্রক্রিয়াকরণটি ওভারবড ওভারসোল্ড অঞ্চলগুলিকে আরও ভালভাবে সনাক্ত করতে পারে এবং আরও সঠিক গতিশীল সংকেত সরবরাহ করতে পারে।
ট্রেডিং সিগন্যালের উৎপত্তি নিম্নলিখিত শর্তের উপর ভিত্তি করেঃ
এই কৌশলটি গ্যাস চ্যানেল এবং এলোমেলো আরএসআই সূচকগুলির সাথে মিলিত হয়ে একটি প্রবণতা ট্র্যাকিং সিস্টেম তৈরি করে যার একটি শক্ত গাণিতিক ভিত্তি রয়েছে। কৌশলটি প্রবণতা বিশিষ্ট বাজারে দুর্দান্ত পারফরম্যান্স করে, তবে প্যারামিটার অপ্টিমাইজেশন এবং বাজারের পরিবেশের সাথে অভিযোজনযোগ্যতার দিকে মনোযোগ দেওয়া প্রয়োজন। প্রস্তাবিত অপ্টিমাইজেশানগুলি বাস্তবায়নের মাধ্যমে কৌশলটির স্থায়িত্ব এবং লাভজনকতা আরও বাড়ানো যেতে পারে।
/*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))