
এই কৌশলটি RSI সূচক ব্যবহার করে বাজার ওভারব্লু ওভারসেলিংয়ের বিচার করে এবং বুলিন বন্ডের সাথে নেমে যাওয়ার সময় দামের ঝাঁকুনির পরিধি নির্ধারণ করে। এছাড়াও, উচ্চ-নিম্ন পয়েন্টের উপর ভিত্তি করে গতিশীল সমর্থন প্রতিরোধের উত্পাদন করে, যখন দাম সমর্থন প্রতিরোধের কাছাকাছি থাকে তখনই ক্রয়-বিক্রয় কার্যক্রম বাস্তবায়ন করে। ব্যবহারকারীরা নিজেরাই ট্রেন্ড ফিল্টার শর্তগুলি সেট করতে পারেন, যেমন সরল চলমান সমতলতা মূল্য এবং প্রবণতা দিকের সাথে সামঞ্জস্যপূর্ণ হলেই ট্রেডিং। এই কৌশলটি একাধিক প্রযুক্তিগত সূচককে সমন্বিতভাবে ব্যবহার করে, দৃ strong় বিচার, কার্যকরভাবে বাজারের সুযোগগুলি দখল করতে পারে।
এই কৌশলটি মূলত আরএসআই সূচক, ব্রিন ব্যান্ড এবং গতিশীল সমর্থন প্রতিরোধের 3 টি অংশ নিয়ে গঠিত।
RSI অংশটি ওভার-বই ওভার-সেলিংয়ের জন্য ব্যবহৃত হয়। RSI 30 এর নীচে ওভার-সেলিং অঞ্চল হিসাবে চিহ্নিত হয়, যখন এটি একটি কেনা-বেচা সংকেত দেয়। RSI 70 এর উপরে ওভার-সেলিং অঞ্চল হিসাবে চিহ্নিত হয়, যখন এটি একটি বিক্রয় সংকেত দেয়।
বুলিন ব্যান্ড হল দামের গড়রেখা এবং স্ট্যান্ডার্ড ডিফারেনশিয়ালের উপর ভিত্তি করে দামের স্বাভাবিক অস্থিরতা অঞ্চল থেকে বেরিয়ে যাওয়ার জন্য ব্যবহৃত হয়। দামগুলি যখন উপরের ট্রেলের কাছাকাছি আসে তখন বিক্রি হয় এবং যখন নীচের ট্রেলের কাছাকাছি আসে তখন কেনা হয়।
সাপোর্ট রেসিস্ট্যান্স অংশটি একটি নির্দিষ্ট সময়ের মধ্যে সর্বোচ্চ সর্বনিম্ন মূল্য (বা খোলার মূল্য) হিসাবে বেঞ্চমার্ক হিসাবে গতিশীল গণনা পদ্ধতি ব্যবহার করে, নির্দিষ্ট শতাংশের মধ্যে সীমাবদ্ধ করে এবং মূল্যের historicalতিহাসিক বিপরীত পয়েন্টগুলিকে মূল সাপোর্ট রেসিস্ট্যান্স পয়েন্ট হিসাবে রেকর্ড করে। যখন দামগুলি সমালোচনামূলক সাপোর্ট পয়েন্টের কাছাকাছি থাকে তখন বিক্রয় সংকেত দেওয়া হয়; যখন দামগুলি সমালোচনামূলক সাপোর্ট পয়েন্টের কাছাকাছি থাকে তখন ক্রয় সংকেত দেওয়া হয়।
সব মিলিয়ে, এই কৌশলটি ক্রয়-বিক্রয় ক্রিয়াকলাপটি তখনই বাস্তবায়িত হয় যখন RSI ওভার-বিক্রয় ওভার-বিক্রয়, দাম স্বাভাবিক পরিসরের বাইরে চলে যায় এবং গতিশীল সমর্থন প্রতিরোধের কাছাকাছি থাকে।
মৌলিক সূচকগুলি প্রযুক্তিগত সূচকগুলির সাথে একত্রিত করা হয়েছে। RSI মূলত ওভারবয় ওভারসেলিংয়ের বিচার করার সময়, ব্রিনের বন্ড ব্যবহার করে মূল্যের প্রযুক্তিগত রূপ নির্ধারণ করা হয়েছে।
ডায়নামিক সাপোর্ট রেসিস্ট্যান্সের হিসাব, যা মূল্য আন্দোলনের প্রকৃত সাপোর্ট রেসিস্ট্যান্সের কাছাকাছি।
ব্যবহারকারীরা ট্রেন্ড ফিল্টার যুক্ত করতে পারেন, আরএসআই এবং ব্রিন ব্যান্ডের সাথে কাজ করে, যা বিচারকে উন্নত করে এবং বেশিরভাগ গোলমাল সংকেতগুলি ফিল্টার করে।
আরএসআই প্যারামিটারগুলি ভুলভাবে সেট করা ভুল সিদ্ধান্তের কারণ হতে পারে। আরএসআই দীর্ঘ বা সংক্ষিপ্ত হলে শব্দ বাড়তে পারে। আরএসআই ওভার-বই ওভার-বিক্রয় থ্রেশহোল্ডটি ভুলভাবে সেট করাও ভুল হতে পারে।
বুইলিন-ব্যান্ডের প্যারামিটার যেমন দৈর্ঘ্য, StdDev গুণকের ভুল সেট করাও বিচার সঠিকতার উপর প্রভাব ফেলতে পারে।
ডায়নামিক সাপোর্ট রেসিস্ট্যান্স হিসাবের ঐতিহাসিক উচ্চ-নিম্নের কারণে বিলম্বিত হয়। ব্যবহারকারীকে যথাযথভাবে সাপোর্ট রেসিস্ট্যান্স প্যারামিটারগুলিকে অনুকূলিত করতে হবে যাতে সাপোর্ট রেসিস্ট্যান্সের স্তরটি বর্তমান মূল্যের কাছাকাছি থাকে।
এই কৌশলটি জটিল, একাধিক সূচক সমন্বয় একে অপরের সাথে হস্তক্ষেপ করতে পারে। ব্যবহারকারীদের সূচক প্যারামিটার পরীক্ষা করা উচিত, সূচক সংঘর্ষ হ্রাস করা উচিত। এছাড়াও সমন্বয় শর্তগুলি যথাযথভাবে সরলীকৃত করা যেতে পারে, ভুল বিচার সম্ভাবনা হ্রাস করা যায়।
আরএসআই প্যারামিটার সেটিং পরীক্ষা করুন, আরএসআই দৈর্ঘ্য অপ্টিমাইজ করুন, ওভার-বিক্রয় ওভার-বিক্রয় থ্রেশহোল্ড অতিক্রম করুন।
ব্রিনের প্যারামিটার সেটিং পরীক্ষা করুন, ব্রিনের দৈর্ঘ্য অপ্টিমাইজ করুন, StdDev গুণিতকগুলি দেখুন।
গতিশীল সমর্থন এবং প্রতিরোধের প্যারামিটারগুলিকে অনুকূলিত করুন, যাতে সমর্থন এবং প্রতিরোধের স্তরগুলি দামের কাছাকাছি থাকে। আপনি আরও সংক্ষিপ্ত সময়কাল, কম ঐতিহাসিক উচ্চ এবং নিম্ন সেট করতে পারেন।
RSI এর সাথে KDJ, MACD ইত্যাদির মতো অন্যান্য সহায়ক সূচকগুলি যুক্ত করুন বা পরীক্ষা করুন, যা বিচার সঠিকতা বাড়িয়ে তুলবে।
প্রবণতা ফিল্টার পরামিতি পরীক্ষা করুন, ফিল্টার দৈর্ঘ্য অপ্টিমাইজ করুন, হোল্ডিং সময় বাড়ান, অপ্রয়োজনীয় বিপরীত অপারেশন হ্রাস করুন।
এই কৌশলটি আরএসআই, ব্রিনব্যান্ড এবং গতিশীল সমর্থন প্রতিরোধের মতো একাধিক সূচককে সমন্বিতভাবে ব্যবহার করে, প্রতিটি সূচকের সুবিধাগুলি পুরোপুরি ব্যবহার করে, একে অপরকে যাচাই করে এবং দৃ strong় বিচার করে। একই সাথে, প্রবণতা ফিল্টার যুক্ত করা যেতে পারে যাতে শব্দটি আরও হ্রাস করা যায়। এই কৌশলটির প্যারামিটারগুলি নমনীয়ভাবে সেট করা হয়, ব্যবহারকারীরা তাদের প্রয়োজন অনুসারে প্যারামিটার প্যাকেজটি সামঞ্জস্য করতে পারেন। প্যারামিটার অপ্টিমাইজেশন পরীক্ষার পরে, প্রভাব আরও স্পষ্ট হবে। এটি একটি খুব সম্ভাব্য পরিমাণগত কৌশল
/*backtest
start: 2023-01-17 00:00:00
end: 2024-01-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("RSI + BB + S/R Strategy with Trend Filter", shorttitle="RSI + BB + S/R + Trend Filter", overlay=true)
// RSI Settings
rsi_length = input.int(14, title="RSI Length")
overbought = input.int(70, title="Overbought Level")
oversold = input.int(30, title="Oversold Level")
// Bollinger Bands Settings
bb_length = input.int(20, title="BB Length")
bb_deviation = input.float(2.0, title="BB Deviation")
// Dynamic Support/Resistance Settings
pivot_period = input.int(10, title="Pivot Period")
pivot_source = input.string("High/Low", title="Pivot Source", options=["High/Low", "Close/Open"])
max_pivots = input.int(20, title="Maximum Number of Pivot", minval=5, maxval=100)
channel_width = input.int(10, title="Maximum Channel Width %", minval=1)
max_sr_levels = input.int(5, title="Maximum Number of S/R Levels", minval=1, maxval=10)
min_strength = input.int(2, title="Minimum Strength", minval=1, maxval=10)
// Trend Filter Settings
use_trend_filter = input.bool(false, title="Use Trend Filter")
trend_filter_length = input.int(50, title="Trend Filter Length")
// Calculate RSI and Bollinger Bands
rsi = ta.rsi(close, rsi_length)
basis = ta.sma(close, bb_length)
deviation = ta.stdev(close, bb_length)
upper_band = basis + bb_deviation * deviation
lower_band = basis - bb_deviation * deviation
// Plot Bollinger Bands on the chart
plot(upper_band, color=color.blue, title="Upper Bollinger Band")
plot(lower_band, color=color.red, title="Lower Bollinger Band")
// Dynamic Support/Resistance Calculation
float src1 = pivot_source == "High/Low" ? high : math.max(close, open)
float src2 = pivot_source == "High/Low" ? low : math.min(close, open)
float ph = ta.pivothigh(src1, pivot_period, pivot_period)
float pl = ta.pivotlow(src2, pivot_period, pivot_period)
// Calculate maximum S/R channel zone width
prdhighest = ta.highest(300)
prdlowest = ta.lowest(300)
cwidth = (prdhighest - prdlowest) * channel_width / 100
var pivotvals = array.new_float(0)
if ph or pl
array.unshift(pivotvals, ph ? ph : pl)
if array.size(pivotvals) > max_pivots
array.pop(pivotvals)
get_sr_vals(ind) =>
float lo = array.get(pivotvals, ind)
float hi = lo
int numpp = 0
for y = 0 to array.size(pivotvals) - 1 by 1
float cpp = array.get(pivotvals, y)
float wdth = cpp <= lo ? hi - cpp : cpp - lo
if wdth <= cwidth
if cpp <= hi
lo := math.min(lo, cpp)
else
hi := math.max(hi, cpp)
numpp += 1
[hi, lo, numpp]
var sr_up_level = array.new_float(0)
var sr_dn_level = array.new_float(0)
sr_strength = array.new_float(0)
find_loc(strength) =>
ret = array.size(sr_strength)
for i = ret > 0 ? array.size(sr_strength) - 1 : na to 0 by 1
if strength <= array.get(sr_strength, i)
break
ret := i
ret
check_sr(hi, lo, strength) =>
ret = true
for i = 0 to array.size(sr_up_level) > 0 ? array.size(sr_up_level) - 1 : na by 1
if array.get(sr_up_level, i) >= lo and array.get(sr_up_level, i) <= hi or array.get(sr_dn_level, i) >= lo and array.get(sr_dn_level, i) <= hi
if strength >= array.get(sr_strength, i)
array.remove(sr_strength, i)
array.remove(sr_up_level, i)
array.remove(sr_dn_level, i)
else
ret := false
break
ret
if ph or pl
array.clear(sr_up_level)
array.clear(sr_dn_level)
array.clear(sr_strength)
for x = 0 to array.size(pivotvals) - 1 by 1
[hi, lo, strength] = get_sr_vals(x)
if check_sr(hi, lo, strength)
loc = find_loc(strength)
if loc < max_sr_levels and strength >= min_strength
array.insert(sr_strength, loc, strength)
array.insert(sr_up_level, loc, hi)
array.insert(sr_dn_level, loc, lo)
if array.size(sr_strength) > max_sr_levels
array.pop(sr_strength)
array.pop(sr_up_level)
array.pop(sr_dn_level)
// Calculate the Trend Filter
trend_filter = use_trend_filter ? ta.sma(close, trend_filter_length) : close
// Buy Condition (RSI + Proximity to Support + Trend Filter)
buy_condition = ta.crossover(rsi, oversold) and close <= ta.highest(high, max_sr_levels) and close >= ta.lowest(low, max_sr_levels) and (not use_trend_filter or close > trend_filter)
// Sell Condition (RSI + Proximity to Resistance + Trend Filter)
sell_condition = ta.crossunder(rsi, overbought) and close >= ta.lowest(low, max_sr_levels) and close <= ta.highest(high, max_sr_levels) and (not use_trend_filter or close < trend_filter)
// Strategy Orders
strategy.entry("Buy", strategy.long, when = buy_condition)
strategy.entry("Sell", strategy.short, when = sell_condition)