
এই কৌশলটি একটি বুলিন-ব্যান্ড ভিত্তিক গতিশীলতা-অস্থিরতা-ট্র্যাকিং কৌশল। এটি বুলিন-ব্যান্ডের সূচকগুলির সাথে বাজারের প্রবণতা এবং বিপরীত দিকগুলি নির্ধারণ করে এবং মাল্টি-ফ্রি পজিশন সেট করে বাজারের অস্থিরতা অনুসরণ করে।
এই কৌশলটির কেন্দ্রীয় সূচক হ’ল বুলিন ব্যান্ড। বুলিন ব্যান্ডটি মধ্যম ট্র্যাক, উপরের ট্র্যাক এবং নীচের ট্র্যাকের সমন্বয়ে গঠিত। মধ্যম ট্র্যাকটি হল n দিনের চলমান গড়, উপরের এবং নীচের ট্র্যাকগুলি যথাক্রমে মধ্যম ট্র্যাক প্লাস স্ট্যান্ডার্ড ব্যবধানের বিচ্যুতি। যখন দামগুলি উপরের এবং নীচের ট্র্যাকের কাছাকাছি আসে তখন এটি একটি ওভারবয় ওভারসোলের সংকেত হিসাবে বিবেচিত হয়। কৌশলটি পজিশনের ভিত্তিতে ট্রেন্ড বিচ্ছিন্নতা যোগ করে, অর্থাৎ যখন দামটি মধ্যম ট্র্যাকটি ভেঙে যাওয়ার সময় পজিশনটি খোলার জন্য। মিথ্যা ব্রেকিংয়ের ক্ষতি রোধ করতে, কৌশলটি বৃহত্তর গড়ের চেয়ে বেশি পজিশন খোলার প্রয়োজন। পজিশনটি স্থির করার শর্তটি হল মধ্যম ট্র্যাকটি ভেঙে যাওয়ার পরে দামটি আবার ফিরে আসে।
এই কৌশলটি একই সাথে প্রবণতা-নির্মাণ এবং বিপরীত-পরিবর্তন-নির্মাণ পজিশন যুক্ত করে, যথাক্রমে বিভিন্ন ব্যবসায়ের সুযোগের জন্য। প্রবণতা-নির্মাণ পজিশনের জন্য মধ্যম রেলটি সমর্থনকারী প্রতিরোধের রেফারেন্স হিসাবে প্রয়োজন, যা বিপরীত-বিপরীত বিপরীত প্রভাব তৈরি করে। বিপরীত-পরিবর্তন-নির্মাণ পজিশনটি সরাসরি বুলিন বন্ডের নীচের রেলের কাছাকাছি বিপরীতভাবে গঠিত হয়। কৌশলটি এই দুটি প্রকাশের সংমিশ্রণ করে, প্রবণতা-অনুসরণ এবং বিপরীত-ব্যবহার উভয়কেই সমন্বয় করতে পারে।
এই কৌশলটি ব্রিনব্যান্ডের ওভার-ব্রেক ওভার-সেল বৈশিষ্ট্যগুলিকে যুক্ত করে, বিপরীত দিকের বিচারের সাথে। এটি এটিকে ট্রেন্ডিং বাজার এবং ঝড়ের বাজারে একই সাথে প্রয়োগ করতে সক্ষম করে, বিভিন্ন ধরণের ব্যবসায়ের সুযোগগুলি ধরার জন্য। কৌশলটির স্টপ-লস এক্সট সেটিং ক্ষতির বিস্তারকে রোধ করে। ডাবল-ওয়ে ট্রেডিংয়ের বৈশিষ্ট্যগুলিও কৌশলটির প্রযোজ্যতা বাড়ায়।
সহজ ব্রিন-ব্যান্ড কৌশলগুলির তুলনায়, এই কৌশলটির সাথে যুক্ত প্রবণতা লজিক বিচারটি পজিশন স্থাপনকে আরও স্থিতিশীল করে তোলে, তবে বিপরীতমুখী সুযোগগুলিও ধরে রাখে। এটি চিঠির আওয়াজ অনুপাতকে উন্নত করে। দ্বিতীয়ত, বহুমুখী দ্বি-মুখী লেনদেনগুলি বিভিন্ন বাজারের লেনদেনের সুযোগগুলিকে আরও ব্যাপকভাবে ব্যবহার করে।
এই কৌশলটি মূলত বুলিন বন্ডের ওভারব্লিং ওভারসেলিং চরিত্রের উপর নির্ভর করে। সুতরাং যখন দামের তীব্র ওঠানামা হয়, তখন বুলিন বন্ডের ব্যাপ্তি ক্রমাগত বৃদ্ধি পায়, যা একাধিক ক্ষতিগ্রস্থ পজিশনের দিকে পরিচালিত করতে পারে। এটি একটি সম্ভাব্য ঝুঁকিপূর্ণ বিন্দু। তদতিরিক্ত, বিপরীত বিচার এখনও কিছু অনিশ্চয়তা এবং ত্রুটি রয়েছে, যা পজিশনের ব্যর্থতা এবং ক্ষতি বন্ধ করে দেয়।
বুইলিন বন্ডের ব্যর্থতার জন্য, n-দিনের প্যারামিটারটি সংক্ষিপ্ত করা যেতে পারে, যাতে বুইলিন বন্ডটি আরও সংবেদনশীল হয়। অথবা এর ব্যাপ্তি পরিধি হ্রাস করা যেতে পারে, যার ফলে ক্ষতির সম্ভাবনা হ্রাস করা যায়। উল্টানো কার্ভের বিচারের জন্য, ব্রেকআউট প্যারামিটারটি অপ্টিমাইজ করে ত্রুটি হ্রাস করা যেতে পারে।
এই কৌশলটি নিম্নলিখিত কয়েকটি দিকের উপর ভিত্তি করে অপ্টিমাইজ করা যেতে পারেঃ
এই কৌশলটি ব্রিন-ব্যান্ড স্ট্যান্ডার্ড কৌশলটির কার্যকর সম্প্রসারণ এবং অপ্টিমাইজেশন করে। যুক্ত হওয়া প্রবণতা বিচ্যুতির বিচার স্থিতিশীলতা বাড়ায়, বিপরীত হওয়ার সুযোগটি ভালভাবে ব্যবহার করে। বহুমুখী দ্বিমুখী বাণিজ্য এবং স্টপ লস সেটিংস কৌশলটিকে আরও শক্তিশালী করে তোলে। প্যারামিটার অপ্টিমাইজেশন এবং আরও ফিল্টার যুক্ত করে আরও কার্যকারিতা বাড়ানো যেতে পারে
/*backtest
start: 2023-11-20 00:00:00
end: 2023-11-27 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=3
strategy("Noro's Bollinger Strategy v1.3", shorttitle = "Bollinger str 1.3", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 5)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
length = input(20, defval = 20, minval = 1, maxval = 1000, title = "Bollinger Length")
mult = input(2.0, defval = 2.0, minval = 0.001, maxval = 50, title = "Bollinger Mult")
source = input(ohlc4, defval = ohlc4, title = "Bollinger Source")
uset = input(true, defval = true, title = "Use trend entry")
usect = input(true, defval = true, title = "Use counter-trend entry")
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
showbands = input(true, defval = true, title = "Show Bollinger Bands")
//Bollinger Bands
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev
//Lines
col = showbands ? black : na
plot(upper, linewidth = 1, color = col)
plot(basis, linewidth = 1, color = col)
plot(lower, linewidth = 1, color = col)
//Body
body = abs(close - open)
abody = ema(body, 30)
//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up1 = bar == -1 and ohlc4 >= basis and ohlc4 < upper and (close < strategy.position_avg_price or strategy.position_size == 0) and uset
dn1 = bar == 1 and ohlc4 <= basis and ohlc4 > lower and (close > strategy.position_avg_price or strategy.position_size == 0) and uset
up2 = close <= lower and usect
dn2 = close >= upper and usect
exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body > abody / 2
//Trading
if up1 or up2
strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if dn1 or dn2
strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
strategy.close_all()