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

লেখক:চাওঝাং, তারিখ: ২০২৩-১২-১৮ ১৭ঃ৩৪ঃ২৯
ট্যাগঃ

img

সারসংক্ষেপ

এই কৌশলটি লিনিয়ার রিগ্রেশন লাইন এবং চলমান গড় রেখার উপর ভিত্তি করে একটি সহজ ট্রেডিং সিস্টেম অনুসরণ করে। লিনিয়ার রিগ্রেশন লাইনটি চলমান গড়ের উপরে অতিক্রম করার সময় এটি দীর্ঘ হয় এবং লিনিয়ার রিগ্রেশন লাইনটি নীচে অতিক্রম করার সময় এটি সংক্ষিপ্ত হয়। এদিকে, এটি কিছু ট্রেডিং সংকেত ফিল্টার করার জন্য রিগ্রেশন লাইনের ঢাল ব্যবহার করে এবং কেবল তখনই প্রবেশ করে যখন প্রবণতার দিকটি মেলে।

কৌশল নাম

রিগ্রেশন ট্রেডিং কৌশল অনুসরণ করে প্রবণতা

কৌশল নীতি

এই কৌশলটির মূল উপাদানগুলির মধ্যে রয়েছেঃ

  1. N-দিনের সহজ চলমান গড় (SMA) গণনা করুন
  2. সাম্প্রতিক এন দিনের লিনিয়ার রিগ্রেশন লাইন গণনা করুন
  3. যখন বন্ধের দাম এসএমএ এর উপরে ক্রস করে এবং রিগ্রেশন লাইনের চেয়ে বেশি হয় তখন দীর্ঘ যান
  4. যখন বন্ধের মূল্য এসএমএ এর নিচে অতিক্রম করে এবং রিগ্রেশন লাইনের নিচে থাকে তখন শর্ট যান
  5. স্টপ লস মূল্য এবং লাভের মূল্য সেট করুন

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

স্টপ লস স্টপ লস স্টপ লস স্টপ লস স্টপ লস স্টপ লস স্টপ লস স্টপ লস স্টপ লস স্টপ লস স্টপ লস স্টপ লস স্টপ লস স্টপ লস স্টপ লস স্টপ লস স্টপ লস স্টপ লস স্টপ লস স্টপ লস স্টপ লস

কৌশলটির সুবিধা

এই কৌশলটির নিম্নলিখিত সুবিধা রয়েছে:

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

ঝুঁকি বিশ্লেষণ

এই কৌশলের কিছু ঝুঁকিও রয়েছে:

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

এই ঝুঁকিগুলি সম্পর্কে, আমরা নিম্নলিখিত দিকগুলি থেকে অপ্টিমাইজ করতে পারিঃ

  1. কৌশল স্থগিত করা বা পরিসীমা-সীমাবদ্ধ বাজারে ফিল্টারিংয়ের জন্য অন্যান্য সূচক ব্যবহার করার বিষয়টি বিবেচনা করুন
  2. সর্বোত্তম পরামিতি খুঁজে পেতে ব্যাপকভাবে ব্যাকটেস্ট
  3. স্টপ লস পজিশন অপ্টিমাইজ করুন এবং গতিশীলভাবে সামঞ্জস্য করুন
  4. অর্থনৈতিক তথ্য এবং অন্যান্য মৌলিক কারণকে একত্রিত করুন

অপ্টিমাইজেশান নির্দেশাবলী

কৌশলটি আরও উন্নত করার জন্য প্রধান দিকগুলির মধ্যে রয়েছেঃ

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

সিদ্ধান্ত

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


/*backtest
start: 2023-11-17 00:00:00
end: 2023-12-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Regression Trading Strategy", shorttitle="RTS", overlay=true)

// Input parameters
n = input(14, title="SMA Period")
stop_loss_percentage = input(2, title="Stop Loss Percentage")
take_profit_percentage = input(2, title="Take Profit Percentage")

// Calculate the SMA
sma = sma(close, n)

// Linear regression function
linear_regression(src, length) =>
    sumX = 0.0
    sumY = 0.0
    sumXY = 0.0
    sumX2 = 0.0
    for i = 0 to length - 1
        sumX := sumX + i
        sumY := sumY + src[i]
        sumXY := sumXY + i * src[i]
        sumX2 := sumX2 + i * i
    slope = (length * sumXY - sumX * sumY) / (length * sumX2 - sumX * sumX)
    intercept = (sumY - slope * sumX) / length
    line = slope * length + intercept
    line

// Calculate the linear regression
regression_line = linear_regression(close, n)

// Plot the SMA and regression line
plot(sma, title="SMA", color=color.blue)
plot(regression_line, title="Regression Line", color=color.red)

// Trading strategy conditions
long_condition = crossover(close, sma) and close > regression_line
short_condition = crossunder(close, sma) and close < regression_line

// Exit conditions
stop_loss_price = close * (1 - stop_loss_percentage / 100)
take_profit_price = close * (1 + take_profit_percentage / 100)

// Plot entry and exit points on the chart
plotshape(series=long_condition, title="Long Entry", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=short_condition, title="Short Entry", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
plotshape(series=crossunder(close, stop_loss_price), title="Stop Loss", location=location.abovebar, color=color.red, style=shape.labeldown, text="SL")
plotshape(series=crossover(close, take_profit_price), title="Take Profit", location=location.belowbar, color=color.green, style=shape.labelup, text="TP")

// Strategy orders
strategy.entry("Long", strategy.long, when = long_condition)
strategy.entry("Short", strategy.short, when = short_condition)
strategy.exit("Exit", from_entry = "Long", when = crossover(close, stop_loss_price) or crossover(close, take_profit_price))
strategy.exit("Exit", from_entry = "Short", when = crossunder(close, stop_loss_price) or crossunder(close, take_profit_price))



আরো