आरएसआई ट्रू लेवल ब्रेकआउट रणनीति ब्रेकआउट ट्रेडिंग को लागू करने के लिए आरएसआई संकेतक को अनुकूलन ट्रू लेवल चैनलों के साथ जोड़ती है। यह ट्रू लेवल ऊपरी और निचले बैंड की गणना करता है और ब्रेकआउट ट्रेड उत्पन्न करने के लिए आरएसआई ओवरबॉट / ओवरसोल्ड संकेतों का उपयोग करता है। ट्रेंडिंग बाजारों में, यह जल्दी से प्रवृत्ति की दिशा को पकड़ सकता है। रेंज-बाउंड बाजारों में, यह प्रभावी रूप से शोर को फ़िल्टर कर सकता है और महत्वपूर्ण दिशात्मक अवसरों को पकड़ सकता है।
इस रणनीति के लिए सबसे पहले विभिन्न मापदंडों के साथ 14 ट्रू लेवल बैंड को मैन्युअल रूप से सेट करने की आवश्यकता होती है। ट्रू लेवल की गणना एक निश्चित अवधि में बंद होने की कीमतों, मानक विचलन और रैखिक प्रतिगमन के आधार पर की जाती है। ऊपरी बैंड रैखिक प्रतिगमन + एन मानक विचलन है। निचला बैंड रैखिक प्रतिगमन - एन मानक विचलन है। एन को इनपुट पैनल के माध्यम से समायोजित किया जा सकता है। यह विभिन्न मापदंडों के साथ 14 ट्रू लेवल बैंड प्लॉट करता है।
इसके बाद, रणनीति 14 बैंडों में से उच्चतम को वास्तविक स्तर के ऊपरी बैंड के रूप में, और प्रत्येक अवधि में निचले बैंड के रूप में सबसे कम की गणना करती है। आरएसआई संकेतक मूल्यों के साथ संयुक्त, यह निर्धारित करता है कि क्या आरएसआई ओवरबॉट या ओवरसोल्ड क्षेत्रों में प्रवेश करता है। जब आरएसआई ओवरबोल्ड होता है या कीमत ऊपरी बैंड से नीचे टूट जाती है, तो यह छोटा हो जाता है। जब आरएसआई ओवरसोल्ड होता है या कीमत निचले बैंड से ऊपर टूट जाती है, तो यह लंबा हो जाता है।
अंत में, प्रवेश और निकास बैंड सेट किए जाते हैं। प्रवेश बैंड निचला सच्चा स्तर है और निकास बैंड ऊपरी सच्चा स्तर है। पदों को खोलने के बाद, बाहर निकलने वाले बैंड को फिर से छूने वाली कीमतें ट्रेडों को बंद कर देंगी।
सारांश में, रणनीति प्रभावी रूप से प्रवृत्ति दिशा निर्धारित करने, सीमा-बाधित बाजारों में बड़े अवसरों को पकड़ने और निकास बैंड के साथ जोखिम को नियंत्रित करने के लिए आरएसआई की प्रवृत्ति शक्ति और ट्रू लेवल चैनलों की अनुकूलन क्षमता दोनों का उपयोग करती है।
अनुकूलन योग्य सच्चे स्तर क्षेत्रों का उपयोग करता है। बाजार में उतार-चढ़ाव के अनुकूल ऊपरी और निचले बैंड गतिशील रूप से बदलते हैं।
अनुकूलन योग्य सही स्तर पैरामीटर. उपयोगकर्ता विभिन्न बाजार स्थितियों के लिए मापदंडों का अनुकूलन कर सकते हैं.
साइडवेज बाजारों में विप्सॉव से बचने के लिए ओवरबॉट/ओवरसोल्ड आरएसआई का संयोजन करता है।
उचित प्रवेश और निकास लाइन डिजाइन जोखिम को नियंत्रित करता है।
आरएसआई मापदंडों को सावधानीपूर्वक अनुकूलित करने की आवश्यकता है। गलत मान खराब संकेत उत्पन्न कर सकते हैं।
ट्रू लेवल मापदंडों को परीक्षण और अनुकूलन की आवश्यकता होती है. अनुचित सेटिंग्स प्रदर्शन को कम कर सकती हैं.
जब कीमतें अक्सर बाहर निकलने की सीमा तक पहुंचती हैं, तो अस्थिर बाजारों में उच्च जोखिम होता है।
सही स्तर के बैंडों के गठन के लिए पर्याप्त समय की आवश्यकता होती है। अपर्याप्त डेटा के साथ रणनीति विफल हो सकती है।
आरएसआई मापदंडों को अनुकूलित करके, सही स्तर सेटिंग्स को समायोजित करके, फ़िल्टर जोड़कर और बुद्धिमान निकास का उपयोग करके जोखिमों को कम किया जा सकता है। मापदंडों को विभिन्न बाजार वातावरण के लिए समायोजित किया जाना चाहिए।
सर्वोत्तम सेटिंग्स खोजने के लिए आरएसआई मापदंडों का अनुकूलन करें। विभिन्न आरएसआई अवधि का परीक्षण करें।
वर्तमान बाजारों के लिए सही स्तर के मापदंडों का अनुकूलन करें।
अस्थिर बाजारों में खराब ट्रेडों से बचने के लिए एमएसीडी, केडी जैसे अन्य फिल्टर जोड़ें।
इष्टतम वातावरण खोजने के लिए विभिन्न व्यापारिक समय या उत्पादों का परीक्षण करें।
बाहर निकलने का अनुकूलन करें, जैसे कि पीछे रुकना या एटीआर आधारित रुकना।
अधिकतम स्थिरता के लिए मापदंडों को मिलाएं और परीक्षण करें।
स्वचालित अनुकूलन के लिए मशीन लर्निंग और बड़े डेटा का उपयोग करें।
आरएसआई ट्रू लेवल ब्रेकआउट रणनीति एक प्रवृत्ति संकेतक और अनुकूलनशील चैनलों की ताकतों को जोड़ती है। यह प्रभावी रूप से रुझान की दिशा निर्धारित कर सकता है और स्टॉप लॉस के साथ जोखिम को नियंत्रित करते हुए रेंज-बाउंड बाजारों में बड़े अवसरों को पकड़ सकता है। उच्च पैरामीटर अनुकूलन इसे विभिन्न बाजार स्थितियों के लिए ट्यून करने की अनुमति देता है। कुल मिलाकर, कई संकेतकों को एकीकृत करके, इसका रुझान निर्धारण और जोखिम नियंत्रण में लाभ है। आगे अनुकूलन के साथ, यह एक अनुशंसित मात्रात्मक ट्रेडिंग रणनीति है।
/*backtest start: 2022-11-01 00:00:00 end: 2023-11-07 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Julien_Eche //@version=4 strategy("RSI TrueLevel Strategy", shorttitle="RSI TL", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10) // Input parameters for RSI rsiPeriod = input(14, title="RSI Period", type=input.integer) rsiOverbought = input(65, title="RSI Overbought Level", type=input.integer) rsiOversold = input(40, title="RSI Oversold Level", type=input.integer) // Inputs for selecting bands entry_band = input(12, title="Entry TrueLevel Band", type=input.integer, minval=1, maxval=14) exit_band = input(12, title="Exit TrueLevel Band", type=input.integer, minval=1, maxval=14) // Input for long and short mode long_and_short = input(false, title="Enable Long and Short", type=input.bool) // Calculate the RSI rsi = rsi(close, rsiPeriod) // User inputs len1 = input(title="Length 1", type=input.integer, defval=126) len2 = input(title="Length 2", type=input.integer, defval=189) len3 = input(title="Length 3", type=input.integer, defval=252) len4 = input(title="Length 4", type=input.integer, defval=378) len5 = input(title="Length 5", type=input.integer, defval=504) len6 = input(title="Length 6", type=input.integer, defval=630) len7 = input(title="Length 7", type=input.integer, defval=756) len8 = input(title="Length 8", type=input.integer, defval=1008) len9 = input(title="Length 9", type=input.integer, defval=1260) len10 = input(title="Length 10", type=input.integer, defval=1638) len11 = input(title="Length 11", type=input.integer, defval=2016) len12 = input(title="Length 12", type=input.integer, defval=2646) len13 = input(title="Length 13", type=input.integer, defval=3276) len14 = input(title="Length 14", type=input.integer, defval=4284) fill_color = input(title="Fill Color", type=input.color, defval=color.rgb(0, 191, 255, 95)) mult = input(title="Multiple", type=input.float, defval=1, step=0.2, options=[0.6, 0.8, 1, 1.2, 1.4]) src = input(title="Source", type=input.source, defval=close) // Upper band calculation function upperBand(length) => linreg = linreg(src, length, 0) stddev = mult * stdev(src, length) upperband = linreg + stddev upperband // Lower band calculation function lowerBand(length) => linreg = linreg(src, length, 0) stddev = mult * stdev(src, length) lowerband = linreg - stddev lowerband // Calculate upper and lower bands for each length upperband_1 = upperBand(len1) upperband_2 = upperBand(len2) upperband_3 = upperBand(len3) upperband_4 = upperBand(len4) upperband_5 = upperBand(len5) upperband_6 = upperBand(len6) upperband_7 = upperBand(len7) upperband_8 = upperBand(len8) upperband_9 = upperBand(len9) upperband_10 = upperBand(len10) upperband_11 = upperBand(len11) upperband_12 = upperBand(len12) upperband_13 = upperBand(len13) upperband_14 = upperBand(len14) lowerband_1 = lowerBand(len1) lowerband_2 = lowerBand(len2) lowerband_3 = lowerBand(len3) lowerband_4 = lowerBand(len4) lowerband_5 = lowerBand(len5) lowerband_6 = lowerBand(len6) lowerband_7 = lowerBand(len7) lowerband_8 = lowerBand(len8) lowerband_9 = lowerBand(len9) lowerband_10 = lowerBand(len10) lowerband_11 = lowerBand(len11) lowerband_12 = lowerBand(len12) lowerband_13 = lowerBand(len13) lowerband_14 = lowerBand(len14) // Plot envelope bands for each length upperband_1_plot = plot(upperband_1, color=color.rgb(14, 116, 212, 95), linewidth=1, title="Upper Band 1") lowerband_1_plot = plot(lowerband_1, color=color.rgb(14, 116, 212, 95), linewidth=1, title="Lower Band 1") upperband_2_plot = plot(upperband_2, color=color.rgb(14, 116, 212, 95), linewidth=1, title="Upper Band 2") lowerband_2_plot = plot(lowerband_2, color=color.rgb(14, 116, 212, 95), linewidth=1, title="Lower Band 2") upperband_3_plot = plot(upperband_3, color=color.rgb(14, 116, 212, 95), linewidth=1, title="Upper Band 3") lowerband_3_plot = plot(lowerband_3, color=color.rgb(14, 116, 212, 95), linewidth=1, title="Lower Band 3") upperband_4_plot = plot(upperband_4, color=color.rgb(14, 116, 212, 95), linewidth=1, title="Upper Band 4") lowerband_4_plot = plot(lowerband_4, color=color.rgb(14, 116, 212, 95), linewidth=1, title="Lower Band 4") upperband_5_plot = plot(upperband_5, color=color.rgb(14, 116, 212, 95), linewidth=1, title="Upper Band 5") lowerband_5_plot = plot(lowerband_5, color=color.rgb(14, 116, 212, 95), linewidth=1, title="Lower Band 5") upperband_6_plot = plot(upperband_6, color=color.rgb(14, 116, 212, 95), linewidth=1, title="Upper Band 6") lowerband_6_plot = plot(lowerband_6, color=color.rgb(14, 116, 212, 95), linewidth=1, title="Lower Band 6") upperband_7_plot = plot(upperband_7, color=color.rgb(14, 116, 212, 95), linewidth=1, title="Upper Band 7") lowerband_7_plot = plot(lowerband_7, color=color.rgb(14, 116, 212, 95), linewidth=1, title="Lower Band 7") upperband_8_plot = plot(upperband_8, color=color.rgb(14, 116, 212, 95), linewidth=1, title="Upper Band 8") lowerband_8_plot = plot(lowerband_8, color=color.rgb(14, 116, 212, 95), linewidth=1, title="Lower Band 8") upperband_9_plot = plot(upperband_9, color=color.rgb(14, 116, 212, 95), linewidth=1, title="Upper Band 9") lowerband_9_plot = plot(lowerband_9, color=color.rgb(14, 116, 212, 95), linewidth=1, title="Lower Band 9") upperband_10_plot = plot(upperband_10, color=color.rgb(14, 116, 212, 95), linewidth=1, title="Upper Band 10") lowerband_10_plot = plot(lowerband_10, color=color.rgb(14, 116, 212, 95), linewidth=1, title="Lower Band 10") upperband_11_plot = plot(upperband_11, color=color.rgb(14, 116, 212, 95), linewidth=1, title="Upper Band 11") lowerband_11_plot = plot(lowerband_11, color=color.rgb(14, 116, 212, 95), linewidth=1, title="Lower Band 11") upperband_12_plot = plot(upperband_12, color=color.rgb(14, 116, 212, 95), linewidth=1, title="Upper Band 12") lowerband_12_plot = plot(lowerband_12, color=color.rgb(14, 116, 212, 95), linewidth=1, title="Lower Band 12") upperband_13_plot = plot(upperband_13, color=color.rgb(14, 116, 212, 95), linewidth=1, title="Upper Band 13") lowerband_13_plot = plot(lowerband_13, color=color.rgb(14, 139, 212, 95), linewidth=1, title="Lower Band 13") upperband_14_plot = plot(upperband_14, color=color.rgb(14, 116, 212, 95), linewidth=1, title="Upper Band 14") lowerband_14_plot = plot(lowerband_14, color=color.rgb(14, 139, 212, 95), linewidth=1, title="Lower Band 14") // Plot fills for each length fill(upperband_1_plot, lowerband_1_plot, color=fill_color, title="Fill 1") fill(upperband_2_plot, lowerband_2_plot, color=fill_color, title="Fill 2") fill(upperband_3_plot, lowerband_3_plot, color=fill_color, title="Fill 3") fill(upperband_4_plot, lowerband_4_plot, color=fill_color, title="Fill 4") fill(upperband_5_plot, lowerband_5_plot, color=fill_color, title="Fill 5") fill(upperband_6_plot, lowerband_6_plot, color=fill_color, title="Fill 6") fill(upperband_7_plot, lowerband_7_plot, color=fill_color, title="Fill 7") fill(upperband_8_plot, lowerband_8_plot, color=fill_color, title="Fill 8") fill(upperband_9_plot, lowerband_9_plot, color=fill_color, title="Fill 9") fill(upperband_10_plot, lowerband_10_plot, color=fill_color, title="Fill 10") fill(upperband_11_plot, lowerband_11_plot, color=fill_color, title="Fill 11") fill(upperband_12_plot, lowerband_12_plot, color=fill_color, title="Fill 12") fill(upperband_13_plot, lowerband_13_plot, color=fill_color, title="Fill 13") fill(upperband_14_plot, lowerband_14_plot, color=fill_color, title="Fill 14") // Add variables to store the highest upper band and lowest lower band values var float highestUpperBand = na var float lowestLowerBand = na // Calculate the trueLevelUpperBand and trueLevelLowerBand trueLevelUpperBand = max(upperband_1, max(upperband_2, max(upperband_3, max(upperband_4, max(upperband_5, max(upperband_6, max(upperband_7, max(upperband_8, max(upperband_9, max(upperband_10, max(upperband_11, max(upperband_12, max(upperband_13, upperband_14))))))))))))) trueLevelLowerBand = min(lowerband_1, min(lowerband_2, min(lowerband_3, min(lowerband_4, min(lowerband_5, min(lowerband_6, min(lowerband_7, min(lowerband_8, min(lowerband_9, min(lowerband_10, min(lowerband_11, min(lowerband_12, min(lowerband_13, lowerband_14))))))))))))) // Update the highest upper band and lowest lower band highestUpperBand := highest(trueLevelUpperBand, 1) lowestLowerBand := lowest(trueLevelLowerBand, 1) // Store the upper and lower bands in an array for easy access upperbands = array.new_float(14) lowerbands = array.new_float(14) array.set(upperbands, 0, upperband_1) array.set(upperbands, 1, upperband_2) array.set(upperbands, 2, upperband_3) array.set(upperbands, 3, upperband_4) array.set(upperbands, 4, upperband_5) array.set(upperbands, 5, upperband_6) array.set(upperbands, 6, upperband_7) array.set(upperbands, 7, upperband_8) array.set(upperbands, 8, upperband_9) array.set(upperbands, 9, upperband_10) array.set(upperbands, 10, upperband_11) array.set(upperbands, 11, upperband_12) array.set(upperbands, 12, upperband_13) array.set(upperbands, 13, upperband_14) array.set(lowerbands, 0, lowerband_1) array.set(lowerbands, 1, lowerband_2) array.set(lowerbands, 2, lowerband_3) array.set(lowerbands, 3, lowerband_4) array.set(lowerbands, 4, lowerband_5) array.set(lowerbands, 5, lowerband_6) array.set(lowerbands, 6, lowerband_7) array.set(lowerbands, 7, lowerband_8) array.set(lowerbands, 8, lowerband_9) array.set(lowerbands, 9, lowerband_10) array.set(lowerbands, 10, lowerband_11) array.set(lowerbands, 11, lowerband_12) array.set(lowerbands, 12, lowerband_13) array.set(lowerbands, 13, lowerband_14) // Get the selected bands for entry and exit selected_entry_lowerband = array.get(lowerbands, entry_band - 1) selected_exit_upperband = array.get(upperbands, exit_band - 1) // Entry conditions longCondition = crossover(rsi, rsiOversold) or crossover(close, selected_entry_lowerband) shortCondition = crossunder(rsi, rsiOverbought) or crossunder(close, selected_exit_upperband) if (longCondition) strategy.entry("Long", strategy.long) if (long_and_short and shortCondition) strategy.entry("Short", strategy.short) // Exit conditions exitLongCondition = crossunder(rsi, rsiOverbought) or crossunder(close, selected_exit_upperband) exitShortCondition = crossover(rsi, rsiOversold) or crossover(close, selected_entry_lowerband) strategy.close("Long", when=exitLongCondition) strategy.close("Short", when=long_and_short and exitShortCondition)