यह ओवरबॉट और ओवरसोल्ड स्तरों को निर्धारित करने के लिए आरएसआई संकेतक का उपयोग करने वाली एक सरल लंबी-केवल रणनीति है। हमने इसे स्टॉप लॉस और टेक प्रॉफिट जोड़कर और केवल तभी रिफॉर्स्टमेंट ट्रेडिंग में एक संभावना मॉड्यूल को एकीकृत करके बढ़ाया जब हालिया लाभदायक व्यापार की संभावना 51% से अधिक या बराबर हो। इसने संभावित खोने वाले ट्रेडों से बचकर रणनीति प्रदर्शन में काफी सुधार किया।
यह रणनीति बाजार के ओवरबॉट और ओवरसोल्ड स्थितियों का न्याय करने के लिए आरएसआई संकेतक का उपयोग करती है। विशेष रूप से, जब आरएसआई ओवरसोल्ड क्षेत्र की निचली सीमा से नीचे पार हो जाता है तो यह लंबा हो जाता है; और जब आरएसआई ओवरसोल्ड क्षेत्र की ऊपरी सीमा से ऊपर पार हो जाता है तो स्थिति बंद हो जाती है। इसके अलावा, हम स्टॉप लॉस और ले लाभ अनुपात सेट करते हैं।
कुंजी यह है कि हमने एक संभावना निर्णय मॉड्यूल को एकीकृत किया है। यह मॉड्यूल हाल की अवधि में लंबे ट्रेडों के लाभदायक प्रतिशत की गणना करता है (लुकबैक पैरामीटर द्वारा परिभाषित) । यह केवल तभी प्रवेश की अनुमति देता है जब हालिया लाभदायक ट्रेडिंग संभावना 51% से अधिक या बराबर हो। इससे बहुत सारे संभावित खोने वाले ट्रेडों से बचा जाता है।
एक संभावना बढ़ाया आरएसआई रणनीति के रूप में, यह सरल आरएसआई रणनीतियों की तुलना में नीचे फायदे हैंः
इस रणनीति के भीतर अभी भी कुछ जोखिम हैंः
समाधान:
इस रणनीति को निम्नलिखित पहलुओं में और अधिक अनुकूलित किया जा सकता हैः
यह एक सरल आरएसआई रणनीति है जिसे एकीकृत संभावना मॉड्यूल द्वारा बढ़ाया गया है। वेनिला आरएसआई रणनीतियों की तुलना में, यह कुछ खोने वाले ट्रेडों को फ़िल्टर करता है और समग्र ड्रॉडाउन और लाभ अनुपात में सुधार करता है। अगला कदम इसे और अधिक मजबूत बनाने के लिए लघु, गतिशील अनुकूलन आदि जोड़कर इसे बेहतर बनाना हो सकता है।
/*backtest start: 2023-11-19 00:00:00 end: 2023-12-19 00:00:00 period: 1h basePeriod: 15m 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/ // © thequantscience //@version=5 strategy("Reinforced RSI", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 1, currency = currency.EUR, initial_capital = 1000, commission_type = strategy.commission.percent, commission_value = 0.07) lenght_rsi = input.int(defval = 14, minval = 1, title = "RSI lenght: ") rsi = ta.rsi(close, length = lenght_rsi) rsi_value_check_entry = input.int(defval = 35, minval = 1, title = "Oversold: ") rsi_value_check_exit = input.int(defval = 75, minval = 1, title = "Overbought: ") trigger = ta.crossunder(rsi, rsi_value_check_entry) exit = ta.crossover(rsi, rsi_value_check_exit) entry_condition = trigger TPcondition_exit = exit look = input.int(defval = 30, minval = 0, maxval = 500, title = "Lookback period: ") Probabilities(lookback) => isActiveLong = false isActiveLong := nz(isActiveLong[1], false) isSellLong = false isSellLong := nz(isSellLong[1], false) int positive_results = 0 int negative_results = 0 float positive_percentage_probabilities = 0 float negative_percentage_probabilities = 0 LONG = not isActiveLong and entry_condition == true CLOSE_LONG_TP = not isSellLong and TPcondition_exit == true p = ta.valuewhen(LONG, close, 0) p2 = ta.valuewhen(CLOSE_LONG_TP, close, 0) for i = 1 to lookback if (LONG[i]) isActiveLong := true isSellLong := false if (CLOSE_LONG_TP[i]) isActiveLong := false isSellLong := true if p[i] > p2[i] positive_results += 1 else negative_results -= 1 positive_relative_probabilities = positive_results / lookback negative_relative_probabilities = negative_results / lookback positive_percentage_probabilities := positive_relative_probabilities * 100 negative_percentage_probabilities := negative_relative_probabilities * 100 positive_percentage_probabilities probabilities = Probabilities(look) lots = strategy.equity/close var float e = 0 var float c = 0 tp = input.float(defval = 1.00, minval = 0, title = "Take profit: ") sl = input.float(defval = 1.00, minval = 0, title = "Stop loss: ") if trigger==true and strategy.opentrades==0 and probabilities >= 51 e := close strategy.entry(id = "e", direction = strategy.long, qty = lots, limit = e) takeprofit = e + ((e * tp)/100) stoploss = e - ((e * sl)/100) if exit==true c := close strategy.exit(id = "c", from_entry = "e", limit = c) if takeprofit and stoploss strategy.exit(id = "c", from_entry = "e", stop = stoploss, limit = takeprofit)