
یہ حکمت عملی نسبتا strong مضبوط انڈیکس ((RSI) اشارے پر مبنی ہے ، جس میں RSI کی کم قیمتوں پر خریدنے اور زیادہ قیمتوں پر اسٹاپ نقصان کی روک تھام کے لئے ایک کثیر رجحان ٹریڈنگ حکمت عملی ہے۔ جب RSI اشارے اوور بائ لائن سے نیچے ہوتا ہے تو خریدنے کا اشارہ پیدا ہوتا ہے ، اور جب RSI اشارے اوور سیل لائن سے اوپر ہوتا ہے تو فروخت کا اشارہ پیدا ہوتا ہے۔ حکمت عملی رجحان کی پیروی کی کارکردگی کو بہتر بناتی ہے ، جو تجارت کے خطرے کو مؤثر طریقے سے کنٹرول کرسکتی ہے۔
اس حکمت عملی میں آر ایس آئی کا استعمال کیا جاتا ہے تاکہ یہ معلوم کیا جاسکے کہ آیا اسٹاک کی قیمت زیادہ قیمت والی ہے یا کم قیمت والی ہے۔ آر ایس آئی اشارے میں اوورلوڈ اوور سیل لائن کے ساتھ مل کر خرید و فروخت کا اشارہ ہوتا ہے۔ خاص طور پر ، اگر آر ایس آئی اشارے پر 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)