
ওয়েভ স্ট্র্যাটেজি (Bollinger Bands Strategy) হল একটি ক্লাসিক কৌশল যা প্রবণতা ট্র্যাকিং এবং ওভার-বিক্রয় ওভার-বিক্রয় সংকেত জন্য বোলিংয়ের ব্যান্ড ব্যবহার করে। এই সংস্করণটি মূল কৌশলটির উপর ভিত্তি করে ঝুঁকি নিয়ন্ত্রণের জন্য ক্ষতির ব্যবস্থা যোগ করে।
কৌশলটি ব্রিন বন্ডের উপরের এবং নীচের রেলের গোল্ডেন ফোর্স দ্বারা বাজারের ওভারবয় ও ওভারসেলের বিচার করে। ব্রিন বন্ডের ট্র্যাকিংয়ের মাধ্যমে ট্রেন্ড ট্র্যাকিং করা হয়। ব্রিন বন্ডের উপরের এবং নীচের রেলের মধ্যে অঞ্চলটি বর্তমান বাজারের ওঠানামার পরিধিকে প্রতিফলিত করে। ব্রিন বন্ডটি মধ্যম, উপরের এবং নীচের রেলের দ্বারা গঠিত, মধ্যমটি একটি এন-দিনের সরল চলমান গড়, এবং উপরের এবং নীচের রেলটি মধ্যম রেলের দ্বারা নির্ধারিত হয় যা n-দিনের মানক পার্থক্যকে দ্বিগুণ করে।
বুলিন ব্যান্ড একটি প্রযুক্তিগত সূচক যা বাজারের অস্থিরতা এবং অস্থিরতার মাত্রা প্রতিফলিত করে। যখন দামগুলি বুলিন ব্যান্ডের নীচের ট্র্যাকের কাছাকাছি পৌঁছে যায়, তখন বাজারটি ওভারসোল অবস্থায় থাকে। এই সময়ে ক্রমাগত ফাঁকগুলি পূরণ হওয়ার সম্ভাবনা বেশি থাকে। রিটার্নাল বৈশিষ্ট্য অনুসারে একটি মাল্টিপয়েন্ট অবস্থান স্থাপনের বিষয়টি বিবেচনা করা উচিত। যখন দামগুলি বুলিন ব্যান্ডের উপরের ট্র্যাকের কাছাকাছি পৌঁছে যায়, তখন বাজারটি ওভারসোল অবস্থায় থাকতে পারে।
এই কৌশলটি ব্রিন-ব্যান্ডের ওভার-বই ওভার-সেল সিগন্যালের সাথে মিলিত হয় যা ট্রেন্ড-ট্র্যাকিং পজিশন তৈরি করে এবং ঝুঁকি নিয়ন্ত্রণের জন্য স্টপ-ডাউন ব্যবস্থা যোগ করে।
যখন দাম উঁচুতে বুলিনের নীচে নেমে আসে, তখন বাজারটি ওভারসোল্ড অঞ্চল থেকে যুক্তিসঙ্গত অঞ্চলে প্রবেশ করে। এই সময় একটি মাল্টি-ওভার অবস্থান স্থাপন করা যেতে পারে। যখন দাম নীচে বুলিনের নীচে নেমে আসে, তখন বাজারটি ওভারসোল্ড অঞ্চলে প্রবেশ করে, এই সময় একটি খালি-ওভার অবস্থান স্থাপন করা যায়।
পজিশন তৈরি করার পরে, ঝুঁকি নিয়ন্ত্রণের জন্য স্থির শতাংশের স্টপ লেভেল সেট করুন। যখন ক্ষতিটি সেট স্টপ ল্যাম্পের চেয়ে বেশি হয় তখন স্টপ লস বর্তমান অবস্থান থেকে বেরিয়ে আসে, অত্যধিক ক্ষতি এড়ানো যায়।
এই কৌশলটি ব্রিনের বেন্ডের সাথে যুক্ত করা হয়েছে যাতে ওভারব্রিড ওভারসোল্ড অঞ্চলগুলি নির্ধারণ করা যায়, এবং নিম্ন-উচ্চ-উচ্চ-উচ্চ-উচ্চ-উচ্চ-উচ্চ-উচ্চ-উচ্চ-উচ্চ-উচ্চ-উচ্চ-উচ্চ-উচ্চ-উচ্চ-উচ্চ-উচ্চ-উচ্চ-উচ্চ-উচ্চ-উচ্চ-উচ্চ-উচ্চ-উচ্চ-উচ্চ-উচ্চ-উচ্চ-উচ্চ-উচ্চ-উচ্চ-উচ্চ-উচ্চ।
ট্রেন্ড ট্র্যাকিংয়ের জন্য ব্রিন ব্যান্ডের অস্থিরতা ব্যবহার করুন
একক লেনদেনের সর্বাধিক ক্ষতির কার্যকর নিয়ন্ত্রণের জন্য একটি স্টপ লস মেশিন যুক্ত করা
ট্রেন্ড ট্র্যাকিং এবং স্টপ লস-এর সমন্বয়ে স্থিতিশীল মুনাফা পাওয়া যায়
ব্রিনব্যান্ডের প্যারামিটার সেটিংটি ট্রেডিং সিগন্যালের গুণমানকে প্রভাবিত করে। মিডল ট্র্যাকের দৈর্ঘ্য n এবং স্ট্যান্ডার্ড ডিফারেনশিয়ালের গুণক k বিভিন্ন বাজারের জন্য যুক্তিসঙ্গতভাবে সেট করা প্রয়োজন, অন্যথায় ট্রেডিং সিগন্যালের নির্ভুলতা প্রভাবিত করে।
স্টপ লস সেট করা খুব বড় বা খুব ছোট হওয়া আয়ের স্থায়িত্বের উপর প্রভাব ফেলতে পারে। স্টপ লস সেট করা খুব বড় হওয়া একক ক্ষতির ঝুঁকি বাড়িয়ে তোলে, খুব ছোট হওয়া স্টপ লস ট্রিগার হওয়ার সম্ভাবনা বাড়িয়ে তোলে। বিভিন্ন জাতের উপর ভিত্তি করে যুক্তিসঙ্গত স্টপ লস শতাংশ সেট করা দরকার।
ট্রেডিং সিগন্যালের সঠিকতা বাড়াতে অন্যান্য সূচকগুলির সাথে সংযুক্ত সংকেত ফিল্টারিং বিবেচনা করা যেতে পারে।
বিভিন্ন পজিশনিং সেটিং পরীক্ষা করা যেতে পারে, যেমন ঘন্টার পর ঘন্টা বা স্বল্প-চক্রের ব্রিনব্যান্ডের সাথে আরও উচ্চ-ফ্রিকোয়েন্সি ট্রেডিং, তহবিলের ব্যবহারের দক্ষতা বাড়ানো।
এই কৌশলটি একটি প্রচলিত প্রবণতা-অনুসরণ কৌশল যা ব্রিনের বন্ডের সাথে যুক্ত হয় যাতে ওভার-বই ওভার-সোল্ড অঞ্চল নির্ধারণের জন্য একটি অবস্থান তৈরি করা হয় এবং ঝুঁকি নিয়ন্ত্রণের জন্য স্টপ লস যুক্ত করা হয়। প্যারামিটার সেটিং অপ্টিমাইজ করে, আরও সঠিক ট্রেডিং সিগন্যাল এবং স্টপ লস লেভেল সেটিংয়ের সাথে একত্রিত করে, স্থিতিশীল মুনাফা অর্জন করা যায়।
/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-22 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title="Bollinger Bands Strategy", overlay=false, shorttitle="BBS", pyramiding=0, currency=currency.USD, commission_type=strategy.commission.percent, commission_value=0.03, initial_capital=1000)
source = input(close, "Source")
length = input.int(20, minval=1)
mult = input.float(2.0, minval=0.001, maxval=50, step=0.001)
stopLossFactor = input.float(1, "Stop Loss Percent", maxval = 100, minval = 0, step=0.1)
basis = ta.sma(source, length)
dev = mult * ta.stdev(source, length)
upper = basis + dev
lower = basis - dev
var float lastTradePrice = na
var float stopLossLow = na
var float stopLossHigh = na
var bool currentIsLong = na
var bool nextExpectedIsLong = true
var bool existedLong = false
var bool existedShort = false
buyEntry = ta.crossover(source, lower)
sellEntry = ta.crossunder(source, upper)
if (buyEntry and nextExpectedIsLong == true)
strategy.entry("BBandLE", strategy.long, comment="BBandLE")
nextExpectedIsLong := false
if(nz(strategy.position_size[1], 0) < 0) // new position detected
lastTradePrice := close
stopLossLow := lastTradePrice * (1 - (stopLossFactor / 100))
stopLossHigh := lastTradePrice * (1 + (stopLossFactor / 100))
else
strategy.cancel("BBandLE")
if (sellEntry and nextExpectedIsLong == false)
strategy.entry("BBandSE", strategy.short, comment="BBandSE")
nextExpectedIsLong := true
if(nz(strategy.position_size[1], 0) > 0) // new position detected
lastTradePrice := close
stopLossLow := lastTradePrice * (1 - (stopLossFactor / 100))
stopLossHigh := lastTradePrice * (1 + (stopLossFactor / 100))
else
strategy.cancel("BBandSE")
strategy.close("BBandLE", close < stopLossLow)
strategy.close("BBandSE", close > stopLossHigh)
// if(nz(strategy.position_size[1], 0) < 0 and close > stopLossHigh)
// strategy.entry("BBandLE", strategy.long, comment="BBandLE")
// lastTradePrice := close
// stopLossLow := lastTradePrice * (1 - (stopLossFactor / 100))
// stopLossHigh := lastTradePrice * (1 + (stopLossFactor / 100))
// if(nz(strategy.position_size[1], 0) > 0 and close < stopLossLow)
// strategy.exit("BBandSE", strategy.short, comment="BBandSE")
// lastTradePrice := close
// stopLossLow := lastTradePrice * (1 - (stopLossFactor / 100))
// stopLossHigh := lastTradePrice * (1 + (stopLossFactor / 100))
plot(source, "close", color.blue)
plot(lower, "lower", color.red)
plot(upper, "upper", color.red)
plot(stopLossLow, "StopLossLow", color.black)
plot(stopLossHigh, "StopLossHigh", color.black)
plot(lastTradePrice, "lastTradePrice", color.green)
plotchar(strategy.position_size > 0, char="-", size=size.tiny, location=location.bottom, color=color.green)
plotchar(strategy.position_size < 0, char="-", size=size.tiny, location=location.bottom, color=color.red)