
আরএসআই ট্রেন্ড রিভার্স কৌশলটি একটি পরিমাণগত ট্রেডিং কৌশল যা তুলনামূলকভাবে দুর্বল সূচক (আরএসআই) এবং গড় বাস্তব তরঙ্গদৈর্ঘ্য (এটিআর) এর উপর ভিত্তি করে। এই কৌশলটি গতিশীলভাবে স্টপ লস (টিপি / এসএল) সামঞ্জস্য করে দ্রুত বাজার ওঠানামা করার জন্য, ট্রেন্ড রিভার্স সুযোগ ক্যাপচার করার জন্য। এই কৌশলটি আরএসআইকে কেন্দ্র করে, এটিআর পরিমাপ করে, নিম্নলিখিত দুটি স্বতঃস্ফূর্ত গতিশীল ব্যাপ্তিকে পজিশন খোলার ভিত্তিতে ব্যবহার করে। এই কৌশলটি স্বতন্ত্রভাবে ব্যবহার করা যেতে পারে বা অন্যান্য কৌশলগুলির স্টপ লস মডিউল হিসাবে কাজ করতে পারে। টেসলা (টিএসএলএ), অ্যাপল (এএপিএল), ভায়াদা (এনভিডিএ) ইত্যাদি শেয়ারের জন্য 15 মিনিটের স্তরের ডেটা পরিমাপ করা হয়েছে।
আরএসআই ট্রেন্ড রিভার্সনের কৌশলটির মূল বিষয় হল গতিশীল স্টপ-অফ-স্টপ-ড্রপ ব্যান্ড তৈরি করা। প্রথমে কাস্টমাইজড সর্বোচ্চ_কাস্টম এবং সর্বনিম্ন_কাস্টম ফাংশনগুলি ব্যবহার করে সর্বশেষ ক্রস থেকে সর্বোচ্চ এবং সর্বনিম্ন দামগুলি খুঁজে বের করা হয়, যা একটি ব্যাপ্তি ভিত্তি তৈরি করে। তারপরে যথাক্রমে RSI এবং ATR এর দৈর্ঘ্য গণনা করা হয় এবং নিম্নলিখিত হিসাবে গণনা করা হয়ঃ
এর মধ্যে একটি multiplier ব্যবহারকারীর কাস্টমাইজড তরঙ্গদলের জন্য বর্ধিতকরণ ফ্যাক্টর। যদি দাম উপরে উঠে যায় তবে আরও বেশি করে, নীচে নেমে গেলে নীচের ট্র্যাকটি খালি করে। এবং এই দুটি ব্যান্ডের রঙও দামের তুলনামূলক তরঙ্গদলের অবস্থানের উপর নির্ভর করে পরিবর্তিত হয়, এটি পর্যবেক্ষণ করা সহজ।
আরএসআই ট্রেন্ড রিভার্স কৌশলটি আরএসআই এবং এটিআর ব্যবহার করে স্ব-অনুকূলিতকরণ ব্যাপ্তি তৈরি করতে সক্ষম, বাজারের পরিবর্তনের সময়মত প্রতিক্রিয়া জানাতে সক্ষম। এই কৌশলটির লজিক পরিষ্কার, প্রয়োগের বিস্তৃত এবং এটি পরিমাণ ব্যবসায়ীদের জন্য একটি শক্তিশালী হাতিয়ার হিসাবে কাজ করতে পারে। তবে বাস্তবে ব্যবহারের ক্ষেত্রে প্যারামিটার নির্বাচন এবং ঝুঁকি নিয়ন্ত্রণে মনোযোগ দেওয়া প্রয়োজন এবং সামগ্রিক পারফরম্যান্স বাড়ানোর জন্য অন্যান্য সূচক সংকেত প্যাকেজের সাথে ব্যবহার করার পরামর্শ দেওয়া হয়। কৌশলটিতে আরও অপ্টিমাইজেশনের জায়গা রয়েছে, যেমন ট্রেন্ড ফিল্টার যুক্ত করা, প্যারামিটার সন্ধান করা ইত্যাদি।
/*backtest
start: 2023-04-22 00:00:00
end: 2024-04-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("RSI Trend Reversal", overlay=true, max_bars_back = 4999, calc_on_every_tick = false)
//INPUTS
rsi_length = input.int(title = "Lenght", defval = 8)
rsi_mult = input.float(title = "Multiplier", defval = 1.5, step = .05)
lookback = input.int(title = "Delay to prevent idealization", defval = 1)
sltp = input.float(title = "Minimum Difference", defval = 10)
src = input.source(title = "Source Input", defval = close)
//PARAMETERS INITILIZATION
hclose = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, src)
//FUNCTION INITILIZATION
highest_custom(src, length) =>
x = src
for i = 0 to length
if src[i] > x
x := src[i]
x
lowest_custom(src, length) =>
x = src
for i = 0 to length
if src[i] < x
x := src[i]
x
rsilev(src, length, mult, sltp) =>
sl = (100 - sltp) / 100
tp = (100 + sltp) / 100
var bool crossup = na
var bool crossdown = na
var float dir = na
dir_change = ta.change(dir)
var float BearGuy = 0
BullGuy = ta.barssince(crossup or crossdown)
if na(BullGuy)
BearGuy += 1
else
BearGuy := BullGuy
var float upper = na
var float lower = na
rsilower = ta.rsi(src, length)
rsiupper = math.abs(ta.rsi(src, length) - 100)
atr = ta.atr(length) / src
lower := highest_custom(math.max(highest_custom(highest_custom(src, BearGuy) * (1 - (atr + ((1 / (rsilower) * mult)))), BearGuy), src * sl), BearGuy)
upper := lowest_custom(math.min(lowest_custom(lowest_custom(src, BearGuy) * (1 + (atr + ((1 / (rsiupper) * mult)))), BearGuy), src * tp), BearGuy)
var float thresh = na
if na(thresh)
thresh := lower
if na(dir)
dir := 1
if crossdown
dir := -1
if crossup
dir := 1
if dir == 1
thresh := lower
if dir == -1
thresh := upper
crossup := ta.crossover(src, thresh)
crossdown := ta.crossunder(src, thresh)
thresh
rsiclose = rsilev(hclose, rsi_length, rsi_mult, sltp)
//PLOTTING
var color col = color.lime
if hclose > rsiclose
col := color.lime
if hclose < rsiclose
col := color.red
plot(rsiclose, linewidth = 2, color = col)
//STRATEGY
buy = ta.crossover(hclose, rsiclose)
sell = ta.crossunder(hclose, rsiclose)
if buy[lookback]
strategy.entry("long", strategy.long)
if sell[lookback]
strategy.entry("Short", strategy.short)