यह रणनीति वॉल्यूम-प्राइस डिवर्जेंस रणनीतियों से संबंधित वॉल्यूम परिवर्तन की दर की गणना करके बैल और भालू चक्रों के रूपांतरण का आकलन करती है। यह वॉल्यूम के गति संकेतक और मूल्य के बोलेंजर बैंड को जोड़ती है ताकि मूल्य पर वॉल्यूम परिवर्तन का प्रमुख प्रभाव निर्धारित किया जा सके और रुझानों के मोड़ बिंदुओं को कैप्चर किया जा सके।
वॉल्यूम परिवर्तन के परिवर्तन की दर की गणना करें (वॉल्यूम अंतर संकेतक के परिवर्तन की दर), वॉल्यूम गतिमान आधारित संकेतक परिणाम प्राप्त करने के लिए।
परिमाण गति का मानक विचलन दर्शाता bbr प्राप्त करने के लिए परिणाम के बोलिंगर बैंड की गणना करें।
मूल्य के मानक विचलन का प्रतिनिधित्व करने वाले bbr1 प्राप्त करने के लिए बंद मूल्य के बोलिंगर बैंड की गणना करें।
दोनों के बीच अंतर की गणना कीजिए, जो कि अंतिम सूचक के रूप में मूल्य के मानक विचलन को घटाकर वॉल्यूम गति का मानक विचलन है।
जब हिस्ट 0 से ऊपर जाता है, तो यह छोटा प्रवेश संकेत है, और जब 0 से नीचे जाता है, तो यह लंबा प्रवेश संकेत है।
वॉल्यूम परिवर्तन की दर की गणना करके, मूल्य पर वॉल्यूम परिवर्तन का प्रमुख प्रभाव प्रबलित होता है। जब कीमत अभी तक उलट नहीं हुई है, जबकि वॉल्यूम उलट जाता है, तो हिस्ट 0 से ऊपर या नीचे पार करेगा, ट्रेडिंग संकेत उत्पन्न करेगा। यह मूल्य रुझानों के मोड़ के बिंदुओं की भविष्यवाणी कर सकता है।
यह रणनीति मात्रा-मूल्य विचलन रणनीति है जो मात्रा में परिवर्तन की दर पर आधारित है, जो मूल्य रुझानों के महत्वपूर्ण बिंदुओं को पूर्व में प्रतिबिंबित कर सकती है।
वॉल्यूम परिवर्तन की दर की गणना मूल्य पर वॉल्यूम परिवर्तन के प्रमुख प्रभाव को बढ़ा देती है, जिसके परिणामस्वरूप बेहतर व्यापारिक प्रदर्शन होता है।
मूल्य के बोलिंगर बैंड के साथ वॉल्यूम गति संकेतकों का संयोजन ट्रेडिंग संकेतों को अधिक विश्वसनीय बनाता है।
हिस्ट डेटा पर ट्रिपल एक्सपोनेंशियल स्मूलिंग का प्रयोग सिग्नल को अधिक सटीक और चिकनी बनाता है।
ओवरबॉट/ओवरसोल्ड लाइन और लॉन्ग/शॉर्ट स्टॉप लॉस/टेक प्रॉफिट ऑर्डर सेट करने से जोखिमों को प्रभावी ढंग से नियंत्रित करने में मदद मिलती है।
कई अनुकूलन योग्य मापदंड जैसे बोलिंगर बैंड्स लंबाई, मानक विचलन गुणक और हिस्ट चिकनाई कारक रणनीति अनुकूलन को सक्षम करते हैं।
वॉल्यूम डेटा बाजार व्यापार को सही ढंग से प्रतिबिंबित नहीं कर सकता है और इसे हेरफेर किया जा सकता है।
वॉल्यूम-प्राइस विचलन कायम नहीं रह सकता है और कीमतें बिना उलट के टूट सकती हैं।
गलत पैरामीटर सेटिंग्स से ओवर ट्रेडिंग या गलत संकेत हो सकते हैं।
असामान्य मात्रा के आंकड़ों से झूठे संकेतों से सावधान रहें।
जब रुझान मजबूत हो तो उलटा संकेतों से बचना चाहिए।
मापदंडों को अनुकूलित करके, अन्य फ़िल्टर जोड़कर और स्टॉप लॉस/टेक प्रॉफिट सेट करके जोखिम को कम किया जा सकता है।
अधिक स्थिर संकेतों के लिए बोलिंगर बैंड्स मापदंडों का अनुकूलन करें।
प्रवृत्ति के विरुद्ध व्यापार करने से बचने के लिए प्रवृत्ति फ़िल्टर जोड़ें.
संकेत की पुष्टि के लिए एमएसीडी जैसे अन्य संकेतकों को शामिल करें।
अनुकूलनशील रूप से मापदंडों को स्वतः अनुकूलित करने के लिए एआई का उपयोग करें।
जोखिम प्रबंधन को अनुकूलित करने के लिए गतिशील स्टॉप लॉस/टेक प्रॉफिट जोड़ें।
उच्च संकेत गुणवत्ता के लिए वॉल्यूम-मूल्य विचलन सफलता दर निर्धारित करने के लिए मशीन लर्निंग लागू करें।
यह रणनीति वॉल्यूम परिवर्तन की दर की गणना करके कीमत पर वॉल्यूम परिवर्तन के प्रमुख प्रभाव को बढ़ाता है, जिससे प्रवृत्ति मोड़ के बिंदुओं का प्रारंभिक पता लगाने में सक्षम होता है। एकल वॉल्यूम संकेतकों की तुलना में, इसमें अधिक विश्वसनीयता और सटीकता है। लेकिन वॉल्यूम हेरफेर और विचलन ब्रेकआउट जैसे जोखिमों से पैरामीटर अनुकूलन, संकेतक फिल्टर आदि के माध्यम से बचा जाना चाहिए। भविष्य में, एआई को रणनीति स्थिरता और लाभप्रदता में और सुधार के लिए अनुकूली पैरामीटर अनुकूलन के लिए लाभान्वित किया जा सकता है।
/*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)