यह रणनीति आरएसआई कम बिंदुओं पर खरीदने और आरएसआई उच्च बिंदुओं पर लाभ और स्टॉप लॉस लेने के लिए सापेक्ष शक्ति सूचकांक (आरएसआई) संकेतक के आधार पर डिज़ाइन की गई है। यह खरीद संकेत उत्पन्न करता है जब आरएसआई ओवरसोल्ड लाइन से नीचे गिरता है और बेच संकेत जब आरएसआई ओवरबोल्ड लाइन से ऊपर उठता है। रणनीति प्रभावी जोखिम नियंत्रण के साथ रुझानों को ट्रैक करने के लिए अनुकूलित है।
यह रणनीति यह निर्धारित करने के लिए आरएसआई संकेतक का उपयोग करती है कि क्या कोई स्टॉक अतिमूल्यवान है या कम मूल्यवान है। आरएसआई ओवरबॉट और ओवरसोल्ड लाइनों के साथ संयुक्त खरीद और बिक्री संकेत बनाता है। विशेष रूप से, यदि आरएसआई 20 ओवरसोल्ड लाइन से ऊपर जाता है, तो एक खरीद संकेत उत्पन्न होता है; यदि आरएसआई 80 ओवरबोल्ड लाइन से नीचे जाता है, तो एक बिक्री संकेत उत्पन्न होता है।
एक लंबी स्थिति में प्रवेश करने के बाद, रणनीति नीचे की ओर जोखिम को नियंत्रित करने के लिए एक प्रारंभिक स्टॉप लॉस सेट करती है। एक ही समय में, बैचों में लाभ लेने और लाभ में लॉक करने के लिए अलग-अलग अनुपात वाली दो ले लाभ लाइनें सेट की जाती हैं। विशेष रूप से, स्थिति का 50% प्रवेश मूल्य से 3% ऊपर पहले लाभ लेगा; फिर शेष 50% स्थिति प्रवेश मूल्य से 5% ऊपर लाभ लेगी।
रणनीति प्रभावी रूप से प्रवेश समय निर्धारित करने के लिए आरएसआई संकेतक का उपयोग करती है। जोखिमों को प्रभावी ढंग से नियंत्रित करने के लिए स्टॉप लॉस और ले लाभ सेटिंग्स उचित हैं।
यह रणनीति बाजार की स्थिति का न्याय करने के लिए आरएसआई का उपयोग करती है और इसके पास उचित स्टॉप लॉस और ले लाभ कॉन्फ़िगरेशन है। यह प्रभावी रूप से बाजार की प्रवृत्ति निर्धारित कर सकता है और व्यापार जोखिमों को नियंत्रित कर सकता है, जो रणनीति के बाद तेजी की प्रवृत्ति के रूप में उपयुक्त है। सिग्नल फ़िल्टरिंग, पैरामीटर परीक्षण, स्टॉप लॉस अनुकूलन आदि रणनीति की स्थिरता में और सुधार कर सकते हैं।
/*backtest start: 2023-12-17 00:00:00 end: 2023-12-24 00:00:00 period: 1m basePeriod: 1m 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/ //@version=5 strategy(title='RSI Long Strategy', overlay=true, pyramiding=5, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.075) strat_dir_input = input.string(title='Strategy Direction', defval='long', options=['long', 'short', 'all']) strat_dir_value = strat_dir_input == 'long' ? strategy.direction.long : strat_dir_input == 'short' ? strategy.direction.short : strategy.direction.all strategy.risk.allow_entry_in(strat_dir_value) //INPUTS length = input(21) overSold = input(20) overBought = input(80) p = close vrsi = ta.rsi(p, length) price = close var bool long = na var bool short = na long := ta.crossover(vrsi, overSold) short := ta.crossunder(vrsi, overBought) var float last_open_long = na var float last_open_short = na last_open_long := long ? close : nz(last_open_long[1]) last_open_short := short ? close : nz(last_open_short[1]) mpoint=(last_open_long+last_open_short)/2 entry_value = last_open_long entry_value1 = last_open_short // Rounding levels to min tick nround(x) => n = math.round(x / syminfo.mintick) * syminfo.mintick n // disp_panels = input(true, title='Display info panels?') fibs_label_off = input(40, title='fibs label offset') fibs_label_size = input.string(size.normal, options=[size.tiny, size.small, size.normal, size.large, size.huge], title='fibs label size') r1_x = timenow + math.round(ta.change(time) * fibs_label_off) r1_y = last_open_short text1 = 'High : ' + str.tostring(nround(last_open_short)) s1_y = last_open_long text3 = 'low : ' + str.tostring(nround(last_open_long)) R1_label = disp_panels ? label.new(x=r1_x, y=r1_y, text=text1, xloc=xloc.bar_time, yloc=yloc.price, color=color.orange, style=label.style_label_down, textcolor=color.black, size=fibs_label_size) : na S1_label = disp_panels ? label.new(x=r1_x, y=s1_y, text=text3, xloc=xloc.bar_time, yloc=yloc.price, color=color.lime, style=label.style_label_up, textcolor=color.black, size=fibs_label_size) : na label.delete(R1_label[1]) label.delete(S1_label[1]) // plot(mpoint, title='avreage', color=color.new(color.red, 40), style=plot.style_linebr, linewidth=3, trackprice=true, offset=-9999) plot(last_open_short, title='high', color=color.new(color.red, 40), style=plot.style_linebr, linewidth=3, trackprice=true, offset=-9999) plot(last_open_long, title='low', color=color.new(color.blue, 40), style=plot.style_linebr, linewidth=3, trackprice=true, offset=-9999) // trend = input(false) if barstate.islast and trend == true line z = line.new(bar_index[1], last_open_short[1], bar_index, last_open_short, extend=extend.both, color=color.red, style=line.style_dashed, width=1) line f = line.new(bar_index[1], mpoint[1], bar_index, mpoint, extend=extend.both, color=color.blue, style=line.style_dashed, width=1) line w = line.new(bar_index[1], last_open_long[1], bar_index, last_open_long, extend=extend.both, color=color.green, style=line.style_dashed, width=1) line.delete(z[1]) line.delete(f[1]) line.delete(w[1]) //bu = ta.crossover(close, mpoint) //sz = ta.crossunder(close, mpoint) //bu1 = ta.crossover(close, last_open_short) sz1 = ta.crossunder(close, last_open_short) bu2 = ta.crossover(close, last_open_long) //sz2 = ta.crossunder(close, last_open_long) //plotshape(sz, style=shape.triangledown, location=location.abovebar, color=color.new(color.orange, 0), size=size.tiny) //plotshape(bu, style=shape.triangleup, location=location.belowbar, color=color.new(color.blue, 0), size=size.tiny) //plotshape(sz1, style=shape.triangledown, location=location.abovebar, color=color.new(color.red, 0), size=size.tiny) //plotshape(bu1, style=shape.triangleup, location=location.belowbar, color=color.new(color.green, 0), size=size.tiny) //plotshape(sz2, style=shape.triangledown, location=location.abovebar, color=color.new(color.red, 0), size=size.tiny) //plotshape(bu2, style=shape.triangleup, location=location.belowbar, color=color.new(color.green, 0), size=size.tiny) l = bu2 s = sz1 if l strategy.entry('buy', strategy.long) if s strategy.entry('sell', strategy.short) per(pcnt) => strategy.position_size != 0 ? math.round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na) stoploss = input.float(title=' stop loss', defval=5, minval=0.01) los = per(stoploss) q1 = input.int(title=' qty_percent1', defval=50, minval=1) q2 = input.int(title=' qty_percent2', defval=50, minval=1) tp1 = input.float(title=' Take profit1', defval=3, minval=0.01) tp2 = input.float(title=' Take profit2', defval=5, minval=0.01) //tp4 = input.float(title=' Take profit4', defval=5, minval=0.01) strategy.exit('x1', qty_percent=q1, profit=per(tp1), loss=los) strategy.exit('x2', qty_percent=q2, profit=per(tp2), loss=los)