RSI ভিত্তিক ঊর্ধ্বমুখী প্রবণতা অনুসরণকারী কৌশল

লেখক:চাওঝাং, তারিখ: ২০২৩-১২-২৫ 14:32:19
ট্যাগঃ

img

সারসংক্ষেপ

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

কৌশলগত যুক্তি

কৌশলটি একটি স্টক অতিরিক্ত মূল্যবান বা কম মূল্যবান কিনা তা নির্ধারণের জন্য আরএসআই সূচক ব্যবহার করে। ওভারবয়ড এবং ওভারসোল্ড লাইনগুলির সাথে মিলিত আরএসআই ক্রয় এবং বিক্রয় সংকেত গঠন করে। বিশেষত, যদি আরএসআই 20 ওভারসোল্ড লাইনের উপরে অতিক্রম করে তবে একটি ক্রয় সংকেত উত্পন্ন হয়; যদি আরএসআই 80 ওভারসোল্ড লাইনের নীচে অতিক্রম করে তবে একটি বিক্রয় সংকেত উত্পন্ন হয়।

লং পজিশনে প্রবেশের পর, কৌশলটি নেমে যাওয়ার ঝুঁকি নিয়ন্ত্রণের জন্য একটি প্রাথমিক স্টপ লস সেট করে। একই সাথে, দুটি লাভের লাইনগুলি বিভিন্ন অনুপাতের সাথে লটগুলিতে লাভ নেওয়ার জন্য এবং লাভের লক করার জন্য সেট করা হয়। বিশেষত, 50% অবস্থান প্রবেশের দামের উপরে প্রথমে 3% লাভ করবে; তারপরে অবশিষ্ট 50% অবস্থান প্রবেশের দামের উপরে 5% লাভ করবে।

কৌশলটি প্রবেশের সময় নির্ধারণের জন্য আরএসআই সূচকটি কার্যকরভাবে ব্যবহার করে। স্টপ লস এবং লাভ গ্রহণের সেটিংস কার্যকরভাবে ঝুঁকি নিয়ন্ত্রণের জন্য যুক্তিসঙ্গত।

সুবিধা

  • লং/শর্ট পজিশন নির্ধারণ এবং অন্ধভাবে ট্রেডিং এড়ানোর জন্য RSI ইন্ডিকেটর ব্যবহার করুন
  • আরও ভাল সূচক প্রভাবের জন্য অপ্টিমাইজড আরএসআই পরামিতি
  • যুক্তিসঙ্গত দ্বৈত মুনাফা গ্রহণের নকশা আরও বেশি মুনাফা লক করার জন্য ব্যাচে মুনাফা গ্রহণের অনুমতি দেয়
  • প্রাথমিক স্টপ লস এবং ট্রেলিং স্টপ লস বিশাল ক্ষতি রোধ করে

ঝুঁকি

  • মুনাফা বজায় রাখতে পারে না এমন একটি ষাঁড়ের বাজারে দুর্বল পারফরম্যান্স
  • RSI থেকে ভুল সংকেতের সম্ভাবনা রয়েছে এবং ভুল সংকেত বিচার থেকে ক্ষতি বৃদ্ধি করতে পারে
  • স্টপ লস পয়েন্টগুলি খুব গভীর হলে স্টপগুলি সক্রিয় করা যাবে না এমন ঝুঁকি
  • পিরামিডিং সময় এবং অনুপাতের উপর সীমাবদ্ধতা ছাড়াই বড় ক্ষতির ঝুঁকি

উন্নতি

  • আরএসআই সংকেতগুলি ফিল্টার করতে এবং নির্ভুলতা উন্নত করতে অন্যান্য সূচক যুক্ত করুন
  • পিরামিডিং সময় এবং অনুপাতের সীমা নির্ধারণ করুন
  • বিভিন্ন 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)



আরো