
স্বনির্ধারিত লিনিয়ার রিগ্রেশন চ্যানেল কৌশল হল একটি পরিমাণগত ট্রেডিং কৌশল যা লিনিয়ার রিগ্রেশন বিশ্লেষণের উপর ভিত্তি করে। এই কৌশলটি একটি নির্দিষ্ট সময়ের মধ্যে সিকিউরিটির দামের লিনিয়ার রিগ্রেশন সমীকরণ গণনা করে একটি আপ-ডাউন চ্যানেল তৈরি করে এবং একটি ট্রেডিং সিগন্যাল হিসাবে চ্যানেলের আপ-ডাউন ট্র্যাক ব্যবহার করে, ব্যবধানযুক্ত লেনদেন বা প্রবণতা অনুসরণ করে।
স্বনির্ধারিত লিনিয়ার রিগ্রেশন চ্যানেল কৌশলটির কেন্দ্রবিন্দু হ’ল নির্দিষ্ট সংখ্যক কে-রুট কে লাইনের সমাপ্তি মূল্যের লিনিয়ার রিগ্রেশন সমীকরণটি গণনা করা, যা মধ্যম লাইনটি দামের মধ্যবর্তী ডিজিটের প্রতিনিধিত্ব করে, দামের উপরের সীমার উপরের ট্র্যাকটি এবং দামের নীচের সীমার নীচের ট্র্যাকটি। নিম্নলিখিত গণনা প্রক্রিয়াটি রয়েছেঃ
ইনপুট প্যারামিটার দৈর্ঘ্য দ্বারা নির্ধারিত K রুট K লাইনের স্বাধীন পরিবর্তনশীল x এবং নির্ভরশীল পরিবর্তনশীল y সংগ্রহ করুন। এখানে x হল 1 থেকে দৈর্ঘ্য পর্যন্ত পূর্ণসংখ্যা, এবং y হল সংশ্লিষ্ট K লাইনের ক্লোজ-আপ মূল্য।
রিগ্রেশন ফ্যাক্টর গণনা করুনঃ
প্রতিটি K লাইন জন্য y’র মানক বিভাজক STDDEV এর সাথে সামঞ্জস্যপূর্ণ লিনিয়ার রিগ্রেশন গণনা করুন
মধ্যম রেখা হল y’=mx+b এর প্রত্যাবর্তন সমীকরণ, এবং উপরের এবং নীচের ট্র্যাকগুলি মধ্যম রেখার উপরে এবং নীচে একটি মানক পার্থক্যের গুণিতক স্থান বহন করে।
নতুন K লাইন আসার সাথে সাথে, উপরের গণনাটি আপডেট করা হয়, যা উপরের এবং নীচের অভিযোজিত চ্যানেল গঠন করে। চ্যানেলের উপরের এবং নীচের রেলের ক্রস অনুসারে আরও খালি করা হয়, মাঝের লাইনের কাছাকাছি ক্ষতি বন্ধ করা হয়।
স্বনির্ধারিত লিনিয়ার রিগ্রেশন চ্যানেল কৌশলটি ঐতিহ্যগত গড়রেখার কৌশলগুলির তুলনায় নিম্নলিখিত সুবিধাগুলি রয়েছেঃ
আরো বৈজ্ঞানিক, যুক্তিসঙ্গত, রিগ্রেশন বিশ্লেষণ মডেল গড় রেখার চেয়ে বেশি পরিসংখ্যানগত অর্থপূর্ণ
আরও নমনীয়, দামের পরিবর্তনের সাথে সাথে চ্যানেলের পরিধি স্বয়ংক্রিয়ভাবে সামঞ্জস্য হবে
কিছু প্রজাতির ক্ষেত্রে, সমান্তরাল কৌশলগুলির চেয়ে স্পষ্টভাবে ভাল
ল্যাব টেস্টিং ভাল হয়েছে, ল্যাব টেস্টিংয়ে সন্তোষজনক
এই কৌশলটি নিম্নলিখিত ঝুঁকির সাথে জড়িতঃ
দামের অত্যধিক অস্থিরতার ফলে প্রচুর ক্ষতি হয়। সমাধানটি হল স্টপ লস সেট করা এবং প্যারামিটারগুলি অপ্টিমাইজ করা।
ট্র্যাকিংয়ের ক্ষেত্রে, ভুল রুটের কারণে ট্র্যাকিং কার্যকর হয় না। সমাধানটি হল প্যারামিটারগুলিকে অন্য প্রযুক্তিগত সূচকগুলির সাথে একত্রিত করা।
রিটার্নিং কার্যকারিতা ভাল বলে মনে হচ্ছে, কিন্তু রিয়েল-ডিস্ক কার্যকারিতা দুর্বল। সমাধানটি হল প্যারামিটারগুলি সামঞ্জস্য করা এবং পুরোপুরি যাচাই করা।
এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে আরও উন্নত করা যেতে পারেঃ
সর্বোত্তম বিকল্পের জন্য আরও কিছু প্যারামিটার পরীক্ষা করুন
অন্যান্য প্রযুক্তিগত সূচকগুলির সাথে সংযুক্ত হয়ে তীব্র গতির সময় সংকেত ত্রুটি এড়ানো
ক্ষতির ঝুঁকি নিয়ন্ত্রণ এবং তহবিল সুরক্ষার জন্য ক্ষতি প্রতিরোধের কৌশল বাড়ানো
পজিশন ম্যানেজমেন্ট মডিউল যোগ করা, বাজারের অবস্থার উপর ভিত্তি করে পজিশনের আকার পরিবর্তন করা
স্বনির্ধারিত লিনিয়ার রিটার্ন চ্যানেল কৌশলটি সামগ্রিকভাবে একটি কার্যকর পরিমাণগত কৌশল। এটির তত্ত্বগত ভিত্তি শক্তিশালী, ব্যবহারিক কার্যকারিতা ভাল, এটি আরও গবেষণা এবং অপ্টিমাইজেশনের জন্য উপযুক্ত, এটি একটি পরিমাণগত ব্যবসায়ের সিস্টেমের কার্যকর উপাদান হতে পারে। তবে এর সীমাবদ্ধতা, ঝুঁকি প্রতিরোধ এবং সতর্কতার সাথে অনুশীলন করাও প্রয়োজন।
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("Stealthy 7 Linear Regression Channel Strategy", overlay=true)
source = open
length = input(100, minval=1)
mult1 = input(1, minval=0.001, maxval=50)
mult2 = input(1, minval=0.001, maxval=50)
DayTrader = input(title="Range Mode", type=bool, defval=false)
//Making the first least squares line
sum_x = length * (length + 1) / 2
sum_y = 0
sum_xy = 0
xyproductsum = 0
sum_xx = 0
for i = 1 to length
sum_y := sum_y + close[i]
sum_xy := i * close[i] + sum_xy
sum_xx := i * i + sum_xx
m = (length*sum_xy - (sum_x * sum_y)) / (length * sum_xx - (sum_x * sum_x))
b = sum_y / length - (m * sum_x / length)
//Finding the first standard deviation from the line
difference = 0
for i = 1 to length
y = i * m + b
difference := pow(abs(close[i] - y),2) + difference
STDDEV = sqrt(difference / length)
//Creating trading zones
dev = mult1 * STDDEV
dev2 = mult2 * STDDEV
upper = b + dev
lower = b - dev2
middle = b
if DayTrader == false
if crossover(source, upper)
strategy.entry("RGLONG", strategy.long, oca_name="RegChannel", comment="RegLong")
else
strategy.cancel(id="RGLONG")
if crossunder(source, lower)
strategy.entry("RGSHORT", strategy.short, oca_name="RegChannel", comment="RegShort")
else
strategy.cancel(id="RGSHORT")
if crossover(source, middle) and strategy.position_size < 0
strategy.close_all()
if crossunder(source,middle) and strategy.position_size > 0
strategy.close_all()
if DayTrader == true
if crossover(source, lower)
strategy.entry("RGLONG", strategy.long, oca_name="RegChannel", comment="RegLong")
else
strategy.cancel(id="RGLONG")
if crossunder(source, upper)
strategy.entry("RGSHORT", strategy.short, oca_name="RegChannel", comment="RegShort")
else
strategy.cancel(id="RGSHORT")
plot(upper, title="UpperBand", color=purple, linewidth=1, style=line)
plot(lower, title="LowerBand", color=purple, linewidth=1, style=line)
plot(middle, title="MiddleBand", color=black, linewidth=1, style=line)