বোলিংজার ব্যান্ড একীকরণ কৌশল একটি যুগান্তকারী কৌশল যা বোলিংজার ব্যান্ড ব্যবহার করে কম অস্থিরতার একীকরণ পর্যায়ে সনাক্ত করে। যখন বাজার একটি ব্যাপ্তি সময়ের মধ্যে প্রবেশ করে, বোলিংজার ব্যান্ডগুলি একত্রিত হবে, বাজারে প্রবেশের সুযোগের সংকেত দেয়। আমরা অস্থিরতার হ্রাস নিশ্চিত করতে গড় সত্য পরিসীমা সূচক অন্তর্ভুক্ত করি।
কৌশলটি মূলত বোলিংজার ব্যান্ডের উপর নির্ভর করে যখন দামগুলি নিম্ন অস্থিরতার একীকরণের পর্যায়ে প্রবেশ করে তখন সনাক্ত করতে। বোলিংজার ব্যান্ডের মধ্যবর্তী ব্যান্ডটি বন্ধের দামের একটি চলমান গড়। উপরের এবং নীচের ব্যান্ডগুলি মাঝারি ব্যান্ডের উপরে এবং নীচে দুটি স্ট্যান্ডার্ড বিচ্যুতি দ্বারা ক্ষতিপূরণ করা হয়। যখন অস্থিরতা হ্রাস পায়, উপরের এবং নীচের ব্যান্ডগুলির মধ্যে দূরত্ব উল্লেখযোগ্যভাবে সংকীর্ণ হয়। আমরা প্রথমে পরীক্ষা করি যে বর্তমান এটিআর মানটি বোলিংজার ব্যান্ডগুলির মধ্যে স্ট্যান্ডার্ড বিচ্যুতির চেয়ে কম কিনা প্রাথমিকভাবে সংযোজনটি নিশ্চিত করতে। এটি সংযোজনটি সবেমাত্র প্রবেশ করেছে তা নির্দেশ করে।
অস্থিরতার হ্রাস আরও প্রমাণ করার জন্য, আমরা এটিআর মানগুলির চলমান গড়ের নিম্নমুখী প্রবণতা রয়েছে কিনা তা পরীক্ষা করি। গড় এটিআর হ্রাসটিও এই দিক থেকে নিশ্চিত করে যে অস্থিরতা হ্রাস পাচ্ছে। যখন উভয় শর্ত একই সাথে পূরণ হয়, আমরা নির্ধারণ করি বোলিঞ্জার ব্যান্ডগুলি উল্লেখযোগ্য রূপান্তর দেখিয়েছে, যা একটি দুর্দান্ত কেনার সুযোগ।
কিনে ফেলার পর, আমরা এটিআর মানের দ্বিগুণ স্টপ লস দূরত্বের সাথে একটি চলমান স্টপ লস কৌশল সক্ষম করি। এটি কার্যকরভাবে ক্ষতি নিয়ন্ত্রণ করে।
এই কৌশলটির সবচেয়ে বড় সুবিধা হ'ল এটি সঠিকভাবে নির্ধারণ করতে পারে যখন বাজারটি কম অস্থিরতার একীকরণের পর্যায়ে প্রবেশ করে এবং সেরা কেনার সুযোগটি সনাক্ত করে। অন্যান্য দীর্ঘমেয়াদী কৌশলগুলির তুলনায়, বোলিংজার ব্যান্ড একীকরণের কৌশলটির লাভের সম্ভাবনা বেশি।
এছাড়াও, কৌশলটি ঝুঁকিগুলি সক্রিয়ভাবে নিয়ন্ত্রণ করার জন্য একটি চলমান স্টপ লসও ব্যবহার করে। এটি বাজারের আবেগ অনুকূল না হলেও ক্ষতি হ্রাসকে সর্বাধিক করে তোলে। অনেক দীর্ঘমেয়াদী কৌশল এটির অভাব রয়েছে।
কৌশলটির প্রধান ঝুঁকি হ'ল বলিংজার ব্যান্ড সূচকটি 100% সময় মূল্যের অস্থিরতার পরিবর্তনগুলি সঠিকভাবে নির্ধারণ করতে পারে না। যখন বলিংজার ব্যান্ডগুলি ভুলভাবে বিচার করে যে অস্থিরতা হ্রাস পেয়েছে, আমাদের প্রবেশের সময়টি অনুকূল হতে পারে। এই মুহুর্তে, চলমান স্টপ লস একটি গুরুত্বপূর্ণ ভূমিকা পালন করে এবং যত তাড়াতাড়ি সম্ভব বাণিজ্য থেকে বেরিয়ে আসতে পারে।
এছাড়া, কৌশলটিতে বিভিন্ন পরামিতি নির্ধারণ করাও ফলাফলগুলিকে প্রভাবিত করবে। কৌশলটিকে আরও শক্তিশালী করার জন্য আমাদের ব্যাপক ব্যাকটেস্টিংয়ের মাধ্যমে পরামিতিগুলিকে অনুকূল করতে হবে।
Bollinger Bands converge করার সময় ট্রেন্ড ইন্ডিকেটরগুলিতে ঘুরতে চিহ্নগুলি নিশ্চিত করার জন্য আমরা অন্যান্য সূচক যুক্ত করার কথা বিবেচনা করতে পারি। উদাহরণস্বরূপ, যখন Bollinger Bands converge হয়, তখন আমরা এটিও প্রয়োজন যে MACD পার্থক্যটি ইতিবাচক থেকে নেতিবাচক হয়ে গেছে, অথবা RSI ওভারকোপড জোন থেকে ফিরে এসেছে। এটি ক্রয় সংকেতগুলির নির্ভুলতা আরও উন্নত করতে পারে।
আরেকটি দিক হল ফলাফলের উপর বিভিন্ন প্যারামিটার সেটিংসের প্রভাব পরীক্ষা করা, যেমন বোলিংজার ব্যান্ডের সময়কাল, ATR এবং চলমান স্টপ লসের গুণক। সর্বোত্তম প্যারামিটার সংমিশ্রণটি খুঁজে পেতে আমাদের ধাপে ধাপে অপ্টিমাইজেশান ব্যবহার করতে হবে।
বোলিংজার ব্যান্ড সংহতকরণ কৌশলটি হ্রাসকৃত মূল্যের অস্থিরতার সময় নির্ধারণের জন্য বোলিংজার ব্যান্ড ব্যবহার করে এবং ঝুঁকিগুলি কার্যকরভাবে নিয়ন্ত্রণ করার জন্য একটি চলমান স্টপ লস ব্যবহার করে। এটি একটি অপেক্ষাকৃত স্থিতিশীল দীর্ঘমেয়াদী ব্রেকআউট কৌশল। কৌশলটির স্থায়িত্ব বাড়ানোর জন্য আমাদের এখনও পরামিতিগুলি আরও অনুকূল করতে হবে এবং অন্যান্য সূচকগুলি অন্তর্ভুক্ত করতে হবে।
/*backtest start: 2023-02-15 00:00:00 end: 2024-02-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © DojiEmoji //@version=4 strategy("[KL] Bollinger Bands Consolidation Strategy",overlay=true,pyramiding=1) // Timeframe { backtest_timeframe_start = input(defval = timestamp("01 Apr 2016 13:30 +0000"), title = "Backtest Start Time", type = input.time) USE_ENDTIME = input(false,title="Define backtest end-time (If false, will test up to most recent candle)") backtest_timeframe_end = input(defval = timestamp("19 Apr 2021 19:30 +0000"), title = "Backtest End Time (if checked above)", type = input.time) within_timeframe = true // } // Indicator: BOLL bands { BOLL_length = 20//input(20,title="Periods to lookback for BOLL and ATR calc. (default 20)") BOLL_src = close BOLL_center = sma(BOLL_src, BOLL_length) BOLL_sDEV_x2 = 2 * stdev(BOLL_src, BOLL_length) BOLL_upper = BOLL_center + BOLL_sDEV_x2 BOLL_lower = BOLL_center - BOLL_sDEV_x2 plot(BOLL_center, "Basis", color=#872323, offset = 0) BOLL_p1 = plot(BOLL_upper, "Upper", color=color.navy, offset = 0, transp=50) BOLL_p2 = plot(BOLL_lower, "Lower", color=color.navy, offset = 0, transp=50) fill(BOLL_p1, BOLL_p2, title = "Background", color=#198787, transp=85) // } // ATR and volatility Indicator { ATR_x2 = atr(BOLL_length) * 2 // multiplier aligns with BOLL avg_volat = sma(ATR_x2, BOLL_length) //} // Trailing stop loss { var entry_price = float(0) var trailing_SL_buffer = float(0) var stop_loss_price = float(0) trail_profit_line_color = color.green UPDATE_ATR_TSL = false if strategy.position_size == 0 or not within_timeframe // make TSL line less visible trail_profit_line_color := color.black stop_loss_price := close - trailing_SL_buffer else if strategy.position_size > 0 if UPDATE_ATR_TSL and ATR_x2 < trailing_SL_buffer trailing_SL_buffer := ATR_x2 stop_loss_price := max(stop_loss_price, close[1] - trailing_SL_buffer) plot(stop_loss_price,color=trail_profit_line_color) // } IGNORE_BOLL_SHAPE = false//input(false,title="Ignore BOLL (vs ATR) during entry (experimental)") IGNORE_VOLATILITY = false///input(false,title="Ignore average ATR during entry (experimental)") // Main: if within_timeframe // ENTRY: if (ATR_x2 > BOLL_sDEV_x2 or IGNORE_BOLL_SHAPE) and (avg_volat < avg_volat[1] or IGNORE_VOLATILITY) if strategy.position_size == 0 entry_price := close trailing_SL_buffer := ATR_x2 stop_loss_price := close - ATR_x2 strategy.entry("Long",strategy.long, comment="enter") if strategy.position_size > 0 strategy.entry("Long",strategy.long, comment="+") // EXIT: if strategy.position_size > 0 if low <= stop_loss_price if close > entry_price strategy.close("Long", comment="take profit") else if low <= entry_price strategy.close("Long", comment="stop loss") if strategy.position_size == 0 entry_price := 0