RSI ডিভার্জেন্স ট্রেডিং কৌশল

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

img

সারসংক্ষেপ

আরএসআই ডিভার্জেন্স ট্রেডিং কৌশলটি আরএসআই সূচক এবং মূল্য আন্দোলনের মধ্যে পার্থক্য চিহ্নিত করে ক্রয় এবং বিক্রয় সংকেত তৈরি করে। কৌশলটি ঝুঁকি কার্যকরভাবে পরিচালনা করার জন্য স্টপ লস, লাভ গ্রহণ এবং ট্রেলিং স্টপ লসকেও অন্তর্ভুক্ত করে।

নীতি

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

যদি কৌশলটি মূল্য রেখার শীর্ষে থাকাকালীন আরএসআই লাইনের নীচে সনাক্ত করে, তবে একটি ক্রয় সংকেত উত্পন্ন হয়। যদি মূল্য রেখার নীচে থাকাকালীন আরএসআই লাইন শীর্ষে থাকে তবে একটি বিক্রয় সংকেত উত্পন্ন হয়। একবার একটি ট্রেডিং সংকেত উপস্থিত হলে, কৌশলটি আরএসআই মানের আকার অনুযায়ী বাণিজ্য করতে পারে।

এছাড়াও, কৌশলটিতে স্টপ লস, লভ্যাংশ এবং ট্রেলিং স্টপ লস বৈশিষ্ট্য রয়েছে। স্টপ লস ডাউনসাইড ঝুঁকিগুলি নিয়ন্ত্রণ করে, লাভের মধ্যে লাভ লক করে এবং ট্রেলিং স্টপ লাভ চালানোর অনুমতি দেয়। এই সেটিংস কার্যকরভাবে প্রতিটি ব্যবসায়ের ঝুঁকি পরিচালনা করে।

সুবিধা

আরএসআই ডিভার্জেন্স ট্রেডিং কৌশল নিম্নলিখিত সুবিধাগুলি আছেঃ

  1. আরএসআই বিপর্যয়গুলি ধরা পড়লে প্রবণতা বিপরীতমুখী হতে পারে।

  2. আরএসআই ব্যাপকভাবে ব্যবহৃত হয় এবং বেশিরভাগ ট্রেডিং প্ল্যাটফর্মে পাওয়া যায়। কৌশলটির উচ্চ প্রয়োগযোগ্যতা রয়েছে।

  3. আরএসআই পরামিতিগুলি নমনীয় এবং বিভিন্ন বাজারের অবস্থার জন্য সামঞ্জস্য করা যেতে পারে।

  4. স্টপ লস, টেক প্রফিট এবং ট্রেলিং স্টপ লস কার্যকরভাবে ঝুঁকি নিয়ন্ত্রণ করে।

  5. কৌশলটি একটি মাঝারি সংকেত ফ্রিকোয়েন্সি আছে, অত্যধিক ট্রেডিং এড়ানো।

  6. লজিকটি সহজ এবং অটোমেশনের জন্য প্রোগ্রাম করা সহজ।

ঝুঁকি

এই কৌশলের কিছু ঝুঁকিও রয়েছে:

  1. আরএসআই ডিভার্জেন্সগুলি সম্পূর্ণ নির্ভরযোগ্য নয় এবং মিথ্যা সংকেত তৈরি করতে পারে। অন্যান্য ফিল্টার প্রয়োজন।

  2. শক্তিশালী ট্রেন্ডিং মার্কেটে বিচ্ছিন্নতা ব্যর্থ হতে পারে, যা এড়ানো উচিত।

  3. ভুল RSI পরামিতি কর্মক্ষমতা প্রভাবিত করতে পারে। খুব ছোট সময় ফ্রিকোয়েন্সি এবং ঝুঁকি বৃদ্ধি।

  4. স্টপ লস সেট খুব টাইট মুনাফা সংক্ষিপ্ত কাটা; খুব আলগা ঝুঁকি সীমাবদ্ধ করতে ব্যর্থ। সূক্ষ্ম মিটিং প্রয়োজন।

  5. অস্থির বাজারের সময় ট্রেইলিং স্টপ অকাল বন্ধ হতে পারে। অস্থিরতা বিবেচনা করে যুক্তিসঙ্গত ট্রেইলিং প্রস্থ প্রয়োজন।

ঝুঁকিগুলি নিম্নলিখিত উপায়ে হ্রাস করা যেতে পারেঃ

  1. সিগন্যাল ফিল্টার করতে এবং মিথ্যা সিগন্যাল হ্রাস করতে ম্যাকডি, বোলিংজার ব্যান্ডের মতো অন্যান্য সূচক যুক্ত করা।

  2. এই কৌশলটি শুধুমাত্র ব্যাপ্তি-সীমাবদ্ধ পার্শ্ববর্তী বাজারের সময় ব্যবহার করা, শক্তিশালী প্রবণতা এড়ানো।

  3. আরএসআই পরামিতিগুলি অপ্টিমাইজ করা, সর্বোত্তম পুনর্বিবেচনার সময় নির্বাচন করা। বিভিন্ন বাজারের জন্য পরামিতি পরীক্ষা করা।

  4. ঐতিহাসিক ব্যাকটেস্টিং এর ভিত্তিতে যুক্তিসঙ্গত স্টপ লস এবং লাভের মাত্রা নির্ধারণ করা।

  5. বাজারের অস্থিরতা এবং ঝুঁকি গ্রহণের উপর ভিত্তি করে ট্রেলিং স্টপ দূরত্ব সামঞ্জস্য করা।

অপ্টিমাইজেশন

কৌশলটি নিম্নলিখিত দিকগুলিতে উন্নত করা যেতে পারেঃ

  1. সিগন্যাল ফিল্টার করতে এবং নির্ভরযোগ্যতা উন্নত করতে অন্যান্য সূচক অন্তর্ভুক্ত করুন।

  2. মেশিন লার্নিং ব্যবহার করে আরএসআই প্যারামিটারগুলি স্বয়ংক্রিয়ভাবে অপ্টিমাইজ করুন।

  3. বাজারের নিয়ম অনুযায়ী গতিশীল স্টপ লস অ্যালগরিদম ডিজাইন করুন। ব্যাপ্তির জন্য বৃহত্তর স্টপ, ট্রেন্ডিং মার্কেটের জন্য শক্ত স্টপ।

  4. পজিশনের আকার সামঞ্জস্য করার জন্য অস্থিরতার উপর ভিত্তি করে একটি গতিশীল পজিশন সাইজিং মডেল তৈরি করুন।

  5. দামের পরিবর্তনের উপর ভিত্তি করে ট্রেলিং স্টপ থেকে ট্রেল দূরত্ব সেট করতে ভোল্টেবিলিটি প্রবর্তন করুন।

  6. ফরেক্স এবং ক্রিপ্টোকারেন্সির মতো অন্যান্য বাজারে কৌশল প্রয়োগ করুন।

  7. অটোমেশনের জন্য একটি পরিমাণগত ট্রেডিং সিস্টেম তৈরি করা।

সিদ্ধান্ত

আরএসআই ডিভার্জেন্স ট্রেডিং কৌশলটি আরএসআই এবং দামের মধ্যে পার্থক্য চিহ্নিত করে সংকেত তৈরি করে। যুক্তিটি সহজ এবং স্বয়ংক্রিয় করা সহজ। স্টপ লস, লাভ গ্রহণ এবং ট্রেলিং স্টপ কার্যকরভাবে ঝুঁকিগুলি নিয়ন্ত্রণ করে। তবে কৌশলটির সঠিকতা এবং ট্রেন্ডিং মার্কেটের সীমাবদ্ধতা রয়েছে। প্যারামিটারগুলি অনুকূলিতকরণ, ফিল্টার এবং গতিশীল স্টপ যুক্ত করে উন্নতি করা যেতে পারে। একটি প্রযুক্তিগত কৌশল হিসাবে, এটি সিস্টেমাইজড হলে পরিসীমা-সীমাবদ্ধ বাজারের সময় পরিপূরক হিসাবে কাজ করতে পারে।


/*backtest
start: 2023-09-24 00:00:00
end: 2023-10-24 00:00:00
period: 4h
basePeriod: 15m
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/
// © faytterro

//@version=5
// strategy("RSI Divergence Strategy", overlay=true, scale = scale.none)
rsilen=input.int(14, title="rsi length")
rsisrc=input(close, title="source")
x=ta.rsi(rsisrc,rsilen)
len=input.int(14, title="RSI Divergence length", maxval=500)
tpb = input.float(25, title="take profit", group = "buy", step = 0.5)
sb = input.float(5, title="stop", group = "buy", step = 0.5)
tsb = input.float(0.25, title="trailing stop", group = "buy", step = 0.5)
tps = input.float(25, title="take profit", group = "sell", step = 0.5)
ss =input.float(5, title="stop", group = "sell", step = 0.5)
tss = input.float(0.25, title="trailing stop", group = "sell", step = 0.5)
src=close
extrapolation=0
zoom=input.int(0, title="zoom", maxval=27, minval=-27)
hline(300-zoom*10, color=color.rgb(54, 58, 69, 100))
hline(10, color=color.rgb(54, 58, 69, 100))
// for ax+b
xo=0.0
yo=0.0
xyo=0.0
xxo=0.0
for i=0 to len-1
    xo:= xo + i/(len)
    yo:= yo + x[len-1-i]/(len)
    xyo:= xyo + i*x[len-1-i]/(len)
    xxo:= xxo + i*i/(len)
dnm=ta.lowest(low,200)
dizi=array.new_float(len*2+1+extrapolation)
// linedizi=array.new_line()
a=(xo*yo-xyo)/(xo*xo-xxo)
b=yo-a*xo
for i=0 to len-1+extrapolation
    array.set(dizi,i,a*i+b)
//// for src
// for ax+b
xo2=0.0
yo2=0.0
xyo2=0.0
xxo2=0.0
for i=0 to len-1
    xo2:= xo2 + i/(len)
    yo2:= yo2 + src[len-1-i]/(len)
    xyo2:= xyo2 + i*src[len-1-i]/(len)
    xxo2:= xxo2 + i*i/(len)

dizi2=array.new_float(len*2+1+extrapolation)
// linedizi2=array.new_line()
a2=(xo2*yo2-xyo2)/(xo2*xo2-xxo2)
b2=yo2-a*xo2
for i=0 to len-1+extrapolation
    array.set(dizi2,i,a2*i+b2)
ttk=((array.get(dizi,0)<array.get(dizi,1)) and (array.get(dizi2,0)>array.get(dizi2,1)))? 1 : 
 ((array.get(dizi,0)>array.get(dizi,1)) and (array.get(dizi2,0)<array.get(dizi2,1)))? -1 : 0
cg=((array.get(dizi,0)<array.get(dizi,1)) and (array.get(dizi2,0)>array.get(dizi2,1)))// and ta.highest(ttk[1],len/2)<1)
cr=((array.get(dizi,0)>array.get(dizi,1)) and (array.get(dizi2,0)<array.get(dizi2,1)))// and ta.lowest(ttk[1],len/2)>-1)
bgcolor(color=(cg and ta.highest(ttk[1],len/2)<1)? color.rgb(76, 175, 79, 50) : 
 (cr and ta.lowest(ttk[1],len/2)>-1)? color.rgb(255, 82, 82, 50) : na, offset=0, display=display.none)
plot(x)

// for ax+b
xo3=0.0
yo3=0.0
xyo3=0.0
xxo3=0.0
for i=0 to len-1
    xo3:= xo3 + i/(len)
    yo3:= yo3 + x[len-1-i+(ta.barssince(cg))]/(len)
    xyo3:= xyo3 + i*x[len-1-i+(ta.barssince(cg))]/(len)
    xxo3:= xxo3 + i*i/(len)

dizi3=array.new_float(len*2+1+extrapolation)
// linedizi3=array.new_line()
a3=(xo3*yo3-xyo3)/(xo3*xo3-xxo3)
b3=yo3-a3*xo3
for i=0 to len-1+extrapolation
    array.set(dizi3,i,a3*i+b3)

// for ax+b
xo4=0.0
yo4=0.0
xyo4=0.0
xxo4=0.0
for i=0 to len-1
    xo4:= xo4 + i/(len)
    yo4:= yo4 + x[len-1-i+(ta.barssince(cr))]/(len)
    xyo4:= xyo4 + i*x[len-1-i+(ta.barssince(cr))]/(len)
    xxo4:= xxo4 + i*i/(len)

dizi4=array.new_float(len*2+1+extrapolation)
// linedizi4=array.new_line()
a4=(xo4*yo4-xyo4)/(xo4*xo4-xxo4)
b4=yo4-a4*xo4
for i=0 to len-1+extrapolation
    array.set(dizi4,i,a4*i+b4)

// line=line.new((last_bar_index-ta.barssince(cg)-len),
//  array.get(dizi3,0), 
//  last_bar_index-ta.barssince(cg),
//  array.get(dizi3,len-1), color=color.rgb(0,255,0), width=2)
// line2=line.new((last_bar_index-ta.barssince(cr)-len),
//  array.get(dizi4,0), 
//  last_bar_index-ta.barssince(cr),
//  array.get(dizi4,len-1), color=color.rgb(255, 0, 0, 0), width=2)
// line.delete(line[1])
// line.delete(line2[1])

alert=((array.get(dizi,0)<array.get(dizi,1)) and (array.get(dizi2,0)>array.get(dizi2,1)) and ta.highest(ttk[1],len/2)<1)
 or ((array.get(dizi,0)>array.get(dizi,1)) and (array.get(dizi2,0)<array.get(dizi2,1)) and ta.lowest(ttk[1],len/2)>-1)
alertcondition(alert)
hline(50)
rs=hline(30)
rss=hline(70)
fill(rs, rss, color=color.rgb(126, 87, 194, 90), title="RSI Background Fill")

longCondition = cg and ta.highest(ttk[1],len/2)<1 
if (longCondition)
    strategy.entry("Long", strategy.long)
    strategy.exit("exit long", "Long", limit = close*(100+tpb)/100 , stop =close*(100-sb)/100 , trail_price = close , trail_offset = close*tsb)

shortCondition = cr and ta.lowest(ttk[1],len/2)>-1 
if (shortCondition)
    strategy.entry("Short", strategy.short)
    strategy.exit("exit short", "Short", limit = close*(100-tps)/100, stop = close*(100+ss)/100, trail_price = close , trail_offset = close*tss)


আরো