ডায়নামিক মম্পটম আরএসআই কৌশল

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

সারসংক্ষেপ

এই কৌশলটির মূল ধারণাটি হল RSI সূচকের মসৃণ সময়কে গতিশীল করা, এটি স্বয়ংক্রিয়ভাবে মূল্য এবং গতির মধ্যে সম্পর্কের উপর ভিত্তি করে সামঞ্জস্য করা, যার ফলে RSI সূচকের উপযোগিতা বৃদ্ধি পায়।

কৌশলগত যুক্তি

কৌশলটি প্রথমে মূল্যের গতিবেগ গণনা করে, তারপরে মূল্য এবং গতির মধ্যে সম্পর্ক সহগ গণনা করে। যখন সম্পর্ক সহগ 1 এর কাছাকাছি হয়, এর অর্থ হল দাম এবং গতি অত্যন্ত ইতিবাচকভাবে সম্পর্কিত। যখন সম্পর্ক সহগ -1-এর কাছাকাছি হয়, এর অর্থ হল দাম এবং গতি অত্যন্ত নেতিবাচকভাবে সম্পর্কিত।

মূল্য এবং গতির মধ্যে সম্পর্ক ভিত্তিতে, আরএসআই সূচকের মসৃণতা সময়কাল সামঞ্জস্য করা যেতে পারে। যখন সম্পর্ক উচ্চ, একটি ছোট আরএসআই সময়কাল ব্যবহার করা হয়। যখন সম্পর্ক কম, একটি দীর্ঘ আরএসআই সময়কাল ব্যবহার করা হয়।

বিশেষত, এই কৌশলটি ডিফল্টরূপে আরএসআই সময়ের পরিসীমা 20-50 এ সেট করে। মূল্য এবং গতির মধ্যে সম্পর্ক সহগ গণনা করার পরে, এটি চূড়ান্ত আরএসআই মসৃণকরণ সময় হিসাবে 20-50 পরিসরে সম্পর্ক সহগ ম্যাপ করতে রৈখিক ম্যাপিং ব্যবহার করে।

এটি বাজারের অবস্থার উপর ভিত্তি করে আরএসআই পরামিতিগুলি স্বয়ংক্রিয়ভাবে সামঞ্জস্য করার অনুমতি দেয়। যখন দামের পরিবর্তনগুলি গতির পরিবর্তনের সাথে দৃ strongly়ভাবে সম্পর্কিত হয়, তখন এটিকে আরও সংবেদনশীল করার জন্য একটি স্বল্প-অবধি আরএসআই ব্যবহার করা হয়। যখন সম্পর্কটি দুর্বল হয়, সিগন্যালে গোলমালের প্রভাব হ্রাস করার জন্য একটি দীর্ঘ-অবধি আরএসআই ব্যবহার করা হয়।

সুবিধা বিশ্লেষণ

  • ডায়নামিক প্যারামিটার সমন্বয় বাজারের পরিবর্তনের সাথে সামঞ্জস্য করে
  • নির্দিষ্ট সময়ের সূচকগুলির সীমাবদ্ধতা এড়ানো
  • মসৃণতা সময় স্বয়ংক্রিয়ভাবে অপ্টিমাইজ করা হয়, কোন প্রয়োজন ম্যানুয়ালি সেরা পরামিতি নির্বাচন করুন
  • বিভিন্ন পণ্যের জন্য কনফিগারযোগ্য আরএসআই পিরিয়ড ব্যাপ্তি কাজ করে

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

  • ক্যারলেশন গণনা নিজেই বিলম্ব প্রবর্তন করে, মূল্য পাল্টা পয়েন্ট মিস করতে পারে
  • শুধুমাত্র মূল্য-উদ্দীপনা সম্পর্ক বিবেচনা করা খুব সহজ, অন্যান্য কারণগুলি উপেক্ষা করে
  • ডিফল্ট আরএসআই সময়সীমা সমস্ত পণ্যের জন্য উপযুক্ত নাও হতে পারে, অপ্টিমাইজেশান প্রয়োজন
  • আরএসআই সময়কাল সামঞ্জস্য করার জন্য অস্থিরতার মতো অন্যান্য কারণগুলি অন্তর্ভুক্ত করার বিষয়টি বিবেচনা করুন

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

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

সংক্ষিপ্তসার

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


/*backtest
start: 2023-09-06 00:00:00
end: 2023-10-06 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=5
strategy("Dynamic RSI Momentum", "DRM Strategy", process_orders_on_close = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 50 )

// +++++++++++++++++++++
// ++      INPUT      ++ 
// +++++++++++++++++++++

// Momentum
len = input.int(10, "Momentum Length", 1,      group = "Dynamic RSI Momentum")
src = input.source(close, "Source",   group = "Dynamic RSI Momentum")

min_rsi = input.int(20, "Min RSI", group = "Dynamic RSI Momentum")
max_rsi = input.int(50, "Max RSI", group = "Dynamic RSI Momentum")

upLvl = input.float(70, "OverBought", 0, 100, group = "Dynamic RSI Momentum")
dnLvl = input.float(30, "OverSold",   0, 100, group = "Dynamic RSI Momentum")

// +++++++++++++++++++++
// ++   CALCULATION   ++ 
// +++++++++++++++++++++

// RMA Function
rmaFun(src, len) =>
    sma   = ta.sma(src, len) 
	alpha = 1/len
	sum   = 0.0
	sum  := na(sum[1]) ? sma : alpha * src + (1 - alpha) * nz(sum[1])

// RSI Function 
rsiFun(src, len) =>     
    100 - 100 / (1 + rmaFun(src - src[1] > 0 ? src - src[1] : 0, len) / 
                     rmaFun(src[1] - src > 0 ? src[1] - src : 0, len))

// Momentum
momVal = src - src[len]

// Calculation Price vs Momentum
corr  = ta.correlation(src, momVal, len)
corr := corr > 1 or corr < -1 ? float(na) : corr

rsiLen = 0
rsiLen := int(min_rsi + nz(math.round((1 - corr) * (max_rsi-min_rsi) / 2, 0), 0))

rsiMom = rsiFun(src, rsiLen)


// +++++++++++++++++++++
// ++    STRATEGY     ++ 
// +++++++++++++++++++++

long  = ta.crossover(rsiMom, dnLvl)
short = ta.crossunder(rsiMom, upLvl) 


// +++> Long <+++++
if long and not na(rsiMom)
    strategy.entry("Long", strategy.long)

// +++> Short <+++++
if short and not na(rsiMom)
    strategy.entry("Short", strategy.short)

// +++++++++++++++++++++
// ++      PLOT       ++ 
// +++++++++++++++++++++

plot(rsiMom, "Dynamic RSI Momentum", rsiMom < dnLvl ? color.green : rsiMom > upLvl ? color.red : color.yellow)

hline(50, "Mid Line", color.gray)

upperLine = hline(upLvl, "Upper Line", color.gray)
lowerLine = hline(dnLvl, "Lower Line", color.gray)
fill(upperLine, lowerLine, color.new(color.purple, 90), "Background Fill")



আরো