یہ حکمت عملی آر ایس آئی کے کم نکات پر خریدنے اور آر ایس آئی کے اعلی نکات پر منافع اور اسٹاپ نقصان لینے کے لئے رشتہ دار طاقت انڈیکس (آر ایس آئی) اشارے کی بنیاد پر تیار کی گئی ہے۔ جب آر ایس آئی oversold لائن سے نیچے گرتا ہے تو یہ خرید سگنل تیار کرتا ہے اور جب آر ایس آئی oversold لائن سے اوپر بڑھتا ہے تو سگنل فروخت کرتا ہے۔ حکمت عملی کو مؤثر رسک کنٹرول کے ساتھ رجحانات کو ٹریک کرنے کے لئے بہتر بنایا گیا ہے۔
اس حکمت عملی میں اس بات کا تعین کرنے کے لئے آر ایس آئی اشارے کا استعمال کیا جاتا ہے کہ آیا اسٹاک زیادہ قدر یا کم قدر ہے۔ آر ایس آئی اوور بکٹ اور اوور سیلڈ لائنوں کے ساتھ مل کر خرید اور فروخت کے سگنل بناتا ہے۔ خاص طور پر ، اگر آر ایس آئی 20 اوور سیلڈ لائن سے اوپر عبور کرتا ہے تو ، خرید کا اشارہ پیدا ہوتا ہے۔ اگر آر ایس آئی 80 اوور بکٹ لائن سے نیچے عبور کرتا ہے تو ، فروخت کا اشارہ پیدا ہوتا ہے۔
ایک طویل پوزیشن میں داخل ہونے کے بعد ، حکمت عملی نیچے کی طرف کے خطرے کو کنٹرول کرنے کے لئے ابتدائی اسٹاپ نقصان طے کرتی ہے۔ اسی وقت ، بیچوں میں منافع لینے اور منافع میں تالا لگانے کے لئے مختلف تناسب والی دو منافع لینے کی لائنیں مرتب کی جاتی ہیں۔ خاص طور پر ، پوزیشن کا 50٪ پہلے لاگ ان قیمت سے 3٪ زیادہ منافع لے گا؛ پھر باقی 50٪ پوزیشن لاگ ان قیمت سے 5٪ زیادہ منافع لے گی۔
حکمت عملی مؤثر طریقے سے داخلہ کے وقت کا تعین کرنے کے لئے RSI اشارے کا استعمال کرتی ہے۔ اسٹاپ نقصان اور منافع حاصل کرنے کی ترتیبات خطرات کو مؤثر طریقے سے کنٹرول کرنے کے لئے معقول ہیں۔
یہ حکمت عملی مارکیٹ کی حالت کا اندازہ کرنے کے لئے آر ایس آئی کا استعمال کرتی ہے اور اس میں معقول اسٹاپ نقصان اور منافع کی تشکیل ہوتی ہے۔ یہ مارکیٹ کے رجحان کو مؤثر طریقے سے طے کرسکتا ہے اور تجارتی خطرات کو کنٹرول کرسکتا ہے ، جو حکمت عملی کے بعد تیزی کے رجحان کے طور پر موزوں ہے۔ سگنل فلٹرنگ ، پیرامیٹر ٹیسٹنگ ، اسٹاپ نقصان کی اصلاح وغیرہ حکمت عملی کے استحکام کو مزید بہتر بنا سکتے ہیں۔
/*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)