এই কৌশলটি ভলিউম-প্রাইস ডিভার্জেন্স কৌশলগুলির অন্তর্গত ভলিউম পরিবর্তনের পরিবর্তনের হারের হিসাব করে ষাঁড় এবং ভালুক চক্রের রূপান্তরকে বিচার করে। এটি ভলিউমের গতির সূচক এবং মূল্যের বলিংজার ব্যান্ডকে একত্রিত করে দামের উপর ভলিউম পরিবর্তনের নেতৃস্থানীয় প্রভাব নির্ধারণ এবং প্রবণতার পালা পয়েন্টগুলি ক্যাপচার করে।
ভলিউম পরিবর্তনের পরিবর্তনের হার গণনা করুন (ভলিউম পার্থক্য সূচক পরিবর্তনের হার), ভলিউম গতির উপর ভিত্তি করে সূচক ফলাফল পেতে।
আকারের গতির মান বিচ্যুতির প্রতিনিধিত্বকারী বিবিআর পেতে ফলাফলের বোলিংজার ব্যান্ড গণনা করুন।
মূল্যের মান বিচ্যুতির প্রতিনিধিত্বকারী bbr1 পেতে বন্ধ মূল্যের বোলিংজার ব্যান্ড গণনা করুন।
শেষ সূচক হিসাবে, ভলিউম ইম্পুটামের স্ট্যান্ডার্ড ডিভিয়েশন বিয়োগ করে দামের স্ট্যান্ডার্ড ডিভিয়েশন হিসাবে উভয়টির মধ্যে পার্থক্য হিসাব করুন।
যখন হিস্ট 0 এর উপরে অতিক্রম করে, এটি সংক্ষিপ্ত প্রবেশ সংকেত, এবং যখন 0 এর নীচে অতিক্রম করে, এটি দীর্ঘ প্রবেশ সংকেত।
ভলিউম পরিবর্তনের পরিবর্তনের হারের হিসাব করে, দামের উপর ভলিউম পরিবর্তনের নেতৃস্থানীয় প্রভাব বাড়ানো হয়। যখন ভলিউম বিপরীত হয় যখন দাম এখনও বিপরীত হয় নি, হিস্ট শূন্যের উপরে বা নীচে ক্রস করবে, ট্রেডিং সংকেত তৈরি করবে। এটি মূল্য প্রবণতার টার্নিং পয়েন্টগুলি আগাম পূর্বাভাস দিতে পারে।
এই কৌশলটি হল ভলিউম-প্রাইস ডিভারজেন্স কৌশল যা ভলিউম পরিবর্তনের হারের উপর ভিত্তি করে তৈরি করা হয়, যা মূল্যের প্রবণতার টার্নিং পয়েন্টগুলিকে পূর্বনির্ধারণ করতে পারে।
ভলিউম পরিবর্তনের পরিবর্তনের হার গণনা করে দামের উপর ভলিউম পরিবর্তনের নেতৃত্বের প্রভাব বাড়ানো হয়, যার ফলে আরও ভাল ট্রেডিং পারফরম্যান্স হয়।
ভলিউম ইম্পুটাম সূচকগুলিকে মূল্যের বোলিংজার ব্যান্ডগুলির সাথে একত্রিত করা ট্রেডিং সংকেতগুলিকে আরও নির্ভরযোগ্য করে তোলে।
হিস্ট ডেটাতে ট্রিপল এক্সপোনেন্সিয়াল মসৃণকরণ ব্যবহার করে সিগন্যালগুলি আরও নির্ভুল এবং মসৃণ করে তোলে।
অতিরিক্ত ক্রয়/অতিরিক্ত বিক্রয় লাইন এবং দীর্ঘ/স্বল্প স্টপ লস/টেকে লাভ অর্ডার নির্ধারণ করা ঝুঁকি কার্যকরভাবে নিয়ন্ত্রণ করতে সহায়তা করে।
অনেক কাস্টমাইজযোগ্য প্যারামিটার যেমন বোলিংজার ব্যান্ডের দৈর্ঘ্য, স্ট্যান্ডার্ড ডিভিয়েশন মাল্টিপ্লায়ার এবং হিস্ট মসৃণকরণ ফ্যাক্টর কৌশল অপ্টিমাইজেশান সক্ষম করে।
ভলিউম ডেটা বাজারের লেনদেনকে সত্যিকারেরভাবে প্রতিফলিত করতে পারে না এবং এটি ম্যানিপুলেট হতে পারে।
ভলিউম-প্রাইস ডিভার্জেন্স স্থায়ী হতে পারে না, এবং দাম বিপরীতমুখী না হয়ে ভেঙে যেতে পারে।
অনুপযুক্ত প্যারামিটার সেটিংগুলি অত্যধিক ট্রেডিং বা ভুল সংকেত সৃষ্টি করতে পারে।
অস্বাভাবিক ভলিউম ডেটা থেকে মিথ্যা সংকেত থেকে সতর্ক থাকুন।
প্রবণতা শক্তিশালী হলে বিপরীতমুখী সংকেত এড়ানো উচিত।
প্যারামিটারগুলি অনুকূল করে, অন্যান্য ফিল্টার যুক্ত করে এবং স্টপ লস / লাভ গ্রহণের সেটিং করে ঝুঁকিগুলি হ্রাস করা যেতে পারে।
আরো স্থিতিশীল সংকেত জন্য Bollinger Bands পরামিতি অপ্টিমাইজ।
ট্রেন্ডের বিরুদ্ধে ট্রেডিং এড়াতে ট্রেন্ড ফিল্টার যুক্ত করুন।
সিগন্যাল নিশ্চিতকরণের জন্য MACD এর মতো অন্যান্য সূচক অন্তর্ভুক্ত করুন।
এআই ব্যবহার করে স্বয়ংক্রিয়ভাবে প্যারামিটার অপ্টিমাইজ করতে হবে।
ঝুঁকি ব্যবস্থাপনা অপ্টিমাইজ করার জন্য ডায়নামিক স্টপ লস/টেক প্রফিট যোগ করুন।
উচ্চতর সিগন্যাল মানের জন্য ভলিউম-দাম বিচ্যুতি সাফল্যের হার নির্ধারণের জন্য মেশিন লার্নিং প্রয়োগ করুন।
এই কৌশলটি ভলিউম পরিবর্তনের পরিবর্তনের হারের হিসাব করে দামের উপর ভলিউম পরিবর্তনের প্রভাবকে বাড়িয়ে তোলে, প্রবণতা পাল্টা পয়েন্টগুলির প্রাথমিক সনাক্তকরণকে সক্ষম করে। একক ভলিউম সূচকের তুলনায় এটির নির্ভরযোগ্যতা এবং নির্ভুলতা বেশি। তবে ভলিউম ম্যানিপুলেশন এবং বিচ্যুতি ব্রেকআউটের মতো ঝুঁকিগুলি প্যারামিটার অপ্টিমাইজেশন, সূচক ফিল্টার ইত্যাদির মাধ্যমে রক্ষা করা উচিত। ভবিষ্যতে, এআই কৌশল স্থিতিশীলতা এবং লাভজনকতা আরও উন্নত করতে অভিযোজিত প্যারামিটার অপ্টিমাইজেশনের জন্য ব্যবহার করা যেতে পারে।
/*backtest start: 2022-10-23 00:00:00 end: 2023-10-29 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/ // © tathal and special thanks to oakwhiz for his porting of my custom volume indicator //@version=5 strategy('Volume Difference Delta Cycle Oscillator', 'VDDC Osc', default_qty_type=strategy.percent_of_equity, default_qty_value=100, max_bars_back=5000) startDate = input.int(title='Start Date', defval=1, minval=1, maxval=31) startMonth = input.int(title='Start Month', defval=1, minval=1, maxval=12) startYear = input.int(title='Start Year', defval=2010, minval=1800, maxval=2100) endDate = input.int(title='End Date', defval=31, minval=1, maxval=31) endMonth = input.int(title='End Month', defval=12, minval=1, maxval=12) endYear = input.int(title='End Year', defval=2021, minval=1800, maxval=2100) // Normalize Function normalize(_src, _min, _max) => // Normalizes series with unknown min/max using historical min/max. // _src : series to rescale. // _min, _min: min/max values of rescaled series. var _historicMin = 10e10 var _historicMax = -10e10 _historicMin := math.min(nz(_src, _historicMin), _historicMin) _historicMax := math.max(nz(_src, _historicMax), _historicMax) _min + (_max - _min) * (_src - _historicMin) / math.max(_historicMax - _historicMin, 10e-10) // STEP 2: // Look if the close time of the current bar // falls inside the date range inDateRange = true // Stop loss & Take Profit Section l_sl_inp = input(2.0, title='Long Stop Loss %') / 100 l_tp_inp = input(4.0, title='Long Take Profit %') / 100 l_stop_level = strategy.position_avg_price * (1 - l_sl_inp) l_take_level = strategy.position_avg_price * (1 + l_tp_inp) s_sl_inp = input(2.0, title='Short Stop Loss %') / 100 s_tp_inp = input(4.0, title='Short Take Profit %') / 100 s_stop_level = strategy.position_avg_price * (1 + s_sl_inp) s_take_level = strategy.position_avg_price * (1 - s_tp_inp) src = close // Volume Differnce Indicator Delta float change_src = ta.change(src) float i_obv = ta.cum(change_src > 0 ? volume : change_src < 0 ? -volume : 0 * volume) float i_pvt = ta.pvt float result = ta.change(i_obv - i_pvt) float nresult = ta.ema(normalize(result, -1, 1), 20) // Volume Differnce Indicator Delta %B length = input.int(20, minval=1, title='Volume Bands Length') mult = input.float(2.0, minval=0.001, maxval=50, title='Volume Bands StdDev') basis = ta.ema(nresult, length) dev = mult * ta.stdev(nresult, length) upper = basis + dev lower = basis - dev bbr = (nresult - lower) / (upper - lower) // Normal %B, Based on close l1 = input.int(20, minval=1, title='Bollinger Bands Length') src2 = close mult1 = input.float(2.0, minval=0.001, maxval=50, title='Bollinger Bands StdDev') basis1 = ta.sma(src2, l1) dev1 = mult1 * ta.stdev(src2, l1) upper1 = basis1 + dev1 lower1 = basis1 - dev1 bbr1 = (src - lower1) / (upper1 - lower1) /// Final Output Line hist = ta.ema(ta.ema(ta.ema(bbr1 - bbr, input(2, title='Hist Smoothing Factor #1')), input(2, title='Hist Smoothing Factor #2')), input(2, title='Hist Smoothing Factor #3')) /// Overbought / Oversold Line Creation oversold = input(-.1) overbought = input(.4) hline(oversold, linewidth=2, color=color.new(#81c784, 62)) hline(overbought, linewidth=2, color=color.new(#c2185b, 38)) /// Long & Short Conditions short = hist > overbought long = hist < oversold /// Colors & Plotting histColor = hist >= 0 ? hist[1] < hist ? #26A69A : #B2DFDB : hist[1] < hist ? #FFCDD2 : #EF5350 plot(hist, title='Histogram', style=plot.style_columns, color=color.new(histColor, 0)) CrossBgColor = long ? color.new(#81c784, 62) : short ? color.new(#c2185b, 38) : na bgcolor(color.new(CrossBgColor, 90)) /// Strategy Methodology if inDateRange strategy.entry('long', strategy.long, when=long, stop=l_stop_level, limit=l_take_level) if inDateRange and strategy.position_size > 0 strategy.close_all(when=short) if inDateRange strategy.entry('short', strategy.short, when=short, stop=s_stop_level, limit=s_take_level) if inDateRange and strategy.position_size < 0 strategy.close_all(when=long)