
এই কৌশলটি ব্রিন-ব্যান্ডের উপর ভিত্তি করে একটি দ্বি-ট্র্যাক ব্রেক ট্রেডিং কৌশল। এটি ব্রিন-ব্যান্ডের উপরের এবং নীচের ট্র্যাকগুলিকে ক্রয় এবং বিক্রয় সংকেত হিসাবে ব্যবহার করে এবং ঝুঁকি নিয়ন্ত্রণের জন্য স্টপ লস সেট করে।
এই কৌশলটি ব্রিনের ব্যান্ডের উপরের এবং নীচের ট্রেল ব্যবহার করে। ব্রিনের ব্যান্ডটি সমান্তরাল এবং এর সাথে সংশ্লিষ্ট দুটি স্ট্যান্ডার্ড ডিফারেনশিয়াল চ্যানেল দ্বারা গঠিত। যখন দাম ব্রিনের ব্যান্ডের উপরে পৌঁছায় বা ভেঙে যায় তখন একটি বিক্রয় সংকেত উত্পন্ন হয়; যখন দাম ব্রিনের ব্যান্ডের নীচে পৌঁছায় বা ভেঙে যায় তখন একটি ক্রয় সংকেত উত্পন্ন হয়। এছাড়াও, কৌশলটি একটি স্টপ লস সেট করে। যখন দাম সমান্তরালের নীচে একটি নির্দিষ্ট অনুপাতের নীচে থাকে তখন স্টপ লস সনাক্ত করা হয়।
বিশেষত, কৌশলটি একটি নির্দিষ্ট সময়ের গড় (যেমন 20 দিন) এবং তার স্ট্যান্ডার্ড ডিফারেনশিয়ালের দ্বিগুণ গণনা করে ব্রিনের বন্ডটি আঁকতে পারে। উপরের লাইনটি গড়ের দ্বিগুণ এবং স্ট্যান্ডার্ড ডিফারেনশিয়ালের দ্বিগুণ এবং নীচের লাইনটি গড়ের বিয়োগের দ্বিগুণ। যখন বন্ধের দামটি উপরের লাইনের চেয়ে বেশি বা সমান হয় তখন বিক্রয় সংকেত দেওয়া হয়; যখন বন্ধের দামটি নীচের লাইনের চেয়ে কম বা সমান হয় তখন ক্রয় সংকেত দেওয়া হয়। তদতিরিক্ত, যদি দামটি গড়ের চেয়ে নির্দিষ্ট শতাংশের নীচে থাকে (যেমন 1%), তবে স্টপ লস সংকেত দেওয়া হয়।
এই কৌশলটি ব্রিন ব্যান্ডের বৈশিষ্ট্যগুলি ব্যবহার করে, যখন দামের অস্বাভাবিক অস্থিরতা দেখা দেয় তখন ট্রেডিং সংকেত প্রেরণ করতে সক্ষম হয়, যার ফলে দামের বিপরীত হওয়ার সুযোগ ধরা যায়। কেবলমাত্র সমান্তরাল কৌশল অনুসরণ করার তুলনায়, এই কৌশলটি যখন ওঠানামা বাড়বে তখন ট্রেডিং সংকেত উত্পন্ন করতে সক্ষম হয়, যা মিথ্যা ব্রেকআউটের ঝুঁকিকে কিছুটা এড়াতে পারে।
সহজ ডাবল-রেল ব্রেকআউট কৌশলগুলির তুলনায়, এই কৌশলটি ক্ষতির ব্যবস্থা যুক্ত করে। এটি পৃথক ত্রুটিযুক্ত সংকেত দ্বারা সৃষ্ট ক্ষতিকে কার্যকরভাবে নিয়ন্ত্রণ করতে সক্ষম করে। স্টপ পয়েন্টগুলিও যুক্তিসঙ্গতভাবে সেট করা হয়, গড়ের কাছাকাছি, অত্যধিক ক্ষয়ক্ষতি এড়াতে অত্যধিক ক্ষয়ক্ষতি এড়ানো যায়।
এই কৌশলটির সবচেয়ে বড় ঝুঁকি হল যে বুলিন বন্ড নিজেই ট্রেডিং সিগন্যালের কার্যকারিতা নিশ্চিত করতে পারে না। বাজারের বিশেষ পরিস্থিতিতে যখন দামের অযৌক্তিকভাবে বড় আকারের ওঠানামা হতে পারে, তখন বুলিন বন্ডের ট্রেডিং সিগন্যালটি ভুল হতে পারে। এই সময়ে বড় ক্ষতির সম্ভাবনা রয়েছে।
অন্যদিকে, স্টপ লস পয়েন্টের সেটিংটি খুব বেশি র্যাডিকাল বা রক্ষণশীল হতে পারে, যা চূড়ান্ত উপার্জনকে প্রভাবিত করে। যদি স্টপ লস খুব বড় হয় তবে কার্যকর সংকেতটি ঘন ঘন বন্ধ হয়ে যেতে পারে; এবং যদি স্টপ লস খুব ছোট হয় তবে ক্ষতি কার্যকরভাবে নিয়ন্ত্রণ করা যায় না।
এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে উন্নত করা যেতে পারেঃ
বিভিন্ন প্যারামিটারের সমন্বয় পরীক্ষা করে, যেমন গড়-রেখার সময়কাল, স্ট্যান্ডার্ড ডিফেন্সের গুণাগুণ, স্টপডাউন শতাংশ ইত্যাদির বিভিন্ন মান, সর্বোত্তম প্যারামিটার খুঁজতে;
অন্যান্য সূচক যুক্ত করা, একাধিক ফিল্টারিং শর্ত তৈরি করা এবং ভুল সংকেত এড়ানো;
অপ্টিমাইজড স্টপ লস কৌশল, যেমন সরল স্টপ লস এর পরিবর্তে মোবাইল স্টপ লস বা ব্যাচ স্টপ লস ব্যবহার করা;
ট্রেডিং সিগন্যাল নিশ্চিতকরণের জন্য বিভিন্ন সময়কালের সাথে বুলিন ব্যান্ড যুক্ত করুন।
সামগ্রিকভাবে, এই কৌশলটি একটি কার্যকর প্রবণতা অনুসরণ এবং দ্বৈত-রেল বিরতির সমন্বয়ের কৌশল। এটি মূল্যের ওঠানামা বাড়ার সময় বিপরীতমুখী সুযোগগুলি ধরতে এবং ঝুঁকি নিয়ন্ত্রণের জন্য স্টপ লস সেট করতে সক্ষম। প্যারামিটার অপ্টিমাইজেশন, সংকেত ফিল্টারিং বৃদ্ধি এবং স্টপ লস কৌশলগুলিকে অনুকূলিতকরণের মতো উপায়ে কৌশলটির স্থিতিশীলতা এবং লাভজনকতা আরও বাড়ানো যেতে পারে।
/*backtest
start: 2024-01-28 00:00:00
end: 2024-02-04 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Bollinger Bands Strategy by Royce Mars", overlay=true)
length = input.int(20, minval=1)
maType = input.string("SMA", "Basis MA Type", options = ["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
src = input(close, title="Source")
mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev")
stopLossPercent = input.float(1.0, title="Stop Loss Percent", minval=0.1, maxval=10, step=0.1)
ma(source, length, _type) =>
switch _type
"SMA" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
basis = ma(src, length, maType)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
// Buy and Sell Conditions
buyCondition = close <= lower
sellCondition = close >= upper
// Stop Loss Condition
stopLossCondition = close < basis * (1 - stopLossPercent / 100)
// Strategy Execution
strategy.entry("Buy", strategy.long, when=buyCondition)
strategy.close("Buy", when=sellCondition or stopLossCondition)
strategy.entry("Sell", strategy.short, when=sellCondition)
strategy.close("Sell", when=buyCondition)
// Plotting on the Chart
plotshape(buyCondition, title="Buy Signal", color=color.green, style=shape.labelup, location=location.belowbar)
plotshape(sellCondition or stopLossCondition, title="Sell Signal", color=color.red, style=shape.labeldown, location=location.abovebar)
// Plotting the Bollinger Bands
plot(basis, "Basis", color=color.orange)
p1 = plot(upper, "Upper Band", color=color.blue)
p2 = plot(lower, "Lower Band", color=color.blue)
fill(p1, p2, title="Background", color=color.rgb(33, 150, 243, 95))