यह रणनीति आरएसआई संकेतक से चूक गए ओवरबॉट और ओवरसोल्ड संकेतों को ट्रैक करके रिवर्सल ट्रेडिंग को लागू करती है। खरीद संकेत तब उत्पन्न होते हैं जब आरएसआई ओवरबोल्ड स्तरों से गिरता है, और बिक्री संकेत तब उत्पन्न होते हैं जब आरएसआई ओवरसोल्ड स्तरों से उछलता है, जिसका उद्देश्य रिवर्सल अवसरों को पकड़ना है।
आरएसआई संकेतक ओवरबॉट/ओवरसोल्ड स्तरों की पहचान करता है। ओवरबॉट जब आरएसआई ओवरबॉट थ्रेशोल्ड पार करता है, ओवरसोल्ड जब ओवरसोल्ड थ्रेशोल्ड पार करता है।
overbought = rsi > uplimit
oversold = rsi < dnlimit
यदि आरएसआई पिछले पट्टी overbought गया था और इस पट्टी overbought बाहर निकलता है, एक खरीद संकेतup1
यदि आरएसआई पिछले पट्टी oversold था और इस पट्टी oversold बाहर निकलता है, एक बेचने के संकेतdn1
उत्पन्न होता है।
up1 = bar == -1 and strategy.position_size == 0 and overbought[1] and overbought == false
dn1 = bar == 1 and strategy.position_size == 0 and oversold[1] and oversold == false
यदि पट्टी दिशा स्थिति दिशा के साथ संरेखित होती है, और पट्टी शरीर अपने 10 अवधि के औसत के आधे से अधिक है, तो एक बाहर निकलने का संकेत ट्रिगर किया जाता है।
exit = (((strategy.position_size > 0 and bar == 1) or
(strategy.position_size < 0 and bar == -1)) and
body > abody / 2)
याद किए गए आरएसआई रिवर्स सिग्नल को ट्रैक करें, समय पर ओवरबॉट/ओवरसोल्ड बिंदुओं को पकड़ने की आवश्यकता से बचें।
मोड़ बिंदुओं को पकड़ने के लिए आरएसआई
बाहर निकलने के तर्क में पट्टी दिशा और आकार को शामिल करें ताकि खींचने के बाद आगे की ट्रैकिंग से बचा जा सके।
आरएसआई से झूठे संकेतों का जोखिम
कीमतें पहले से ही काफी पीछे खींच लिया है हो सकता है जब ट्रैकिंग संकेत, नुकसान का खतरा बढ़ रहा है
पूर्ण लाभप्रद उलट से पहले समय से पहले बाहर निकलने का जोखिम
विभिन्न बाजारों के आधार पर ओवरबॉट/ओवरसोल्ड स्तर, लुकबैक अवधि आदि जैसे मापदंडों का अनुकूलन करें
स्थिति आकार को समायोजित करें, जैसे ट्रैकिंग संकेतों के आकार को कम करना
प्रवेश समय में सुधार, ट्रैकिंग संकेतों से परे फ़िल्टर जोड़ना
लाभप्रदता बढ़ाने के लिए बाहर निकलने को बढ़ाएं, जैसे कि लाभ को रोकना
नुकसान को कम करने के लिए स्टॉप को अनुकूलित करें, जैसे कि ट्रेलिंग स्टॉप या शंकु स्टॉप
यह रणनीति आरएसआई ओवरबॉट/ओवरसोल्ड सिग्नल को ट्रैक करके रिवर्सल ट्रेडिंग को लागू करती है। इसमें रिवर्सल सिग्नल को पकड़ने का लाभ है लेकिन इसमें झूठे सिग्नल और नुकसान के जोखिम भी हैं। आगे के अनुकूलन रणनीति की स्थिरता और लाभप्रदता में सुधार कर सकते हैं।
/*backtest start: 2023-09-20 00:00:00 end: 2023-09-27 00:00:00 period: 15m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=2 strategy(title = "Noro's Anti RSI Strategy v1.0", shorttitle = "Anti RSI str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") usemar = input(false, defval = false, title = "Use Martingale") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %") rsiperiod1 = input(14, defval = 14, minval = 2, maxval = 50, title = "RSI Period") rsilimit1 = input(25, defval = 25, minval = 1, maxval = 100, title = "RSI limit") showarr = input(false, defval = false, title = "Show Arrows") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //RSI uprsi1 = rma(max(change(close), 0), rsiperiod1) dnrsi1 = rma(-min(change(close), 0), rsiperiod1) rsi = dnrsi1 == 0 ? 100 : uprsi1 == 0 ? 0 : 100 - (100 / (1 + uprsi1 / dnrsi1)) uplimit = 100 - rsilimit1 dnlimit = rsilimit1 //Body body = abs(close - open) abody = sma(body, 10) //Signals bar = close > open ? 1 : close < open ? -1 : 0 overbought = rsi > uplimit oversold = rsi < dnlimit up1 = bar == -1 and strategy.position_size == 0 and overbought[1] and overbought == false dn1 = bar == 1 and strategy.position_size == 0 and oversold[1] and oversold == false up2 = bar == -1 and strategy.position_size > 0 and overbought == false dn2 = bar == 1 and strategy.position_size < 0 and oversold == false norma = overbought == false and oversold == false exit = (((strategy.position_size > 0 and bar == 1) or (strategy.position_size < 0 and bar == -1)) and body > abody / 2) //Arrows col = exit ? black : up1 or dn1 or up2 or dn2 ? blue : na needup = up1 or up2 needdn = dn1 or dn2 needexitup = exit and strategy.position_size < 0 needexitdn = exit and strategy.position_size > 0 plotarrow(showarr and needup ? 1 : na, colorup = blue, colordown = blue, transp = 0) plotarrow(showarr and needdn ? -1 : na, colorup = blue, colordown = blue, transp = 0) plotarrow(showarr and needexitup ? 1 : na, colorup = black, colordown = black, transp = 0) plotarrow(showarr and needexitdn ? -1 : na, colorup = black, colordown = black, transp = 0) //Trading profit = exit ? ((strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price)) ? 1 : -1 : profit[1] mult = usemar ? exit ? profit == -1 ? mult[1] * 2 : 1 : mult[1] : 1 lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 * mult : lot[1] if up1 or up2 if strategy.position_size < 0 strategy.close_all() strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if dn1 or dn2 if strategy.position_size > 0 strategy.close_all() strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if time > timestamp(toyear, tomonth, today, 23, 59) or exit strategy.close_all()