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