এই কৌশলটি আরএসআই নিম্ন পয়েন্টগুলিতে কেনার জন্য আপেক্ষিক শক্তি সূচক (আরএসআই) সূচকের উপর ভিত্তি করে ডিজাইন করা হয়েছে এবং আরএসআই উচ্চ পয়েন্টগুলিতে মুনাফা এবং স্টপ লস গ্রহণের জন্য। এটি যখন আরএসআই ওভারসোল্ড লাইনের নীচে পড়ে তখন কেনার সংকেত উত্পন্ন করে এবং যখন আরএসআই ওভারসোল্ড লাইনের উপরে উঠে যায় তখন বিক্রয় সংকেত উত্পন্ন করে। কৌশলটি কার্যকর ঝুঁকি নিয়ন্ত্রণের সাথে প্রবণতা ট্র্যাক করার জন্য অনুকূলিত।
কৌশলটি একটি স্টক অতিরিক্ত মূল্যবান বা কম মূল্যবান কিনা তা নির্ধারণের জন্য আরএসআই সূচক ব্যবহার করে। ওভারবয়ড এবং ওভারসোল্ড লাইনগুলির সাথে মিলিত আরএসআই ক্রয় এবং বিক্রয় সংকেত গঠন করে। বিশেষত, যদি আরএসআই 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)