লং-শর্ট লিনিয়ার রিগ্রেশন ক্রসওভার কৌশল একটি প্রযুক্তিগত বিশ্লেষণ কৌশল যা একটি স্টক ভবিষ্যতের মূল্য আন্দোলন ভবিষ্যদ্বাণী করার জন্য একটি লিনিয়ার রিগ্রেশন মডেল ব্যবহার করে। কৌশলটির মৌলিক নীতি হলঃ স্টক মূল্য আন্দোলন প্রায়ই একটি নির্দিষ্ট রৈখিক প্রবণতা অনুসরণ করে, এবং মূল্যের রৈখিক রিগ্রেশন গণনা করে, ভবিষ্যতের মূল্য ভবিষ্যদ্বাণী করা যেতে পারে। ভবিষ্যদ্বাণী করা মূল্য বর্তমান মূল্যের উপরে অতিক্রম করলে কৌশলটি দীর্ঘ যায় এবং এটি নীচে অতিক্রম করার সময় অবস্থান থেকে বেরিয়ে আসে।
কৌশলটি প্রথমে একটি নির্দিষ্ট সময়ের মধ্যে স্টক মূল্যের রৈখিক রিগ্রেশন গণনা করে। রৈখিক রিগ্রেশন সর্বনিম্ন বর্গক্ষেত্র পদ্ধতি ব্যবহার করে একটি সোজা রেখায় ফিট করে, যা সময়ের সাথে সাথে দামের পরিবর্তনের প্রবণতা উপস্থাপন করে। কৌশলটি তারপরে পূর্বাভাস মূল্য লাইন এবং চার্টে বর্তমান মূল্য প্লট করে।
কৌশল দুটি সংকেত সংজ্ঞায়িত করেঃ
যখন লং সিগন্যাল প্রদর্শিত হয়, তখন কৌশলটি একটি লং পজিশন খোলে; যখন শর্ট সিগন্যাল প্রদর্শিত হয়, তখন এটি পজিশনটি বন্ধ করে দেয়।
কৌশলটির মূল ধাপগুলো হল:
লং-কর্ট লিনিয়ার রিগ্রেশন ক্রসওভার কৌশল নিম্নলিখিত সুবিধাগুলি রয়েছেঃ
এর অনেক সুবিধা সত্ত্বেও, লং-কর্ট লিনিয়ার রিগ্রেশন ক্রসওভার স্ট্র্যাটেজিতে কিছু ঝুঁকি রয়েছেঃ
লং-শর্ট লিনিয়ার রিগ্রেশন ক্রসওভার কৌশলটি লিনিয়ার রিগ্রেশন এবং বর্তমান মূল্য থেকে পূর্বাভাসিত মূল্যের তুলনার উপর ভিত্তি করে ট্রেডিং সংকেত তৈরি করে। কৌশলটির যুক্তি সহজ এবং পরিষ্কার, এবং এটি মূল্যের রৈখিক প্রবণতা ক্যাপচার করতে পারে এবং বিভিন্ন বাজারের অবস্থার জন্য প্রযোজ্য। একই সাথে, কৌশলটি বাস্তবায়ন এবং অনুকূলিতকরণ করা সহজ, এবং পরামিতিগুলি নমনীয়ভাবে সামঞ্জস্য করা যেতে পারে, অন্যান্য সূচকগুলির সাথে মিলিত, ঝুঁকি নিয়ন্ত্রণ মডিউলগুলি যুক্ত করা যেতে পারে ইত্যাদি, কৌশলটির কার্যকারিতা ক্রমাগত উন্নত করতে। তবে কৌশলটিতে ভুল প্রবণতা স্বীকৃতি, অনুপযুক্ত প্যারামিটার সেটিং এবং historicalতিহাসিক ডেটার ওভারফিটিংয়ের মতো ঝুঁকিও রয়েছে, তাই ব্যবহারিক প্রয়োগে সতর্কতার প্রয়োজন। সামগ্রিকভাবে, লং-শর্ট লিনিয়ার রিগ্রেশন ক্রসওভার কৌশলটি একটি সহজ এবং কার্যকর পরিমাণগত ট্রেডিং কৌশল যা আরও অন্বেষণ এবং অনুকূলিতকরণের মূল্যবান।
/*backtest start: 2024-02-25 00:00:00 end: 2024-03-26 00:00:00 period: 3h basePeriod: 15m 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/ // © stocktechbot //@version=5 strategy("Linear Cross", overlay=true, margin_long=100, margin_short=0) //Linear Regression vol = volume // Function to calculate linear regression linregs(y, x, len) => ybar = math.sum(y, len)/len xbar = math.sum(x, len)/len b = math.sum((x - xbar)*(y - ybar),len)/math.sum((x - xbar)*(x - xbar),len) a = ybar - b*xbar [a, b] // Historical stock price data price = close // Length of linear regression len = input(defval = 21, title = 'Strategy Length') linearlen=input(defval = 9, title = 'Linear Lookback') [a, b] = linregs(price, vol, len) // Calculate linear regression for stock price based on volume //eps = request.earnings(syminfo.ticker, earnings.actual) //MA For double confirmation out = ta.sma(close, 200) outf = ta.sma(close, 50) outn = ta.sma(close, 90) outt = ta.sma(close, 21) outthree = ta.sma(close, 9) // Predicted stock price based on volume predicted_price = a + b*vol // Check if predicted price is between open and close is_between = open < predicted_price and predicted_price < close //MACD //[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9) // Plot predicted stock price plot(predicted_price, color=color.rgb(65, 59, 150), linewidth=2, title="Predicted Price") plot(ta.sma(predicted_price,linearlen), color=color.rgb(199, 43, 64), linewidth=2, title="MA Predicted Price") //offset = input.int(title="Offset", defval=0, minval=-500, maxval=500) plot(out, color=color.blue, title="MA200") [macdLine, signalLine, histLine] = ta.macd(predicted_price, 12, 26, 9) //BUY Signal longCondition=false mafentry =ta.sma(close, 50) > ta.sma(close, 90) //matentry = ta.sma(close, 21) > ta.sma(close, 50) matwohun = close > ta.sma(close, 200) twohunraise = ta.rising(out, 2) twentyrise = ta.rising(outt, 2) macdrise = ta.rising(macdLine,2) macdlong = ta.crossover(predicted_price, ta.wma(predicted_price,linearlen)) and (signalLine < macdLine) if macdlong and macdrise longCondition := true if (longCondition) strategy.entry("My Long Entry Id", strategy.long) //Sell Signal lastEntryPrice = strategy.opentrades.entry_price(strategy.opentrades - 1) daysSinceEntry = len daysSinceEntry := int((time - strategy.opentrades.entry_time(strategy.opentrades - 1)) / (24 * 60 * 60 * 1000)) percentageChange = (close - lastEntryPrice) / lastEntryPrice * 100 //trailChange = (ta.highest(close,daysSinceEntry) - close) / close * 100 //label.new(bar_index, high, color=color.black, textcolor=color.white,text=str.tostring(int(trailChange))) shortCondition=false mafexit =ta.sma(close, 50) < ta.sma(close, 90) matexit = ta.sma(close, 21) < ta.sma(close, 50) matwohund = close < ta.sma(close, 200) twohunfall = ta.falling(out, 3) twentyfall = ta.falling(outt, 2) shortmafall = ta.falling(outthree, 1) macdfall = ta.falling(macdLine,1) macdsell = macdLine < signalLine if macdfall and macdsell and (macdLine < signalLine) and ta.falling(low,2) shortCondition := true if (shortCondition) strategy.entry("My Short Entry Id", strategy.short)