
সমান্তরাল রিটার্ন ট্রেডিং কৌশলটি শেয়ারের দামের লিনিয়ার রিটার্ন লাইন এবং সমান্তরাল লাইনের ক্রস দ্বারা ক্রয় এবং বিক্রয় সংকেত সিদ্ধান্ত নেওয়ার জন্য। এই কৌশলটি সমান্তরাল এবং লিনিয়ার রিটার্ন বিশ্লেষণের সাথে মিলিত হয়, যা শেয়ারের দামের প্রবণতা এবং পরিসংখ্যানগত বৈশিষ্ট্য উভয়কেই বিবেচনা করে, যা শেয়ারের দামের বিপরীত দিকটি কার্যকরভাবে নির্ধারণ করতে পারে, যাতে কম কেনা বেচা সম্ভব হয়।
এই কৌশলটি প্রথমে n দিনের শেয়ারের দামের জন্য একটি লিনিয়ার রিটার্ন লাইন এবং m দিনের গড় লাইন গণনা করে। লিনিয়ার রিটার্ন লাইনটি শেয়ারের দামের দীর্ঘমেয়াদী পরিসংখ্যানগত প্রবণতা প্রতিফলিত করে এবং গড় লাইনটি শেয়ারের দামের স্বল্পমেয়াদী চলাচলকে প্রতিফলিত করে।
যখন গড়ের উপরে লিনিয়ার রিগ্রেশন লাইনটি অতিক্রম করে, তখন শেয়ারের দাম বাড়ার গতি বাড়ায়, একটি কেনার সংকেত তৈরি করে। যখন গড়ের নীচে লিনিয়ার রিগ্রেশন লাইনটি অতিক্রম করে, তখন শেয়ারের দাম দুর্বল হয়, একটি বিক্রয় সংকেত তৈরি করে।
বিশেষ করে, কৌশলটি নিম্নলিখিত পদক্ষেপগুলি দ্বারা ট্রেডিং সিগন্যালগুলি বিচার করেঃ
লিনিয়ার রিগ্রেশন লাইন LRLine
m-দিনের সরল চলমান গড় LRMA গণনা করুন
শেয়ারের দাম গণনা করার জন্য m-দিনের সূচক
যখন ইমা LRMA ব্যবহার করে, তখন longEntry ক্রয় সংকেত উৎপন্ন হয়
যখন ইমা এলআরএমএ-তে প্রবেশ করে, তখন এটি একটি লংএক্সিট বিক্রয় সংকেত তৈরি করে
বিজনেস ডেস্কঃ ‘বিজনেস ডেস্ক’ (বিজেডি) -এর এক প্রতিবেদনে বলা হয়েছে, ‘বিজেডি’র মূল্যায়ন অনুযায়ী, বিজনেস ডেস্ক যখন ‘বুল মার্কেট’ হয়, তখনই কেনাকাটা করার পরামর্শ দেওয়া হয়।
সিগন্যালের মাধ্যমে ক্রয়-বিক্রয় লেনদেন
গড় লাইন এবং রিগ্রেশন লাইনের ক্রস দ্বারা ক্রয়-বিক্রয় নির্ধারণের সময় নির্ধারণ করে, আপনি কার্যকরভাবে জাল-ব্রেকিং ফিল্টার করতে এবং বিপরীত দিকটি ধরতে পারেন, যাতে কম কিনতে এবং উচ্চ বিক্রয় করতে পারেন।
প্যারামিটার সমন্বয়, যথাযথভাবে গড় লাইন এবং রিগ্রেশন লাইন চক্রের প্যারামিটার বাড়ানো, ট্রেডিং ফ্রিকোয়েন্সি হ্রাস করা। যুক্তিসঙ্গতভাবে স্টপ লস কৌশল নিয়ন্ত্রণ ঝুঁকি সেট করুন। বড় পয়েন্টের বিচার বিধিগুলি অনুকূলিত করুন, নির্ভুলতা বাড়ান।
এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে উন্নত করা যেতে পারেঃ
গড়রেখার সূচক অপ্টিমাইজেশানঃ বিভিন্ন ধরণের গড়রেখার চেষ্টা করুন, যেমন ভারী চলমান গড়, এই স্টকটির জন্য সর্বোত্তম গড়রেখার সন্ধান করতে।
রিটার্ন লাইন অপ্টিমাইজেশানঃ রিটার্ন লাইন গণনা চক্রটি সামঞ্জস্য করে এমন একটি চক্রের প্যারামিটার সন্ধান করুন যা এই স্টকটির দীর্ঘমেয়াদী প্রবণতা সর্বাধিক প্রতিফলিত করে।
বড় বাজার সিদ্ধান্তের অপ্টিমাইজেশানঃ বিভিন্ন বড় বাজার সিদ্ধান্তের সূচক পরীক্ষা করে, কৌশলটির জন্য সবচেয়ে উপযুক্ত বড় বাজার সংকেত খুঁজুন।
প্যারামিটার অপ্টিমাইজেশানঃ বিভিন্ন প্যারামিটার সমন্বয় দ্বারা বারবার পুনরাবৃত্তি, সর্বোত্তম প্যারামিটার কনফিগারেশন খুঁজুন।
স্টপ লস স্ট্র্যাটেজি অপ্টিমাইজেশনঃ বিভিন্ন স্টপ লস পদ্ধতি পরীক্ষা করুন এবং ঝুঁকি নিয়ন্ত্রণের জন্য সর্বোত্তম স্টপ লজিক সেট করুন।
লেনদেনের খরচ অপ্টিমাইজেশানঃ লেনদেনের খরচ কমানোর জন্য লেনদেনের ফ্রিকোয়েন্সি বিভিন্ন লেনদেনের ফি মডেলের সাথে সামঞ্জস্য করুন।
উপরের কয়েকটি পয়েন্ট অপ্টিমাইজ করার মাধ্যমে, কৌশলটির স্থিতিশীলতা এবং রিটার্নের হার আরও বাড়ানো যেতে পারে।
এই সমান্তরাল রিটার্ন ট্রেডিং কৌশল সমান্তরাল সমান্তরাল বিশ্লেষণ এবং লিনিয়ার রিটার্ন বিশ্লেষণের সুবিধাগুলি কার্যকরভাবে শেয়ারের দামের বিপরীত দিকগুলি সনাক্ত করতে পারে এবং কম কেনা বেচাকেনা নির্দেশ করতে পারে। কৌশলটি সহজ এবং নির্ভরযোগ্য, মধ্যম এবং দীর্ঘ লাইন বিকল্প স্টক ট্রেডিংয়ের জন্য উপযুক্ত। প্যারামিটার অপ্টিমাইজেশন এবং ঝুঁকি নিয়ন্ত্রণের মাধ্যমে কৌশলটির স্থায়িত্ব আরও বাড়ানো যেতে পারে। এই কৌশলটি শেয়ার বাজার বিশ্লেষণের জন্য একটি কার্যকর প্রযুক্তিগত ব্যবসায়ের সমাধান সরবরাহ করে।
/*backtest
start: 2022-10-18 00:00:00
end: 2023-10-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © lazy_capitalist
//@version=5
strategy('Linear Regression MA', overlay=true, initial_capital=10000)
datesGroup = "Date Info"
startMonth = input.int(defval = 1, title = "Start Month", minval = 1, maxval = 12, group=datesGroup)
startDay = input.int(defval = 1, title = "Start Day", minval = 1, maxval = 31, group=datesGroup)
startYear = input.int(defval = 2022, title = "Start Year", minval = 1970, group=datesGroup)
averagesGroup = "Averages"
lrLineInput = input.int(title="Linear Regression Line", defval=55, minval = 1, group=averagesGroup)
lrMAInput = input.int(title="Linear Regression MA", defval=55, minval = 1, group=averagesGroup)
emaInput = input.int(title="EMA Length", defval=55, minval = 1, group=averagesGroup)
tradesGroup = "Execute Trades"
executeLongInput = input.bool(title="Execute Long Trades", defval=true)
executeShortInput = input.bool(title="Execute Short Trades", defval=true)
executeStopLoss = input.bool(title="Execute Stop Loss", defval=true)
fourHrSMAExpr = ta.sma(close, 200)
fourHrMA = request.security(symbol=syminfo.tickerid, timeframe="240", expression=fourHrSMAExpr)
bullish = close > fourHrMA ? true : false
maxProfitInput = input.float( title="Max Profit (%)", defval=10.0, minval=0.0) * 0.01
stopLossPercentageInput = input.float( title="Stop Loss (%)", defval=1.75, minval=0.0) * 0.01
start = timestamp(startYear, startMonth, startDay, 00, 00) // backtest start window
window() => time >= start ? true : false // create function "within window of time"
showDate = input(defval = true, title = "Show Date Range")
lrLine = ta.linreg(close, lrLineInput, 0)
lrMA = ta.sma(lrLine, lrMAInput)
ema = ta.ema(close, emaInput)
longEntry = ema < lrMA
longExit = lrMA < ema
shortEntry = lrMA < ema
shortExit = ema < lrMA
maxProfitLong = strategy.opentrades.entry_price(0) * (1 + maxProfitInput)
maxProfitShort = strategy.opentrades.entry_price(0) * (1 - maxProfitInput)
stopLossPriceShort = strategy.position_avg_price * (1 + stopLossPercentageInput)
stopLossPriceLong = strategy.position_avg_price * (1 - stopLossPercentageInput)
if(executeLongInput and bullish)
strategy.entry( id="long_entry", direction=strategy.long, when=longEntry and window(), qty=10, comment="long_entry")
strategy.close( id="long_entry", when=longExit, comment="long_exit")
// strategy.close( id="long_entry", when=maxProfitLong <= close, comment="long_exit_mp")
if(executeShortInput and not bullish)
strategy.entry( id="short_entry", direction=strategy.short, when=shortEntry and window(), qty=10, comment="short_entry")
strategy.close( id="short_entry", when=shortExit, comment="short_exit")
// strategy.close( id="short_entry", when=maxProfitShort <= close, comment="short_exit_mp")
if(strategy.position_size > 0 and executeStopLoss)
strategy.exit( id="long_entry", stop=stopLossPriceLong, comment="exit_long_SL")
strategy.exit( id="short_entry", stop=stopLossPriceShort, comment="exit_short_SL")
// plot(series=lrLine, color=color.green)
plot(series=lrMA, color=color.red)
plot(series=ema, color=color.blue)