
মাদ্রিদ-ব্যান্ডেড আরএসআই বর্ধিত মাল্টি-টাইম ফ্রেম ইএমএ ট্রেন্ড কৌশল একটি সমন্বিত পরিমাণগত ট্রেডিং সিস্টেম যা বুদ্ধিমানভাবে একটি চলমান গড়-ব্যান্ডেড সিস্টেম (ম্যাড্রিড রিবন) এবং একটি অপেক্ষাকৃত দুর্বল সূচক (আরএসআই) ফিল্টারকে একত্রিত করে, যা ট্রেন্ড সনাক্তকরণ এবং ট্রেডিংয়ের জন্য একটি দ্বৈত নিশ্চিতকরণ প্রক্রিয়া সরবরাহ করে। এই কৌশলটির কেন্দ্রবিন্দুটি হল একটি কাঠামোগত ব্যান্ডেড যা একাধিক সময়কালের বিভিন্ন সূচকীয় চলমান গড় (ইএমএ) পর্যবেক্ষণের মাধ্যমে গঠিত হয়, যখন RSI সূচকটি ফিল্টারিং শর্ত হিসাবে কার্যকরভাবে মিথ্যা সংকেত হ্রাস করার জন্য প্রবর্তিত হয়। কৌশলটিতে একটি স্বয়ংক্রিয় ট্রেডিং বৈশিষ্ট্য রয়েছে, যার মধ্যে একটি পূর্বনির্ধারিত স্টপ লস মেশিন রয়েছে, যা গ্রিন এবং লাল চলমান গড়ের সংখ্যা গণনা করে বাজারের প্রবণ এবং দিকনির্ধনকতা নির্ধারণ করে, এবং ক্রয়
এই কৌশলটির মূল নীতিটি একাধিক সময় ফ্রেমের চলমান গড়ের গোষ্ঠীর বিশ্লেষণ এবং RSI সূচকগুলির ফিল্টারিংয়ের উপর ভিত্তি করেঃ
মাল্টি টাইম ফ্রেম মুভিং এভারেজ ব্যান্ডেড সিস্টেম: কৌশলটি 18 টি চলমান গড় তৈরি করে যা 5 থেকে 90 পিরিয়ডের মধ্যে থাকে এবং 100 পিরিয়ডের একটি বেঞ্চলাইন দিয়ে তুলনা করা হয়। প্রতিটি চলমান গড়কে তার পরিবর্তনের দিকনির্দেশ এবং বেঞ্চলাইনের সাথে সম্পর্কিত অবস্থানের উপর ভিত্তি করে রঙিন চিহ্নিত করা হয়ঃ
প্রবণতার পরিমাণকৌশলঃ প্রবণতার শক্তিকে পরিমাপ করার জন্য, সবুজ (উত্থান) এবং লাল (হ্রাস) চলমান গড়ের সংখ্যা গণনা করুনঃ
আরএসআই ফিল্টার: মিথ্যা সংকেত কমানোর জন্য, RSI সূচকগুলিকে ফিল্টারিং শর্ত হিসাবে চালু করার কৌশলঃ
ঝুঁকি ব্যবস্থাপনা: কৌশলটি শতকরা হার ভিত্তিক স্টপ-অফ-লস প্যারামিটার সেট করেঃ
তহবিল ব্যবস্থাপনাকৌশলঃ ব্যবহারকারীকে প্রাথমিক তহবিলের পরিমাণ নির্ধারণ করতে এবং বর্তমান মূল্যের ভিত্তিতে স্বয়ংক্রিয়ভাবে অবস্থান আকার গণনা করতে দেয়।
একাধিক নিশ্চিতকরণ ব্যবস্থা: একটি চলমান গড় ব্যান্ড সিস্টেম এবং RSI সূচক সংযুক্ত করে, কৌশলটি একাধিক নিশ্চিতকরণ ব্যবস্থা সরবরাহ করে, যা ভুল সংকেতের সম্ভাবনাকে উল্লেখযোগ্যভাবে হ্রাস করে। চলমান গড় ক্লাস্টার এবং RSI একই সাথে শর্ত পূরণ করার সময় সংকেতের নির্ভরযোগ্যতা ব্যাপকভাবে বৃদ্ধি পায়।
প্রবণতার পরিমাণ: সহজ ক্রস কৌশল থেকে ভিন্ন, এই কৌশলটি বিভিন্ন রঙের মুভিং এভারেজের সংখ্যা গণনা করে প্রবণতার শক্তিকে পরিমাপ করে, ট্রেডিং সিদ্ধান্তকে আরও বস্তুনিষ্ঠ এবং ডেটা চালিত করে।
ভিজ্যুয়াল ট্রেডিং সিগন্যালকৌশলঃ পটভূমির রঙ পরিবর্তন এবং আকৃতির ট্যাগের মাধ্যমে চার্টে স্পষ্টভাবে সংকেত প্রদর্শন করা, যাতে ব্যবসায়ীরা সম্ভাব্য ব্যবসায়ের সুযোগগুলিকে স্বজ্ঞাতভাবে সনাক্ত করতে পারে।
অন্তর্নির্মিত ঝুঁকি ব্যবস্থাপনা: কৌশলটি ডিফল্টরূপে একটি স্টপ-অফ-লস সিস্টেমকে অন্তর্ভুক্ত করে, প্রতিটি লেনদেনের জন্য সর্বোচ্চ লাভ এবং ক্ষতির একটি স্পষ্ট পূর্বনির্ধারিত এবং কার্যকরভাবে ঝুঁকির প্রান্তটি নিয়ন্ত্রণ করে।
অভিযোজনযোগ্যনীতিমালাঃ ব্যবহারকারীকে ইএমএ বা এসএমএ ব্যবহার করার অনুমতি দেয়, যা বিভিন্ন বাজার পরিস্থিতিতে নমনীয়ভাবে সামঞ্জস্য করা যায়। ইএমএ সাম্প্রতিক মূল্যের পরিবর্তনের জন্য আরও সংবেদনশীল, এবং এসএমএ আরও মসৃণ, বিভিন্ন বাজার অবস্থার জন্য বিভিন্ন সেটিং।
সম্পূর্ণ বাজার পর্যবেক্ষণএই কৌশলটি 18 টি ভিন্ন সময়কালের চলমান গড়ের উপর নজর রেখে বাজারের গতিশীলতাকে পুরোপুরি ক্যাপচার করতে সক্ষম হয়, যার ফলে একক সময়সীমার বিশ্লেষণের ফলে সম্ভাব্য অন্ধ পয়েন্টগুলি হ্রাস করা যায়।
প্রবণতা বিপরীত: যেহেতু কৌশলটি একাধিক চলমান গড়ের উপর নির্ভর করে, প্রবণতা দ্রুত পাল্টে গেলে প্রতিক্রিয়া বিলম্ব হতে পারে, যার ফলে প্রবেশ বা প্রস্থান করার সময়টি অনুকূল নয়। এই ঝুঁকির বিরুদ্ধে, সংক্ষিপ্ত সময়ের সূচক যুক্ত করা বা আরএসআই প্যারামিটারগুলিকে সামঞ্জস্য করার জন্য কৌশলটির সংবেদনশীলতা বাড়ানোর জন্য বিবেচনা করা যেতে পারে।
ফিল্টারিংয়ের কঠোরতার কারণে সুযোগগুলি মিস করা হচ্ছে:আরএসআই ফিল্টার শর্তগুলি আরও কঠোরভাবে সেট করা হয়েছে ((<30 এবং> 70), কিছু সম্ভাব্য ব্যবসায়ের সুযোগ মিস করা হতে পারে। ব্যবহারকারী নির্দিষ্ট বাজারের বৈশিষ্ট্য অনুসারে আরএসআই থ্রেশহোল্ডকে যথাযথভাবে সামঞ্জস্য করতে পারেন, যেমন ক্রয় শর্তগুলি আরএসআই <40 এ প্রশস্ত করা, বিক্রয় শর্তগুলি আরএসআই> 60 এ প্রশস্ত করা।
ফিক্সড স্টপস্টপ ক্ষতির শতাংশের সীমাবদ্ধতাকৌশলঃ স্থির শতাংশে স্টপ লস সেটিং ব্যবহার করুন (০.৫% এবং ১%), যা বিভিন্ন অস্থিরতার সাথে বাজারে যথেষ্ট নমনীয় নাও হতে পারে। সম্পদটির গড় প্রকৃত অস্থিরতা (এটিআর) গতিশীলতার উপর ভিত্তি করে স্টপ লস স্তরটি সামঞ্জস্য করার পরামর্শ দেওয়া হয়েছে।
মার্কেট ওভারহেড ঝুঁকি: বাজারের অনুভূমিক সমন্বয় পর্যায়ে, মুভিং এভারেজগুলি ঘন ঘন একত্রিত হতে পারে, যার ফলে সংকেতগুলি বিভ্রান্ত হয়। অতিরিক্ত অনুভূমিক সনাক্তকরণ প্রক্রিয়া যুক্ত করে (যেমন ADX সূচক) কম ওঠানামা পরিবেশে অত্যধিক লেনদেন এড়ানো যেতে পারে।
পরামিতি সংবেদনশীলতা: কৌশলগত কর্মক্ষমতা প্যারামিটার নির্বাচনের (যেমন মুভিং এভারেজ চক্র এবং আরএসআই দৈর্ঘ্য) জন্য সংবেদনশীল, এবং প্যারামিটার নির্বাচনটি ভুলভাবে কৌশলটির দুর্বল পারফরম্যান্সের কারণ হতে পারে। রিয়েল-টাইমে ব্যবহারের আগে পর্যাপ্ত প্যারামিটার অপ্টিমাইজেশন এবং পুনরায় পরীক্ষা করার পরামর্শ দেওয়া হয়।
ডায়নামিক স্টপডাউন: এটিআর সূচকের সাথে স্থির শতাংশের স্টপ-অফ-লস সেটিং প্রতিস্থাপন করুন, যা বাজারের অস্থিরতার পরিবর্তনের সাথে আরও ভালভাবে খাপ খাইয়ে নিতে পারে। উদাহরণস্বরূপ, স্টপ লস 1.5 সেট করা যেতে পারে*ATR, থামুন 1*এটিআর, ঝুঁকি ব্যবস্থাপনাকে আরও নমনীয় এবং বাজার অভিযোজনযোগ্য করে তোলা।
প্রবণতা তীব্রতা ফিল্টার যোগ করুনট্রেন্ডের শক্তি পরিমাপ করার জন্য ADX সূচক প্রবর্তন করা হয়েছে, শুধুমাত্র ADX> 25 এর শক্তিশালী ট্রেন্ডিং পরিবেশে ট্রেড করা হয়েছে, দুর্বল ট্রেন্ডিং বা ক্রসওভার বাজারে অত্যধিক মিথ্যা সংকেত তৈরি করা এড়ানো হয়েছে।
RSI প্যারামিটার অপ্টিমাইজ করুন: বর্তমান কৌশলটি স্ট্যান্ডার্ড 14 চক্রের আরএসআই ব্যবহার করে, নির্দিষ্ট সম্পদ বৈশিষ্ট্য এবং সময় ফ্রেমের উপর ভিত্তি করে আরএসআই চক্রের সমন্বয় বিবেচনা করা যেতে পারে, বা ডাবল আরএসআই সিস্টেম ব্যবহার করা যেতে পারে (যেমন একই সময়ে স্বল্প চক্র এবং দীর্ঘ চক্রের আরএসআই পরীক্ষা করা) মিথ্যা সংকেত কমাতে।
প্রবর্তন করা হয়েছে: লেনদেনের পরিমাণ বিশ্লেষণের মাত্রা যোগ করা, যাতে সিগন্যালের সময় পর্যাপ্ত বাজার অংশগ্রহণের সমর্থন নিশ্চিত করা যায় এবং লেনদেনের সংকেতের নির্ভরযোগ্যতা বাড়ানো যায়। উদাহরণস্বরূপ, ক্রয় সংকেত উপস্থিত হলে লেনদেনের পরিমাণ এন-দিনের গড়ের চেয়ে বেশি হতে পারে।
পজিশনের গতিশীলতা: ট্রেন্ডের শক্তির উপর নির্ভর করে পজিশনের আকারকে গতিশীলভাবে সামঞ্জস্য করুন (সবুজ বা লাল চলমান গড়ের সংখ্যা), শক্তিশালী ট্রেন্ডে পজিশন বাড়ান, দুর্বল ট্রেন্ডে পজিশন হ্রাস করুন, তহবিলের ব্যবহারের দক্ষতা অনুকূলিত করুন।
বাজার পরিবেশে যোগদান করুন: বর্তমান বাজার পরিস্থিতির উপর অস্থিরতার সূচক (যেমন ভিআইএক্স বা এটিআর) ব্যবহার করে, উচ্চ অস্থিরতার সময় কৌশলগত প্যারামিটারগুলি সামঞ্জস্য করুন বা ট্রেডিং স্থগিত করুন এবং চরম বাজার পরিস্থিতিতে ঝুঁকি হ্রাস করুন।
মাদ্রিদ-ব্যান্ডেড আরএসআই বর্ধিত মাল্টি-টাইমফ্রেম ইএমএ ট্রেন্ড কৌশলটি একটি সম্পূর্ণ কার্যকরী পরিমাণগত ট্রেডিং সিস্টেম যা ট্রেডারদের একটি শক্তিশালী প্রবণতা সনাক্তকরণ এবং ট্রেডিং কার্যকর করার সরঞ্জাম সরবরাহ করে। এটি একটি চলমান গড়-ব্যান্ডের কাঠামো এবং আরএসআই ফিল্টারিংয়ের সাথে মিলিত। কৌশলটির মূল সুবিধা হ’ল এর একাধিক নিশ্চিতকরণ ব্যবস্থা এবং প্রবণতা-শক্তির পরিমাণের ক্ষমতা, যা ট্রেডিং সিদ্ধান্তকে আরও উদ্দেশ্যমূলক এবং ডেটা-চালিত করে।
ট্রেন্ডিং মার্কেটে কৌশলগুলি ভাল পারফরম্যান্স করার পরেও, তারা হ্রাস বাজার এবং দ্রুত বিপরীতমুখী পরিবেশে চ্যালেঞ্জের মুখোমুখি হতে পারে। গতিশীল স্টপ লস, ট্রেন্ডিং শক্তি ফিল্টারিং এবং ট্রেডিং ভলিউম নিশ্চিতকরণের মতো অপ্টিমাইজেশনের ব্যবস্থাগুলি প্রবর্তন করে কৌশলগুলির স্থিতিশীলতা এবং অভিযোজনশীলতা আরও বাড়ানো যেতে পারে।
এই কৌশলটি বিশেষত মাঝারি এবং দীর্ঘমেয়াদী প্রবণতা ব্যবসায়ীদের জন্য উপযুক্ত, যারা যুক্তিসঙ্গত প্যারামিটার সমন্বয় এবং ঝুঁকি পরিচালনার মাধ্যমে বিভিন্ন ধরণের বাজার পরিবেশে উচ্চ-সম্ভাব্যতার ব্যবসায়ের সুযোগগুলি সন্ধান করতে সক্ষম হন। যাইহোক, যে কোনও ব্যবসায়ের কৌশল ব্যবসায়ীর ঝুঁকি পছন্দ এবং বিনিয়োগের লক্ষ্যগুলির সাথে মেলে।
/*backtest
start: 2024-03-24 00:00:00
end: 2025-03-23 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BNB_USDT"}]
*/
//@version=5
strategy("Madrid Ribbon Strategy with Backtesting", shorttitle="Madrid Ribbon Strat", overlay=true, default_qty_type=strategy.cash, default_qty_value=100000)
// Inputs
i_exp = input.bool(true, title="Use Exponential MA")
wallet_balance = input.float(100000, title="Starting Wallet Balance", minval=1000)
// RSI Settings
rsi_length = input.int(14, title="RSI Length")
rsi = ta.rsi(close, rsi_length)
// Profit Target & Stop Loss (%)
long_take_profit_perc = input.float(0.5, title="Long Take Profit (%)") / 100 // 0.5%
long_stop_loss_perc = input.float(1.0, title="Long Stop Loss (%)") / 100 // 1%
short_take_profit_perc = input.float(0.5, title="Short Take Profit (%)") / 100 // 0.5%
short_stop_loss_perc = input.float(1.0, title="Short Stop Loss (%)") / 100 // 1%
// Source
src = close
// Compute Moving Averages
ma05 = i_exp ? ta.ema(src, 5) : ta.sma(src, 5)
ma10 = i_exp ? ta.ema(src, 10) : ta.sma(src, 10)
ma15 = i_exp ? ta.ema(src, 15) : ta.sma(src, 15)
ma20 = i_exp ? ta.ema(src, 20) : ta.sma(src, 20)
ma25 = i_exp ? ta.ema(src, 25) : ta.sma(src, 25)
ma30 = i_exp ? ta.ema(src, 30) : ta.sma(src, 30)
ma35 = i_exp ? ta.ema(src, 35) : ta.sma(src, 35)
ma40 = i_exp ? ta.ema(src, 40) : ta.sma(src, 40)
ma45 = i_exp ? ta.ema(src, 45) : ta.sma(src, 45)
ma50 = i_exp ? ta.ema(src, 50) : ta.sma(src, 50)
ma55 = i_exp ? ta.ema(src, 55) : ta.sma(src, 55)
ma60 = i_exp ? ta.ema(src, 60) : ta.sma(src, 60)
ma65 = i_exp ? ta.ema(src, 65) : ta.sma(src, 65)
ma70 = i_exp ? ta.ema(src, 70) : ta.sma(src, 70)
ma75 = i_exp ? ta.ema(src, 75) : ta.sma(src, 75)
ma80 = i_exp ? ta.ema(src, 80) : ta.sma(src, 80)
ma85 = i_exp ? ta.ema(src, 85) : ta.sma(src, 85)
ma90 = i_exp ? ta.ema(src, 90) : ta.sma(src, 90)
ma100 = i_exp ? ta.ema(src, 100) : ta.sma(src, 100)
// Function for ribbon color
maColor(_ma, _maRef) =>
diffMA = ta.change(_ma)
resultColor = diffMA >= 0 and _ma > _maRef ? color.lime :
diffMA < 0 and _ma > _maRef ? color.maroon :
diffMA <= 0 and _ma < _maRef ? color.red :
diffMA >= 0 and _ma < _maRef ? color.green : color.gray
resultColor
// Count Green and Red Ribbons
count_green = 0
count_red = 0
mas = array.new_float(18)
array.set(mas, 0, ma05)
array.set(mas, 1, ma10)
array.set(mas, 2, ma15)
array.set(mas, 3, ma20)
array.set(mas, 4, ma25)
array.set(mas, 5, ma30)
array.set(mas, 6, ma35)
array.set(mas, 7, ma40)
array.set(mas, 8, ma45)
array.set(mas, 9, ma50)
array.set(mas, 10, ma55)
array.set(mas, 11, ma60)
array.set(mas, 12, ma65)
array.set(mas, 13, ma70)
array.set(mas, 14, ma75)
array.set(mas, 15, ma80)
array.set(mas, 16, ma85)
array.set(mas, 17, ma90)
for i = 0 to array.size(mas) - 1
ma = array.get(mas, i)
col = maColor(ma, ma100)
count_green += col == color.lime or col == color.green ? 1 : 0
count_red += col == color.red or col == color.maroon ? 1 : 0
// Buy/Sell Conditions
buy_signal = count_green >= 13
sell_signal = count_red >= 9
// RSI Filtering
rsi_buy = buy_signal and rsi < 30
rsi_sell = sell_signal and rsi > 70
// Calculate Entry, Take Profit & Stop Loss for Long and Short
entry_price = close
long_take_profit = entry_price * (1 + long_take_profit_perc) // +0.5%
long_stop_loss = entry_price * (1 - long_stop_loss_perc) // -1%
short_take_profit = entry_price * (1 - short_take_profit_perc) // -0.5%
short_stop_loss = entry_price * (1 + short_stop_loss_perc) // +1%
// Backtesting Orders
if rsi_buy
strategy.entry("Buy", strategy.long, qty=wallet_balance / close)
strategy.exit("Long Exit", from_entry="Buy", limit=long_take_profit, stop=long_stop_loss)
alert("📈 Buy Signal! Entering long trade at " + str.tostring(entry_price), alert.freq_once_per_bar_close)
if rsi_sell
strategy.entry("Sell", strategy.short, qty=wallet_balance / close)
strategy.exit("Short Exit", from_entry="Sell", limit=short_take_profit, stop=short_stop_loss)
alert("📉 Sell Signal! Entering short trade at " + str.tostring(entry_price), alert.freq_once_per_bar_close)
// Highlight Chart Background Based on Ribbon Counts
bgcolor(count_green >= 13 ? color.new(color.green, 90) : count_red >= 9 ? color.new(color.red, 90) : na, title="Ribbon Trend Highlight")
// Plot "B" when Buy Signal is active
plotshape(rsi_buy, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="B")
// Plot "S" when Sell Signal is active
plotshape(rsi_sell, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="S")
// Plot the Madrid Ribbon (all MAs)
plot(ma05, color=maColor(ma05, ma100), title="MA05", linewidth=1)
plot(ma10, color=maColor(ma10, ma100), title="MA10", linewidth=1)
plot(ma15, color=maColor(ma15, ma100), title="MA15", linewidth=1)
plot(ma20, color=maColor(ma20, ma100), title="MA20", linewidth=1)
plot(ma25, color=maColor(ma25, ma100), title="MA25", linewidth=1)
plot(ma30, color=maColor(ma30, ma100), title="MA30", linewidth=1)
plot(ma35, color=maColor(ma35, ma100), title="MA35", linewidth=1)
plot(ma40, color=maColor(ma40, ma100), title="MA40", linewidth=1)
plot(ma45, color=maColor(ma45, ma100), title="MA45", linewidth=1)
plot(ma50, color=maColor(ma50, ma100), title="MA50", linewidth=1)
plot(ma55, color=maColor(ma55, ma100), title="MA55", linewidth=1)
plot(ma60, color=maColor(ma60, ma100), title="MA60", linewidth=1)
plot(ma65, color=maColor(ma65, ma100), title="MA65", linewidth=1)
plot(ma70, color=maColor(ma70, ma100), title="MA70", linewidth=1)
plot(ma75, color=maColor(ma75, ma100), title="MA75", linewidth=1)
plot(ma80, color=maColor(ma80, ma100), title="MA80", linewidth=1)
plot(ma85, color=maColor(ma85, ma100), title="MA85", linewidth=1)
plot(ma90, color=maColor(ma90, ma100), title="MA90", linewidth=1)
plot(ma100, color=maColor(ma100, ma100), title="MA100", linewidth=2)