यह रणनीति ट्रेडों की मात्रा में खरीद और बिक्री के दबाव के अंतर की गणना करती है। यह मुख्य रूप से ट्रेडों की मात्रा में असामान्यताओं का उपयोग करता है। यह ट्रेडों की मात्रा में असामान्यताओं को ट्रेंड रिवर्स का आकलन करने के लिए एक संकेत के रूप में उपयोग करता है, और इसे एमएसीडी खरीद और बिक्री संकेतों के साथ सत्यापित करता है।
इस रणनीति का मूल तर्क निम्नलिखित बिंदुओं पर आधारित हैः
विभिन्न समय खिड़कियों (छोटे और लंबे खिड़कियों) में लेन-देन की मात्रा के खरीद दबाव और बिक्री दबाव की गणना करें। खरीद और बिक्री दबाव में अंतर के आधार पर भविष्य की प्रवृत्ति की दिशा का न्याय करें।
दीर्घ और लघु स्थिति निर्धारित करने के लिए एमएसीडी (एमएसीडी रेखा और संकेत रेखा के बीच अंतर) के अंतर मूल्य का उपयोग करें। रुझान उलटा करने के लिए लेनदेन की मात्रा में खरीद और बिक्री दबाव संकेतों के साथ संयोजन करें।
जब लेन-देन की मात्रा की खरीद दबाव विसंगति बढ़ जाती है और एमएसीडी रेखा पार हो जाती है, तो यह निर्धारित किया जाता है कि बाजार में बिक्री से खरीद में रुझान उलटा हो सकता है।
जब लेन-देन की मात्रा में विक्रय दबाव की विसंगति बढ़ जाती है और एमएसीडी रेखा पार हो जाती है, तो यह निर्धारित होता है कि बाजार में खरीद से बेचने के लिए रुझान उलटा हो सकता है।
रिवर्स सिग्नल दर्ज करने के बाद, जोखिम को नियंत्रित करने के लिए लाभ लेने और स्टॉप लॉस रणनीतियों का उपयोग करें।
इस रणनीति के लाभों में निम्नलिखित शामिल हैंः
लेन-देन की मात्रा में लंबे/लघु अंतरों का उपयोग करने से रुझान उलटने के बिंदुओं को निर्धारित करने के लिए लेन-देन की मात्रा की भूमिका की उपेक्षा करते हुए केवल मूविंग एवरेज जैसे रुझान निर्धारण संकेतकों पर भरोसा करने से बचा जाता है।
उलट-पुलटों को सत्यापित करने के लिए एमएसीडी संकेतों का संयोजन निर्णय की सटीकता में सुधार कर सकता है।
लेन-देन की मात्रा में असामान्यताओं का निर्धारण करने के लिए लंबी और छोटी समय खिड़कियों का उपयोग करने से उलट सिग्नल अधिक विश्वसनीय होते हैं।
रिवर्सल रणनीतियों में औसत लाभ दर अधिक होती है।
इस रणनीति के जोखिमों में निम्नलिखित शामिल हैंः
लेन-देन की मात्रा और एमएसीडी संकेत गलत संकेत दे सकते हैं, जिससे उलटफेर पर गलत निर्णय हो सकते हैं।
रिवर्स सिग्नल ट्रिगर होने के बाद, बाजार फिर से समायोजित हो सकता है और तुरंत सीधे रिवर्स करने में विफल हो सकता है।
लाभ लेने और हानि रोकने के लिए अनुचित सेटिंग से नुकसान बढ़ सकता है।
उच्च निकासी, स्थिर लाभ प्राप्त करने के इच्छुक निवेशकों के लिए अनुपयुक्त।
इस रणनीति के लिए अनुकूलन में शामिल हैंः
रिवर्स फैसले को अधिक सटीक बनाने के लिए लंबी और छोटी समय खिड़कियों को अनुकूलित करें।
लंबी/छोटी सटीकता में सुधार के लिए एमएसीडी मापदंडों का अनुकूलन करें।
हानि जोखिम को कम करने के लिए लाभ लेने और हानि रोकने के एल्गोरिदम को अनुकूलित करें।
उलटा सफलता दर में सुधार के लिए अधिक विसंगति निर्णय संकेतक जोड़ें।
स्थिति आकार और धन प्रबंधन मॉड्यूल जोड़ें।
संक्षेप में, यह एक विशिष्ट प्रवृत्ति उलट एल्गोरिथम ट्रेडिंग रणनीति है। यह मुख्य रूप से लेनदेन की मात्रा में असामान्यताओं और एमएसीडी सिग्नल सत्यापन में प्रवर्धन पर निर्भर करता है ताकि लंबी से छोटी स्थिति या इसके विपरीत से मूल्य उलट को निर्धारित और कैप्चर किया जा सके। रणनीति में उच्च सटीकता और अच्छे रिटर्न के फायदे हैं लेकिन कुछ जोखिम भी हैं। मापदंडों और कार्यक्षमता पर आगे के अनुकूलन से रणनीति और भी बेहतर प्रदर्शन कर सकती है।
/*backtest start: 2024-01-26 00:00:00 end: 2024-02-25 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("3 10 Oscillator Profile Flagging", shorttitle="3 10 Oscillator Profile Flagging", overlay=false) signalBiasValue = input(title="Signal Bias", defval=0.26) macdBiasValue = input(title="MACD Bias", defval=0.8) shortLookBack = input( title="Short LookBack", defval=3) longLookBack = input( title="Long LookBack", defval=10) takeProfit = input( title="Take Profit", defval=0.75) stopLoss = input( title="Stop Loss", defval=0.5) fast_ma = ta.sma(close, 3) slow_ma = ta.sma(close, 10) macd = fast_ma - slow_ma signal = ta.sma(macd, 16) hline(0, "Zero Line", color = color.black) buyVolume = volume*((close-low)/(high-low)) sellVolume = volume*((high-close)/(high-low)) buyVolSlope = buyVolume - buyVolume[1] sellVolSlope = sellVolume - sellVolume[1] signalSlope = ( signal - signal[1] ) macdSlope = ( macd - macd[1] ) plot(macd, color=color.blue, title="Total Volume") plot(signal, color=color.orange, title="Total Volume") intrabarRange = high - low getLookBackSlope(lookBack) => signal - signal[lookBack] getBuyerVolBias(lookBack) => j = 0 for i = 1 to lookBack if buyVolume[i] > sellVolume[i] j += 1 j getSellerVolBias(lookBack) => j = 0 for i = 1 to lookBack if sellVolume[i] > buyVolume[i] j += 1 j getVolBias(lookBack) => float b = 0 float s = 0 for i = 1 to lookBack b += buyVolume[i] s += sellVolume[i] b > s getSignalBuyerBias(lookBack) => j = 0 for i = 1 to lookBack if signal[i] > signalBiasValue j += 1 j getSignalSellerBias(lookBack) => j = 0 for i = 1 to lookBack if signal[i] < ( 0 - signalBiasValue ) j += 1 j getSignalNoBias(lookBack) => j = 0 for i = 1 to lookBack if signal[i] < signalBiasValue and signal[i] > ( 0 - signalBiasValue ) j += 1 j getPriceRising(lookBack) => j = 0 for i = 1 to lookBack if close[i] > close[i + 1] j += 1 j getPriceFalling(lookBack) => j = 0 for i = 1 to lookBack if close[i] < close[i + 1] j += 1 j getRangeNarrowing(lookBack) => j = 0 for i = 1 to lookBack if intrabarRange[i] < intrabarRange[i + 1] j+= 1 j getRangeBroadening(lookBack) => j = 0 for i = 1 to lookBack if intrabarRange[i] > intrabarRange[i + 1] j+= 1 j bool isNegativeSignalReversal = signalSlope < 0 and signalSlope[1] > 0 bool isNegativeMacdReversal = macdSlope < 0 and macdSlope[1] > 0 bool isPositiveSignalReversal = signalSlope > 0 and signalSlope[1] < 0 bool isPositiveMacdReversal = macdSlope > 0 and macdSlope[1] < 0 bool hasBearInversion = signalSlope > 0 and macdSlope < 0 bool hasBullInversion = signalSlope < 0 and macdSlope > 0 bool hasSignalBias = math.abs(signal) >= signalBiasValue bool hasNoSignalBias = signal < signalBiasValue and signal > ( 0 - signalBiasValue ) bool hasSignalBuyerBias = hasSignalBias and signal > 0 bool hasSignalSellerBias = hasSignalBias and signal < 0 bool hasPositiveMACDBias = macd > macdBiasValue bool hasNegativeMACDBias = macd < ( 0 - macdBiasValue ) bool hasBullAntiPattern = ta.crossunder(macd, signal) bool hasBearAntiPattern = ta.crossover(macd, signal) bool hasSignificantBuyerVolBias = buyVolume > ( sellVolume * 1.5 ) bool hasSignificantSellerVolBias = sellVolume > ( buyVolume * 1.5 ) // 7.48 Profit 52.5% if ( hasSignificantBuyerVolBias and getPriceRising(shortLookBack) == shortLookBack and getBuyerVolBias(shortLookBack) == shortLookBack and hasPositiveMACDBias and hasBullInversion) strategy.entry("Short1", strategy.short, qty=10) strategy.exit("TPS", "Short1", limit=strategy.position_avg_price - takeProfit, stop=strategy.position_avg_price + stopLoss) // 32.53 Profit 47.91% if ( getPriceFalling(shortLookBack) and (getVolBias(shortLookBack) == false) and signalSlope < 0 and hasSignalSellerBias) strategy.entry("Long1", strategy.long, qty=10) strategy.exit("TPS", "Long1", limit=strategy.position_avg_price + takeProfit, stop=strategy.position_avg_price - stopLoss)