অস্থিরতা ফিল্টার কৌশল সহ বোলিংজার ব্যান্ডস ব্রেকআউট

লেখক:চাওঝাং, তারিখঃ ২০২৪-০৩-০৮ ১৫ঃ২৮ঃ০৫
ট্যাগঃ

img

কৌশল ওভারভিউ

বোলিংজার ব্যান্ডস ব্রেকআউট উইথ ভোলাটিলিটি ফিল্টার স্ট্র্যাটেজি হল বোলিংজার ব্যান্ডস সূচক উপর ভিত্তি করে একটি ট্রেডিং কৌশল। এটি চলমান গড়ের তুলনায় মূল্যের অবস্থান এবং অস্থিরতা নির্ধারণ করতে বোলিংজার ব্যান্ডগুলি ব্যবহার করে, এইভাবে প্রবেশ এবং প্রস্থান পয়েন্টগুলি সিদ্ধান্ত নেয়। এই কৌশলটির একটি অনন্য দিক হ'ল এটি একটি অস্থিরতা ফিল্টার ব্যবহার করে, যা ধারাবাহিক মোমবাতিগুলির পরিবর্তনের হার সনাক্ত করে উচ্চ বাজারের অস্থিরতার সময় ট্রেডগুলিতে প্রবেশ করা এড়ায়। উপরন্তু, কৌশলটি মুনাফা রক্ষা এবং ঝুঁকি নিয়ন্ত্রণের জন্য মুনাফা গ্রহণ এবং ক্ষতি বন্ধ করার শর্ত নির্ধারণ করে।

কৌশলগত নীতি

কৌশলটির কেন্দ্রবিন্দু হল বোলিংজার ব্যান্ড সূচক গণনা। বোলিংজার ব্যান্ড তিনটি রেখার সমন্বয়ে গঠিতঃ মাঝারি রেখাটি একটি সহজ চলমান গড়, যখন উপরের এবং নীচের ব্যান্ডগুলি যথাক্রমে মাঝারি রেখার উপরে এবং নীচে একটি নির্দিষ্ট স্ট্যান্ডার্ড বিচ্যুতিতে সেট করা হয়। স্ট্যান্ডার্ড বিচ্যুতির আকারটি প্যারামিটার মাল্ট দ্বারা নিয়ন্ত্রিত হয়।

কৌশলটির প্রবেশের শর্তগুলি বোলিংজার ব্যান্ডের তুলনায় বন্ধের মূল্যের অবস্থানের উপর ভিত্তি করে। যদি ট্রেডিং দিকটি লং (tradeDirection>=0) এ সেট করা থাকে এবং বন্ধের দাম নিম্নতম ব্যান্ডের নীচে একটি নির্দিষ্ট শতাংশ (lower_breakout_pct) দ্বারা ভেঙে যায়, তাহলে একটি লং পজিশন খোলা হয়; যদি ট্রেডিং দিকটি শর্ট (tradeDirection<=0) এ সেট করা থাকে এবং বন্ধের দাম উপরের ব্যান্ডের উপরে একটি নির্দিষ্ট শতাংশ (upper_breakout_pct) দ্বারা ভেঙে যায়, তবে একটি শর্ট পজিশন খোলা হয়। ব্রেকআউট শতাংশ পরামিতিগুলি প্রবণতা নিশ্চিত করার জন্য একটি অবস্থানে প্রবেশের আগে মূল্যকে বোলিংজার ব্যান্ডের মধ্য দিয়ে সামান্য ভাঙ্গতে দেয়।

অন্যদিকে, যদি পরপর দুটি মোমবাতিগুলির পরিবর্তনের হার উভয়ই পূর্বনির্ধারিত অস্থিরতার সীমা অতিক্রম করে (অস্থিরতা), বর্তমান বাজারের অস্থিরতা উচ্চ বলে মনে করা হয় এবং কৌশলটি নতুন অবস্থান খুলবে না। এই অস্থিরতা ফিল্টারটি একটি নির্দিষ্ট পরিমাণে অত্যন্ত অস্থির বাজারের অবস্থার মধ্যে ট্রেডিং এড়াতে পারে।

প্রস্থান পজিশনের ক্ষেত্রে, যদি একটি লং পজিশনের বন্ধের মূল্য উপরের ব্যান্ডের কাছে পৌঁছায় (উপরের এলাকা)long_win_pct), অথবা একটি শর্ট পজিশনের বন্ধের মূল্য নিম্নতম ব্যান্ডের কাছে পৌঁছে যায় (নিম্ন + এলাকা)short_win_pct), কৌশলটি মুনাফা নেওয়ার জন্য সংশ্লিষ্ট অবস্থানটি বন্ধ করবে। উপরন্তু, যদি কোনও অবস্থানের অনুপস্থিত ক্ষতি পূর্বনির্ধারিত সর্বাধিক ড্রডাউন শতাংশ (max_drawdown_percent) অতিক্রম করে, কৌশলটি ক্ষতি বন্ধ করার জন্য অবস্থানটিও বন্ধ করবে।

কৌশলগত সুবিধা

  1. বোলিংজার ব্যান্ড একটি পরিপক্ক এবং ব্যাপকভাবে ব্যবহৃত প্রযুক্তিগত সূচক যা চলমান গড় এবং মূল্য অস্থিরতা সম্পর্কে তথ্য অন্তর্ভুক্ত করে। ট্রেডিং কৌশলগুলি তৈরির জন্য বোলিংজার ব্যান্ডগুলি ব্যবহার করে প্রবণতা এবং অস্থিরতার পরিবর্তনগুলি ক্যাপচার করতে পারে।

  2. এই কৌশলটিতে লং এবং শর্ট এন্ট্রি লজিক উভয়ই অন্তর্ভুক্ত রয়েছে, যা উত্থান এবং হ্রাস উভয় বাজারে সুযোগগুলিকে নমনীয়ভাবে ক্যাপচার করার অনুমতি দেয়। বোলিংজার ব্যান্ড ব্রেকআউট পয়েন্টগুলির সেটিং কৌশলটির এন্ট্রি পয়েন্টগুলিকে আরও নিশ্চিত করে।

  3. ভোল্টেবিলিটি ফিল্টার অত্যন্ত অস্থির বাজারে পজিশন খোলার বিষয়টি এড়ায়, যা ঘন ঘন ট্রেডিং এবং লিভারেজের সাথে যুক্ত ঝুঁকিকে কিছুটা হ্রাস করে।

  4. এই কৌশলটি মুনাফা গ্রহণ এবং স্টপ-লস প্রক্রিয়া ব্যবহার করে পজিশনগুলি সক্রিয়ভাবে পরিচালনা করে এবং যখন দামগুলি মূল স্তরে ফিরে আসে তখন সেগুলি বন্ধ করে দেয়। এটি মুনাফা রক্ষা করতে এবং ড্রাউনডাউনগুলি নিয়ন্ত্রণ করতে সহায়তা করে।

কৌশলগত ঝুঁকি

  1. বোলিংজার ব্যান্ড মূলত একটি বিলম্বিত সূচক এবং বাজারে প্রতিক্রিয়া জানাতে একটি নির্দিষ্ট বিলম্ব রয়েছে। প্রবণতা বিপরীত বা বাজারের অবস্থার পরিবর্তনগুলির সমালোচনামূলক মুহুর্তে, কৌশলটি সেরা প্রবেশের সময়টি মিস করতে পারে।

  2. কৌশলটির পরামিতি সেটিংগুলি বিভিন্ন বাজারের অবস্থার জন্য সর্বজনীনভাবে প্রযোজ্য নাও হতে পারে। উদাহরণস্বরূপ, ট্রেন্ডিং এবং দোলনশীল বাজারে অস্থিরতা ফিল্টারের থ্রেশহোল্ড সেটিংয়ের পার্থক্য করা প্রয়োজন হতে পারে। স্থির পরামিতিগুলি কৌশলটিকে নির্দিষ্ট বাজারের অবস্থার মধ্যে পজিশন খুলতে অক্ষম বা খুব ঘন ঘন খুলতে পারে।

  3. যদিও স্টপ-লস ব্যবস্থা রয়েছে, যখন বাজারের ফাঁক থাকে, তখন কৌশলটি পূর্বনির্ধারিত মূল্যে কার্যকর হতে পারে না, যা বৃহত্তর ক্ষতির দিকে পরিচালিত করে।

  4. এই কৌশলটি পজিশন খোলার পর স্টপ-লস বা ব্রেক ইভেন্ট স্টপ সেট করে না, যা কিছু মুনাফা ফেরত দিতে পারে।

অপ্টিমাইজেশান নির্দেশাবলী

  1. এটার, ট্রেন্ড ইন্ডিকেটর, ভোল্টেবিলিটি ইন্ডিকেটর ইত্যাদির মতো আরও প্রযুক্তিগত সূচক বা বাজার অবস্থার মূল্যায়নকে কৌশলটির জন্য ফিল্টারিং শর্ত হিসাবে প্রবর্তন করার বিষয়টি বিবেচনা করুন যাতে এন্ট্রিগুলির গুণমান এবং সময় উন্নত হয়।

  2. ভোলটিলিটি ফিল্টারের জন্য, ফিল্টারিং কার্যকারিতা উন্নত করার জন্য বিভিন্ন যন্ত্র বা সময়সীমার সাথে মানিয়ে নেওয়া গতিশীল থ্রেশহোল্ডগুলি গ্রহণ করার চেষ্টা করুন।

  3. স্টপ-লস এবং টেক-লাভের ক্ষেত্রে, কৌশলটি প্রবণতা অব্যাহত রাখার সময় অবস্থানগুলি বন্ধ করার পরিবর্তে অবস্থানগুলি ধরে রাখার অনুমতি দেওয়ার জন্য ট্রেলিং স্টপ বা ব্রেক ইভেন স্টপ প্রক্রিয়া প্রবর্তন করুন। একই সাথে, ঝুঁকি-পুরষ্কার অনুপাতকে অনুকূল করতে বিভিন্ন স্টপ-লস এবং টেক-লাভের অনুপাত নির্ধারণ করার বিষয়টি বিবেচনা করুন।

  4. ধারাবাহিকতা শক্তি, অস্থিরতা, ঝুঁকি স্তর এবং অন্যান্য সূচকগুলির উপর ভিত্তি করে প্রবেশের আকারকে গতিশীলভাবে সামঞ্জস্য করে পজিশন পরিচালনা আরও অনুকূল করুন। উপরন্তু, পজিশন যোগ এবং হ্রাসের মতো ক্রিয়াকলাপের মাধ্যমে মূলধনকে আরও ভালভাবে ব্যবহার করুন।

সংক্ষিপ্তসার

বোলিংজার ব্যান্ডস ব্রেকআউট উইথ ভোলাটিলিটি ফিল্টার স্ট্র্যাটেজি একটি দ্বি-মুখী ট্রেডিং কৌশল তৈরির জন্য বোলিংজার ব্যান্ডস দ্বারা মূল্য অবস্থান এবং অস্থিরতার চরিত্রায়নকে কাজে লাগায়। এই কৌশলটির অনন্য দিক হ'ল অস্থিরতা ফিল্টার যা অত্যন্ত অস্থির বাজারে ট্রেডিং এড়ায়, পাশাপাশি তুলনামূলকভাবে সহজ লাভ এবং স্টপ-লস শর্তগুলিও সেট করে। সামগ্রিকভাবে, কৌশলটিতে মোটামুটি বিস্তৃত প্রবেশ এবং প্রস্থান যুক্তি এবং ঝুঁকি নিয়ন্ত্রণ অন্তর্ভুক্ত রয়েছে, তবে বাজারের পরিবর্তনের সাথে খাপ খাইয়ে নেওয়ার ক্ষেত্রে আরও অপ্টিমাইজেশনের জন্য জায়গা রয়েছে, প্যারামিটার প্রয়োগযোগ্যতা এবং স্টপ-লস কার্যকারিতা। যদি আরও প্রযুক্তিগত সূচক, গতিশীল প্যারামিটার এবং অবস্থান পরিচালনার অপ্টিমাইজেশন চালু করা যায় তবে কৌশলটির দৃust়তা এবং লাভজনকতা উন্নত হতে পারে।


/*backtest
start: 2024-02-29 00:00:00
end: 2024-03-07 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("[Oppen Chow] Super BBS 1.0", default_qty_type = strategy.percent_of_equity, default_qty_value =100, initial_capital=500, commission_type=strategy.commission.percent, commission_value=0.08, pyramiding=2 )

// Input parameters
length = 20
mult = 2
max_drawdown_percent = input(5.5, "Maximum Acceptable Drawdown") / 100
upper_breakout_pct = input(50, "Short Entry Breakout Percentage") / 100
lower_breakout_pct = input(25, "Long Entry Breakout Percentage") / 100
tradeDirection = input(1, title="Trade Direction")
Volatility = input(0.5, title="Volatility") / 100
long_win_pct = input(-0.15, title = "Long Settlement Rate Near Boll Upper Limit")
short_win_pct = input(0.4, title = "Short Settlement Rate Near Boll Lower Limit")

// Bollinger Bands calculation
basis = ta.sma(close, length)
dev = mult * ta.stdev(close, length)
upper = basis + dev
lower = basis - dev
area = upper - lower

// Calculate the rate of change for two consecutive candlesticks
var float change1 = na
var float change2 = na
change1 := change2
change2 := ((close - open) / open) 

// Check for two or more consecutive candlesticks with a change rate greater than 0.5%
var bool highVolatility = false
highVolatility := change2 > Volatility

// Trading logic
var float highestPriceSinceOpen = na
var float lowestPriceSinceOpen = na
var int profitableDrawbackCount = 1


// Entry logic - In the absence of high volatility
if not highVolatility and strategy.position_size == 0
    if (tradeDirection >= 0) and (close < lower - area * lower_breakout_pct)
        strategy.entry("Long", strategy.long)
        highestPriceSinceOpen := close
        profitableDrawbackCount := 0
    if (tradeDirection <= 0) and (close > upper + area * upper_breakout_pct)
        strategy.entry("Short", strategy.short)
        lowestPriceSinceOpen := close
        profitableDrawbackCount := 0


if strategy.position_size > 0 and close > upper - area * long_win_pct
    strategy.close("Long", comment = "Take Profit")
if strategy.position_size < 0 and close < lower + area * short_win_pct
    strategy.close("Short", comment = "Take Profit")

// Stop loss logic - Based on drawdown percentage
if strategy.position_size > 0
    if (strategy.position_avg_price - close)/strategy.position_avg_price >= max_drawdown_percent
        strategy.close("Long", comment = "Drawdown Stop Loss")
else if strategy.position_size < 0
    if (close - strategy.position_avg_price)/strategy.position_avg_price >= max_drawdown_percent
        strategy.close("Short", comment = "Drawdown Stop Loss")


আরো