এই কৌশলটির মূল ধারণাটি হল RSI সূচকের মসৃণ সময়কে গতিশীল করা, এটি স্বয়ংক্রিয়ভাবে মূল্য এবং গতির মধ্যে সম্পর্কের উপর ভিত্তি করে সামঞ্জস্য করা, যার ফলে RSI সূচকের উপযোগিতা বৃদ্ধি পায়।
কৌশলটি প্রথমে মূল্যের গতিবেগ গণনা করে, তারপরে মূল্য এবং গতির মধ্যে সম্পর্ক সহগ গণনা করে। যখন সম্পর্ক সহগ 1 এর কাছাকাছি হয়, এর অর্থ হল দাম এবং গতি অত্যন্ত ইতিবাচকভাবে সম্পর্কিত। যখন সম্পর্ক সহগ -1-এর কাছাকাছি হয়, এর অর্থ হল দাম এবং গতি অত্যন্ত নেতিবাচকভাবে সম্পর্কিত।
মূল্য এবং গতির মধ্যে সম্পর্ক ভিত্তিতে, আরএসআই সূচকের মসৃণতা সময়কাল সামঞ্জস্য করা যেতে পারে। যখন সম্পর্ক উচ্চ, একটি ছোট আরএসআই সময়কাল ব্যবহার করা হয়। যখন সম্পর্ক কম, একটি দীর্ঘ আরএসআই সময়কাল ব্যবহার করা হয়।
বিশেষত, এই কৌশলটি ডিফল্টরূপে আরএসআই সময়ের পরিসীমা 20-50 এ সেট করে। মূল্য এবং গতির মধ্যে সম্পর্ক সহগ গণনা করার পরে, এটি চূড়ান্ত আরএসআই মসৃণকরণ সময় হিসাবে 20-50 পরিসরে সম্পর্ক সহগ ম্যাপ করতে রৈখিক ম্যাপিং ব্যবহার করে।
এটি বাজারের অবস্থার উপর ভিত্তি করে আরএসআই পরামিতিগুলি স্বয়ংক্রিয়ভাবে সামঞ্জস্য করার অনুমতি দেয়। যখন দামের পরিবর্তনগুলি গতির পরিবর্তনের সাথে দৃ strongly়ভাবে সম্পর্কিত হয়, তখন এটিকে আরও সংবেদনশীল করার জন্য একটি স্বল্প-অবধি আরএসআই ব্যবহার করা হয়। যখন সম্পর্কটি দুর্বল হয়, সিগন্যালে গোলমালের প্রভাব হ্রাস করার জন্য একটি দীর্ঘ-অবধি আরএসআই ব্যবহার করা হয়।
ডায়নামিকভাবে আরএসআই মসৃণকরণ সময়ের সমন্বয় করার ধারণাটি শেখার মতো, তবে নির্দিষ্ট বাস্তবায়নের উন্নতির জন্য অনেক জায়গা রয়েছে। মূল বিষয় হ'ল আরএসআই পরামিতি নির্বাচনকে প্রভাবিত করে এমন সিদ্ধান্তমূলক কারণগুলি সনাক্ত করা এবং সেগুলি পরিমাপযোগ্য সূচকগুলিতে রূপান্তর করা। এছাড়াও, কেবলমাত্র মডেলের উপর নির্ভর করবেন না, প্যারামিটার ব্যাপ্তির পরীক্ষামূলক অপ্টিমাইজেশান প্রয়োজন। সামগ্রিকভাবে এটি একটি খুব উদ্ভাবনী ধারণা, আরও অপ্টিমাইজেশন এবং উন্নতির পরে ব্যবহারিক সম্ভাবনার সাথে।
/*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")