
प्रति लेनदेन प्रतिशत गतिशीलता ट्रेडिंग रणनीति एक एकीकृत ट्रेडिंग प्रणाली है जिसमें प्रति लेनदेन गतिशीलता विश्लेषण, मूल्य व्यवहार फ़िल्टरिंग, ब्रेकडाउन का पता लगाने और गतिशील स्टॉप-लॉस / स्टॉप लॉजिक शामिल है। इस रणनीति का मूल बिंदु यह है कि प्रति लेनदेन के विलियम्स %R-जैसे सूचक (RVPR) की गणना करके, द्वि-समानता फ़िल्टर (Fast and Slow Moving Average) के साथ मिलकर, लेनदेन के विस्तार या संकुचन के क्षणों की पहचान की जाती है। रणनीति को आगे बढ़ाया जाता है विन्यास योग्य मूल्य व्यवहार फ़िल्टर के माध्यम से विभिन्न प्रकार के स्ट्राइक ग्राफिक्स के आधार पर सटीक स्थिति में प्रवेश करने के लिए। यह रणनीति विशेष रूप से उन व्यापारियों को खोजने के लिए उपयुक्त है जो प्रति लेनदेन की वृद्धि और स्ट्राइक व्यवहार के आधार पर रिवर्स या रिटेंशन सेट करते हैं, जो अत्यधिक अनुकूलनशील बहु-स्थानिक ट्रेडिंग संकेत प्रदान करते हैं।
इस रणनीति का मूल सिद्धांत है कि लेन-देन की मात्रा के आंकड़ों को प्रतिशत के रूप में परिवर्तित किया जाता है, एक विलियम्स% आर के समान गणना विधि का उपयोग करके वर्तमान लेनदेन के संबंध को इसकी ऐतिहासिक सीमा के साथ विश्लेषण करने के लिए। रणनीति निम्नलिखित कुछ प्रमुख घटकों का उपयोग करके व्यापार संकेत उत्पन्न करती हैः
सापेक्ष लेन-देन% आर ऑसिलेटरः यह वर्तमान लेन-देन के उच्चतम और निम्नतम स्तरों की तुलना ऐतिहासिक लेनदेन के साथ करता है और सापेक्ष स्थिति की गणना करता है। यह सूचक मूल्य क्षेत्र में विलियम्स % आर के समान है, लेकिन लेन-देन डेटा पर लागू होता है।
द्विआधारी चलती औसत फ़िल्टरिंगः रणनीति दो लेन-देन की गतिशील औसत का उपयोग करती है (त्वरित और धीमी गति से), कई चिकनाई एल्गोरिदम का चयन किया जा सकता है (एसएमए, ईएमए, जेएमए, टी 3, सुपर स्मूथर आदि) । जब लेन-देन की मात्रा तेज औसत से अधिक होती है, और तेज औसत धीमी औसत से अधिक होती है, तो लेन-देन की प्रवृत्ति को ऊपर की ओर इंगित करने के लिए, एक बहुसंकेत किया जा सकता है; और इसके विपरीत।
मूल्य व्यवहार फ़िल्टरः विभिन्न फ़िल्टरिंग प्रारूपों के आधार पर ट्रेडिंग संकेतों को और छानने के लिएः
फ़िल्टर को तोड़नाः जोखिम-लाभ अनुपात में खराब ट्रेडों से बचने के लिए 5 कुंजी के उच्च/निम्न के आसपास के ट्रेडों को चुनिंदा रूप से बाहर करना।
स्टॉप एंड स्टॉप सिस्टमः एटीआर (औसत वास्तविक तरंग दैर्ध्य) पर आधारित गतिशील स्टॉप / स्टॉप तंत्र, जिसे स्टॉप और स्टॉप की दूरी को समायोजित करने के लिए गुणकों के साथ कॉन्फ़िगर किया जा सकता है।
बाहर निकलने का समयः एक निश्चित संख्या में स्टिक के बाद बाहर निकलने का विकल्प।
मल्टीहेड प्रविष्टि की शर्तों में शामिल हैंः लेनदेन की मात्रा तेजी से चलती औसत से अधिक है, तेजी से चलती औसत धीमी गति से चलती औसत से अधिक है, सापेक्ष लेनदेन की मात्रा% आर थ्रेशोल्ड से अधिक है, कीमत मल्टीहेड दिशात्मक फिल्टर के माध्यम से है, और हाल ही में टूटने वाली ऊंचाई से नीचे एक विकल्प है। शून्य प्रविष्टि की शर्तें इसके विपरीत हैं, और एक निर्धारित बाहर निकलने की स्थिति में एक समय की स्थिति को ट्रिगर करती हैं।
बहुआयामी विश्लेषणः यह रणनीति लेनदेन की मात्रा, मूल्य व्यवहार और गतिशील स्टॉप/लॉस को जोड़ती है और एक व्यापक बाजार विश्लेषण ढांचा प्रदान करती है।
ऊंचाई अनुकूलन योग्य: रणनीति में ट्रेडिंग दिशा नियंत्रण, विभिन्न मूल्य व्यवहार फ़िल्टरिंग मोड, लेन-देन की मात्रा और चलती औसत प्रकार विकल्प आदि सहित कई समायोज्य पैरामीटर हैं, जिससे व्यापारियों को अपनी शैली और बाजार वरीयताओं के अनुसार अनुकूलित करने की अनुमति मिलती है।
स्मार्ट प्रवेश फ़िल्टरिंगः लेन-देन की गतिशीलता और मूल्य व्यवहार पैटर्न के संयोजन के माध्यम से, रणनीति कम गुणवत्ता वाले व्यापारिक संकेतों से बचने के लिए अधिक संभावना वाले व्यापारिक अवसरों की पहचान करने में सक्षम है।
लचीली बाहर निकलने की व्यवस्थाः रणनीति समय और मूल्य के आधार पर बाहर निकलने के विकल्प प्रदान करती है, जिसमें स्थिर बार संख्या से बाहर निकलने और एटीआर-आधारित गतिशील स्टॉप-लॉस / स्टॉप-आउट शामिल हैं, जो जोखिम प्रबंधन को अधिक लचीला और प्रभावी बनाता है।
विभिन्न बाजार स्थितियों के लिए अनुकूलः विभिन्न मूल्य व्यवहार पैटर्न के माध्यम से (सरल, फ़िल्टर, कट्टरपंथी, आंतरिक), रणनीति विभिन्न बाजार स्थितियों के लिए अनुकूल हो सकती है, जिसमें रुझान और क्षेत्र बाजार शामिल हैं।
उच्च तकनीकी संकेतक एकीकरणः रणनीति कई उच्च गतिशील औसत प्रकारों को एकीकृत करती है, जैसे कि जेएमए, टी 3 और सुपर स्मूदर, जो शोर को कम करने और वास्तविक रुझानों को पकड़ने में उत्कृष्ट प्रदर्शन करते हैं।
पैरामीटर अनुकूलन जोखिमः चूंकि रणनीति में कई समायोज्य पैरामीटर शामिल हैं, इसलिए अति-अनुकूलन का जोखिम है, जिससे ऐतिहासिक प्रतिक्रिया में उत्कृष्ट प्रदर्शन हो सकता है, लेकिन वास्तविक समय में खराब प्रदर्शन हो सकता है। इसका समाधान आगे के परीक्षण और रूबरू विश्लेषण का उपयोग करके किया जाता है ताकि यह सुनिश्चित किया जा सके कि पैरामीटर विभिन्न बाजार स्थितियों में स्थिरता बनाए रख सके।
झूठे ब्रेकआउट का जोखिमः लेनदेन में वृद्धि हमेशा एक स्थायी मूल्य आंदोलन के साथ नहीं होती है, रणनीति झूठे ब्रेकआउट में गलत संकेत दे सकती है। इस जोखिम को अतिरिक्त पुष्टिकरण संकेतों या देरी से प्रवेश जोड़कर कम किया जा सकता है।
बाजार की स्थिति पर निर्भरता: यह रणनीति विभिन्न बाजार स्थितियों (उदाहरण के लिए, उच्च अस्थिरता बनाम कम अस्थिरता) में असंगत प्रदर्शन कर सकती है। इसे लागू करने से पहले विभिन्न बाजार स्थितियों में रणनीति का परीक्षण करने की सिफारिश की जाती है।
स्टॉप लॉस ट्रिगर जोखिमः एटीआर-आधारित स्टॉप का उपयोग अचानक अस्थिरता के विस्तार के दौरान ट्रिगर किया जा सकता है। अस्थिरता समायोजन के साथ स्टॉप लॉस गुणांक का उपयोग करने या महत्वपूर्ण समर्थन / प्रतिरोध बिंदुओं पर स्टॉप लॉस सेट करने पर विचार करना अधिक प्रभावी हो सकता है।
समय से बाहर निकलने के लिए लचीला नहींः फिक्स्ड बार संख्या से बाहर निकलने से लाभदायक व्यापार को बहुत जल्दी बंद कर दिया जा सकता है या घाटे के व्यापार को बहुत देर से बंद कर दिया जा सकता है। प्रवृत्ति या गतिशीलता के संकेतकों के साथ संयोजन में बाहर निकलने के समय को गतिशील रूप से समायोजित करने पर विचार किया जा सकता है।
गणना की जटिलता: रणनीति में कई जटिल चलती औसत एल्गोरिदम और शर्तों के संयोजन का उपयोग किया जाता है, जिससे गणना का बोझ बढ़ सकता है और निष्पादन में देरी हो सकती है। वास्तविक समय के व्यापार में, कुछ गणना-गहन संकेतकों को सरल बनाने की आवश्यकता हो सकती है।
गतिशील थ्रेशोल्ड समायोजनः वर्तमान रणनीति का उपयोग स्थिर सापेक्ष लेनदेन मात्रा% आर थ्रेशोल्ड ((27)), आप अनुकूलन थ्रेशोल्ड को लागू करने के लिए विचार कर सकते हैं, हाल ही में लेनदेन मात्रा में उतार-चढ़ाव के आधार पर स्वतः समायोजन। यह रणनीति को विभिन्न बाजार स्थितियों और मौसमी परिवर्तनों के लिए बेहतर रूप से अनुकूलित करने में मदद करेगा।
बहु समय सीमा की पुष्टिः उच्च समय सीमा की पुष्टि सिग्नल को पेश करना, केवल बड़े रुझान की दिशा में व्यापार करना, रणनीति की जीत की दर और जोखिम-लाभ अनुपात को बढ़ा सकता है। उदाहरण के लिए, केवल उस दिन के लिए एक बहु-हेड सिग्नल लागू करें जब दिन की रेखा ऊपर की ओर हो।
लेन-देन की गुणवत्ता विश्लेषणः लेन-देन की गुणवत्ता का आकलन करने के लिए लेन-देन के प्रसार या लेन-देन के वितरण विश्लेषण के अलावा, लेन-देन की गुणवत्ता का आकलन किया जा सकता है, न कि केवल मात्रा। यह स्वस्थ रुझानों को अलग करने में मदद कर सकता है लेनदेन की पुष्टि और संभावित थकावट के संकेत।
स्मार्ट स्टॉप/स्टॉपः वर्तमान एटीआर बेस स्टॉप/स्टॉप को अधिक स्मार्ट सिस्टम में सुधार किया जा सकता है, उदाहरण के लिए महत्वपूर्ण समर्थन/प्रतिरोध की स्थिति के आधार पर या अस्थिरता समायोजन स्टॉप का उपयोग करके, कम अस्थिरता के दौरान स्टॉप को कसकर और उच्च अस्थिरता के दौरान स्टॉप को ढीला करना।
बाजार संरचना को शामिल करनाः मूल्य संरचना विश्लेषण (जैसे समर्थन / प्रतिरोध, प्रवृत्ति रेखा, मूल्य चैनल) को रणनीति में शामिल करना प्रवेश बिंदुओं और निकास बिंदुओं की गुणवत्ता में सुधार कर सकता है।
जोखिम प्रबंधन में वृद्धिः वर्तमान बाजार की अस्थिरता और हालिया रणनीतिक प्रदर्शन के आधार पर गतिशील स्थिति आकार में समायोजन करना, उच्च जीत दर वाले वातावरण में स्थिति बढ़ाना, अनिश्चितता के दौरान स्थिति कम करना।
मशीन लर्निंग इंटीग्रेशनः रणनीति पैरामीटर को गतिशील रूप से अनुकूलित करने के लिए मशीन लर्निंग एल्गोरिदम का उपयोग करना या यह अनुमान लगाना कि कौन सा मूल्य व्यवहार फ़िल्टर वर्तमान बाजार की स्थितियों में सबसे प्रभावी है, रणनीति के प्रदर्शन को और बढ़ा सकता है।
रिलेटिव टर्नओवर परसेंटेज डायनामिक ट्रेडिंग रणनीति एक व्यापक और लचीली ट्रेडिंग प्रणाली है जो ट्रेडों को संभावित बाजार के अवसरों की पहचान करने के लिए एक शक्तिशाली उपकरण प्रदान करती है, जो टर्नओवर विश्लेषण, कई मूल्य व्यवहार फिल्टर और गतिशील जोखिम प्रबंधन तकनीकों को जोड़ती है। रणनीति की मुख्य विशेषता इसकी अनुकूलनशीलता और अनुकूलनशीलता है, जो व्यापारियों को व्यक्तिगत वरीयताओं और बाजार की स्थितियों के अनुसार समायोजित करने की अनुमति देती है।
यह रणनीति विशेष रूप से उन व्यापारियों के लिए उपयुक्त है जो ट्रेड वॉल्यूम की पुष्टि के आधार पर रिवर्स या ट्रेंड रिटेंशन सिग्नल की तलाश करते हैं। विलियम्स% आर स्टाइल के सापेक्ष ट्रेड वॉल्यूम सूचक का उपयोग करके, रणनीति ट्रेड वॉल्यूम स्पाइक की पहचान करने में सक्षम है, जो आमतौर पर बाजार की भावनाओं में महत्वपूर्ण बदलाव या प्रवृत्ति में तेजी का प्रतिनिधित्व करते हैं। साथ ही, कई मूल्य व्यवहार फ़िल्टर विकल्प व्यापारियों को अपनी जोखिम वरीयताओं और ट्रेडिंग शैली के आधार पर अधिक रूढ़िवादी या अधिक कट्टरपंथी प्रवेश शर्तों का चयन करने में सक्षम बनाते हैं।
हालांकि यह रणनीति कई फायदे प्रदान करती है, लेकिन व्यापारियों को संभावित अति-अनुकूलन जोखिम और बाजार की स्थिति पर निर्भरता के बारे में सावधान रहना चाहिए। अनुशंसित अनुकूलन दिशाओं के साथ निरंतर परीक्षण और समायोजन के माध्यम से, व्यापारी इस रणनीति की स्थिरता और दीर्घकालिक लाभप्रदता को और बढ़ा सकते हैं। अंततः, सभी व्यापारिक रणनीतियों की तरह, सफलता की कुंजी इसके सिद्धांतों को गहराई से समझने, जोखिम को बुद्धिमानी से प्रबंधित करने और विभिन्न बाजार स्थितियों में इसके प्रदर्शन का लगातार मूल्यांकन करने में है।
/*backtest
start: 2024-07-04 00:00:00
end: 2025-07-02 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © GabrielAmadeusLau
//@version=6
strategy("Relative Volume Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// === Input: Trade Direction === //
tradeDirection = input.string("Long Only", title="Trade Direction", options=["Long Only", "Short Only", "Both"], group="Strategy Settings")
dirBarModeL = input.string("Simple", title="Long Directional Bar Mode", options=["Simple", "Filtered", "Aggressive", "Inside", "Filtered & Aggressive", "Filtered & Aggressive & Inside", "Without"], group="Strategy Settings")
dirBarModeS = input.string("Inside", title="Short Directional Bar Mode", options=["Simple", "Filtered", "Aggressive", "Inside", "Filtered & Aggressive", "Filtered & Aggressive & Inside", "Without"], group="Strategy Settings")
useBreakout = input.bool(true, "Use Breakout Filter", group="Strategy Settings")
useSLTP = input.bool(false, "Use Stop Loss & Take Profit", group="Strategy Settings")
atrSLMult = input.float(1, "ATR SL Multiplier", step = 0.05, group="Strategy Settings")
atrTPMult = input.float(1.75, "ATR TP Multiplier", step = 0.05, group="Strategy Settings")
// === Input: MA Function Selector === //
// — T3 Moving Average Function —
// src = input source (e.g. rsi1, close, etc.)
// length = smoothing length (period)
// a = T3 alpha (commonly between 0.7 and 0.9)
t3(src, length, a) =>
e1 = ta.ema(src, length)
e2 = ta.ema(e1, length)
e3 = ta.ema(e2, length)
e4 = ta.ema(e3, length)
e5 = ta.ema(e4, length)
e6 = ta.ema(e5, length)
c1 = -a * a * a
c2 = 3 * a * a + 3 * a * a * a
c3 = -6 * a * a - 3 * a - 3 * a * a * a
c4 = 1 + 3 * a + a * a * a + 3 * a * a
c1 * e6 + c2 * e5 + c3 * e4 + c4 * e3
// == Jurik MA == //
jma(float src, int length, float power, float phase) =>
phaseRatio = phase < -100 ? 0.5 : phase > 100 ? 2.5 : phase / 100 + 1.5
beta = 0.45 * (length - 1) / (0.45 * (length - 1) + 2)
alpha = math.pow(beta, power)
JMA = 0.0
e0 = 0.0
e0 := (1 - alpha) * src + alpha * nz(e0[1])
e1 = 0.0
e1 := (src - e0) * (1 - beta) + beta * nz(e1[1])
e2 = 0.0
e2 := (e0 + phaseRatio * e1 - nz(JMA[1])) * math.pow(1 - alpha, 2) + math.pow(alpha, 2) * nz(e2[1])
JMA := e2 + nz(JMA[1])
//===== 2 Pole Super Smoother Filter =====//
superSmoother(float Series, float Period) =>
var float ALPHA = math.pi * math.sqrt(2.0) / Period
var float BETA = math.exp(-ALPHA )
var float COEF2 = -math.pow(BETA, 2)
var float COEF1 = math.cos( ALPHA ) * 2.0 * BETA
var float COEF0 = 1.0 - COEF1 - COEF2
float sma2 = math.avg(Series, nz(Series[1], Series))
float smooth = na, smooth := COEF0 * sma2 +
COEF1 * nz(smooth[1]) +
COEF2 * nz(smooth[2])
// === MA Selector === //
ma(source, length, type) =>
type == "SMA" ? ta.sma(source, length) :
type == "EMA" ? ta.ema(source, length) :
type == "SMMA (RMA)"? ta.rma(source, length) :
type == "WMA" ? ta.wma(source, length) :
type == "VWMA" ? ta.vwma(source, length) :
type == "HMA" ? ta.hma(source, length) :
type == "ALMA" ? ta.alma(source, length, 0.85, 6) :
type == "LSMA" ? ta.linreg(source, length, 0) :
type == "Optimal MA"? math.avg(ta.alma(source, length, 0.85, 6), ta.rma(source, length), ta.sma(source, length)) :
type == "JMA" ? jma(source, length, 2, 50) :
type == "Super Smoother" ? superSmoother(source, length) :
type == "T3" ? t3(source, length, 0.7) :
na
// === Input Parameters === //
rvolRLength = input.int(112, title="Relative Volume %R Length", minval=1, group="Relative Volume", tooltip="%R used for scaling from 0 to 100, I prefer 73 or 112.")
rvolmaTypeInput = input.string("Optimal MA" , "Type", options = ["None", "SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA", "HMA", "ALMA", "LSMA", "Optimal MA", "JMA", "Super Smoother", "T3"], group = "Relative Volume")
rvolFastLength = input.int(7, title="Relative Volume Fast MA", minval=1, group="Relative Volume")
rvolSlowLength = input.int(161, title="Relative Volume Slow MA", minval=1, group="Relative Volume")
exitBars = input.int(18, title="Bars Until Exit", group="Strategy Settings", tooltip="Exit trade after N bars")
rvolThreshold = input.int(27, "Minimum Relative Volume %R Threshold", group="Relative Volume")
// === Williams %R for Volume === //
wpr(src, length) =>
max_ = ta.highest(src, length)
min_ = ta.lowest(src, length)
(100 * (src - max_) / (max_ - min_)) * -1
// === Volume MAs === //
rvol = wpr(volume, rvolRLength)
rvolFast = ma(volume, rvolFastLength, rvolmaTypeInput)
rvolSlow = ma(volume, rvolSlowLength, rvolmaTypeInput)
// === Price Action Filters === //
up = close > open
upRange = low > low[1] and close > high[1]
upRange_Aggr = close > close[1] and close > open[1]
insideDayUp = close < close[1] and close[1] < close[2] and close[2] < close[3] and close[3] < close[4] and close[4] < close[5] //and not (close > close[1])
down = close < open
downRange = high < high[1] and close < low[1]
downRange_Aggr= close < close[1] and close < open[1]
insideDayDown = close > close[1] and close[1] > close[2] and close[2] > close[3] and close[3] > close[4] and close[4] > close[5] //and not (close < close[1])
breakoutHigh = ta.highest(high, 5)
breakoutLow = ta.lowest(low, 5)
// === Mode-Based Filter Logic === //
longBarOK =
dirBarModeL == "Simple" ? up :
dirBarModeL == "Filtered" ? upRange :
dirBarModeL == "Aggressive"? upRange_Aggr :
dirBarModeL == "Inside"? insideDayUp :
dirBarModeL == "Filtered & Aggressive" ? upRange or upRange_Aggr :
dirBarModeL == "Filtered & Aggressive & Inside" ? upRange or upRange_Aggr or insideDayUp :
dirBarModeL == "Without" ? true : false
shortBarOK =
dirBarModeS == "Simple" ? down :
dirBarModeS == "Filtered" ? downRange :
dirBarModeS == "Aggressive"? downRange_Aggr :
dirBarModeS == "Inside"? insideDayDown :
dirBarModeS == "Filtered & Aggressive"? downRange or downRange_Aggr or insideDayDown :
dirBarModeS == "Filtered & Aggressive & Inside"? upRange_Aggr or insideDayDown :
dirBarModeS == "Without" ? true : false
// === Entry & Exit Logic === //
longCondition = volume > rvolFast and rvolFast > rvolSlow and longBarOK and rvol > rvolThreshold and (not useBreakout or close < breakoutHigh)
shortCondition = volume < rvolFast and rvolFast < rvolSlow and shortBarOK and rvol < (100 - rvolThreshold) and (not useBreakout or close > breakoutLow)
exitLongCondition = strategy.opentrades > 0 and strategy.opentrades.entry_bar_index(0) + exitBars <= bar_index and strategy.opentrades.entry_id(0) == "Long"
exitShortCondition = strategy.opentrades > 0 and strategy.opentrades.entry_bar_index(0) + exitBars <= bar_index and strategy.opentrades.entry_id(0) == "Short"
atr = ta.atr(math.round(math.avg(rvolFastLength, rvolSlowLength)))
longSL = useSLTP ? close - atrSLMult * atr : na
longTP = useSLTP ? close + atrTPMult * atr : na
shortSL = useSLTP ? close + atrSLMult * atr : na
shortTP = useSLTP ? close - atrTPMult * atr : na
// === Strategy Execution === //
if (tradeDirection == "Long Only" or tradeDirection == "Both")
if (longCondition)
strategy.entry("Long", strategy.long, stop=longSL, limit=longTP)
if (tradeDirection == "Short Only" or tradeDirection == "Both")
if (shortCondition)
strategy.entry("Short", strategy.short, stop=shortSL, limit=shortTP)
if (exitLongCondition)
strategy.close("Long")
if (exitShortCondition)
strategy.close("Short")
// === Plotting === //
plot(rvol, title="Relative Volume %R", color=color.orange, style = plot.style_columns, format = format.price)
plot(rvolFast, title="Fast Volume MA", color=color.green, format = format.volume)
plot(rvolSlow, title="Slow Volume MA", color=color.red, format = format.volume)