
RSI ट्रेंड रिवर्स रणनीति एक मात्रात्मक ट्रेडिंग रणनीति है जो अपेक्षाकृत मजबूत सूचकांक (RSI) और औसत वास्तविक तरंग (ATR) पर आधारित है। यह रणनीति तेजी से बाजार में उतार-चढ़ाव के लिए अनुकूल है, ट्रेंड रिवर्स अवसरों को पकड़ने के लिए गतिशील रूप से स्टॉपलॉस (TP/SL) को समायोजित करती है। यह रणनीति RSI को केंद्र में रखती है, ATR को गतिशीलता को मापने के साथ जोड़ती है, और निम्नलिखित दो अनुकूलन गतिशील बैंडों का निर्माण करती है। यह रणनीति स्वतंत्र रूप से या अन्य रणनीतियों के स्टॉपलॉस मॉड्यूल के रूप में इस्तेमाल की जा सकती है।
RSI ट्रेंड रिवर्स रणनीति का मूल गतिशील स्टॉप-स्टॉप बैंड के निर्माण में निहित है। सबसे पहले, कस्टम उच्चतम_कस्टम और निम्नतम_कस्टम फ़ंक्शन का उपयोग करके, पिछले क्रॉसिंग के बाद से उच्चतम और निम्नतम मूल्य का पता लगाएं, जिससे एक वेव-बैंड आधार बन जाए। इसके बाद RSI और ATR की लंबाई की गणना करें, और फिर निम्नानुसार गणना करेंः
इसमें, multiplier उपयोगकर्ता के अनुकूलित तरंग दैर्ध्य के लिए विस्तार कारक है। यदि कीमत ऊपर की ओर उछलती है, तो अधिक करें, और नीचे की ओर नीचे की ओर खाली करें। साथ ही, इन दो बैंडों का रंग मूल्य के सापेक्ष तरंग दैर्ध्य की स्थिति के आधार पर बदलता है, यह देखने में आसान है।
RSI ट्रेंड रिवर्स रणनीति RSI और ATR का उपयोग करती है, जो बाजार में बदलाव के लिए समय पर स्टॉपलॉस को गतिशील रूप से समायोजित करने के लिए अनुकूलित तरंग दैर्ध्य का निर्माण करती है। रणनीति का तर्क स्पष्ट है, यह व्यापक रूप से लागू होता है, और यह एक शक्तिशाली उपकरण के रूप में कार्य करता है। लेकिन वास्तविक उपयोग में, पैरामीटर चयन और जोखिम नियंत्रण पर ध्यान देना आवश्यक है, और समग्र प्रदर्शन को बढ़ाने के लिए अन्य संकेतक संकेतों के संयोजन के साथ उपयोग करने की सिफारिश की जाती है। रणनीति में और अधिक अनुकूलन के लिए जगह है, जैसे कि ट्रेंड फ़िल्टर, पैरामीटर खोज, आदि शामिल करना। कुल मिलाकर, RSI ट्रेंड रिवर्स रणनीति एक सरल और प्रभावी विचार मार्ग प्रदान करती है।
/*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)