লিনিয়ার রিগ্রেশন এবং মুভিং এভারেজের উপর ভিত্তি করে ট্রেন্ড ফলোয়িং ট্রেডিং কৌশল


সৃষ্টির তারিখ: 2023-12-18 17:34:29 অবশেষে সংশোধন করুন: 2023-12-18 17:34:29
অনুলিপি: 4 ক্লিকের সংখ্যা: 890
1
ফোকাস
1621
অনুসারী

লিনিয়ার রিগ্রেশন এবং মুভিং এভারেজের উপর ভিত্তি করে ট্রেন্ড ফলোয়িং ট্রেডিং কৌশল

ওভারভিউ

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

কৌশল নাম

Trend Following Regression Trading Strategy (ট্রেন্ড ফলোিং রিগ্রেশন ট্রেডিং স্ট্র্যাটেজি)

কৌশল নীতি

এই কৌশলটিতে নিম্নলিখিত কয়েকটি গুরুত্বপূর্ণ অংশ রয়েছেঃ

  1. N দিনের সরল চলমান গড় গণনা করুন (এসএমএ)
  2. সাম্প্রতিকতম N দিনের জন্য লিনিয়ার রিগ্রেশন লাইন গণনা করুন
  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))