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


সৃষ্টির তারিখ: 2023-10-25 16:47:14 অবশেষে সংশোধন করুন: 2023-10-25 16:47:14
অনুলিপি: 0 ক্লিকের সংখ্যা: 846
1
ফোকাস
1617
অনুসারী

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

ওভারভিউ

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

মূলনীতি

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

যদি RSI-এর নিম্নরেখার উচ্চরেখার উপরে এবং দামের নিম্নরেখার নীচে একটি কেনা সংকেত দেওয়া হয়। যদি RSI-এর উচ্চরেখার নীচে এবং দামের নিম্নরেখার উপরে একটি কেনা সংকেত দেওয়া হয়। একবার ট্রেডিং সংকেত তৈরি হয়ে গেলে, কৌশলটি RSI মানের আকার অনুসারে উপযুক্ত বাণিজ্য করতে পারে।

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

সুবিধা

আরএসআই-বিপরীত ট্রেডিং কৌশলটির নিম্নলিখিত সুবিধাগুলি রয়েছেঃ

  1. আরএসআই সূচকটি বিপর্যয়কে ধরার মাধ্যমে, আপনি মূল্যের বিপর্যয়কে তাড়াতাড়ি সনাক্ত করতে পারেন।

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

  3. RSI সূচক প্যারামিটারগুলি নমনীয়ভাবে সেট করা হয়, যা বাজারের পর্যবেক্ষণের সময়কাল অনুসারে পরিবর্তিত হতে পারে।

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

  5. কৌশলগত ট্রেডিং সিগন্যালের ফ্রিকোয়েন্সি মাঝারি রাখুন, খুব ঘন ঘন ট্রেডিং এড়িয়ে চলুন।

  6. কৌশলগত ধারণাগুলি পরিষ্কার এবং সহজেই বোঝা যায়, যা কম্পিউটার প্রোগ্রামগুলিকে বাস্তবায়িত করতে সহায়তা করে।

ঝুঁকি

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

  1. RSI এর বিপরীততা শতভাগ নির্ভরযোগ্য নয়, এবং এটি একটি মিথ্যা সংকেত হতে পারে। অন্যান্য সূচকগুলির সাথে সংযুক্ত হওয়ার জন্য একটি ফিল্টার সংকেত প্রয়োজন।

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

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

  4. স্টপ পয়েন্টটি খুব ছোট সেট করা হয়েছে, যা অকালে বন্ধ হতে পারে; স্টপ পয়েন্টটি খুব বড়, যা কার্যকরভাবে ঝুঁকি নিয়ন্ত্রণ করতে পারে না। ভারসাম্য সেট করা দরকার।

  5. ট্র্যাকিং স্টপস দামের তীব্র ওঠানামা হলে, অল্প সময়ের মধ্যে বন্ধ হয়ে যেতে পারে। বাজারের ওঠানামার সাথে যুক্ত যুক্তিসঙ্গত ট্র্যাকিং স্টপ দূরত্ব সেট করা দরকার।

নিম্নলিখিত পদক্ষেপের মাধ্যমে এই ঝুঁকি কমাতে পারেঃ

  1. অন্যান্য সূচক যেমন MACD, বুলিন লাইন ইত্যাদি সংকেত ফিল্টার করার জন্য যুক্ত করুন, যা মিথ্যা সংকেত কমাবে।

  2. এই কৌশলটি কেবলমাত্র অস্থির শহরে ব্যবহার করা হয়, সুস্পষ্ট প্রবণতা এড়াতে।

  3. RSI প্যারামিটার সেটিং অপ্টিমাইজ করুন, সর্বোত্তম চক্রের দৈর্ঘ্য চয়ন করুন। একই সাথে বিভিন্ন বাজারের প্যারামিটার পছন্দগুলি পরীক্ষা করুন।

  4. ইতিহাসের উপর ভিত্তি করে যুক্তিসঙ্গত স্টপ এবং স্টপ অবস্থান সেট করুন।

  5. বাজারের অস্থিরতা এবং ঝুঁকির পছন্দ অনুসারে স্টপ ট্র্যাকিংয়ের মাত্রা সামঞ্জস্য করুন।

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

এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে অপ্টিমাইজ করা যায়ঃ

  1. ট্রেডিং সিগন্যাল ফিল্টার করার জন্য অন্যান্য সূচক যুক্ত করা হয়েছে, যার ফলে সিগন্যালের নির্ভরযোগ্যতা বৃদ্ধি পেয়েছে।

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

  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)