Volume MTFThis is a simple indicator you can use to separate volume from price on your chart. You can also select different time frames (MTF).
Thanks to LazyBear for cleaning up my previous messy code.
Komut dosyalarını "volume" için ara
Vasyl Ivanov | Active VolumesVolumes Indicator with Active Volume Detection
This indicator provides a more granular view of market volumes by combining data from a child timeframe. It introduces the concept of Active Volumes, highlighting periods of increasing market activity, giving traders a clearer understanding of volume dynamics.
Key Features:
Active Volumes:
Active volumes are calculated by summing up the volumes from the child timeframe bars where the volume was higher than the previous bar.
This helps you quickly identify periods where buying or selling pressure is increasing, giving insight into stronger market participation.
Total Volume and Active Volume per Bar:
The indicator displays two key volume values for each bar on the chart: Total Volume: The combined volume for the bar, calculated by summing up all child timeframe volumes. Active Volume: The volume that only counts when there is an increase from the previous child timeframe bar's volume, making it useful to identify strong momentum shifts.
Customizable Child Timeframe:
Users can select any child timeframe in the indicator’s settings to aggregate the volume data. This flexibility allows traders to adjust the indicator based on their preferred timeframe for analysis.
How It Works:
The Volumes Indicator aggregates volumes from a specified child timeframe. Each bar on the chart is calculated by combining the volume data from the child bars. The indicator highlights two values:
Total Volume, which represents the entire volume of trades within the bar.
Active Volume, which focuses on periods where the volume increased from one bar to the next in the child timeframe. This allows traders to pinpoint more active trading periods, improving volume-based decision-making.
Use Cases:
Identifying Momentum: By focusing on active volumes, traders can spot periods of increasing market participation, which may signal trends or reversals.
Scalping or Short-Term Trading: Use lower child timeframes to identify short-term volume spikes and adjust your entries/exits accordingly.
Long-Term Volume Analysis: Apply higher child timeframes to get a broader perspective on market activity over time.
Why It’s Unique:
Unlike traditional volume indicators that show only the total volume, this indicator offers a detailed breakdown of market activity, highlighting periods of increasing volume through Active Volume. The ability to customize the child timeframe makes it highly adaptable to various trading strategies, offering deeper insights into volume analysis.
VolumeProfileLibrary "VolumeProfile"
Analyzes volume and price and calculates a volume profile, in particular the Point Of Control and Value Area values.
new(rowSizeInTicks, valueAreaCoverage, startTime)
Constructor method that creates a new Volume Profile
Parameters:
rowSizeInTicks (float) : Internal row size (aka resolution) of the volume profile. Useful for most futures contracts would be '1 / syminfo.mintick'. Default '4'.
valueAreaCoverage (int) : Percentage of total volume that is considered the Value Area. Default '70'
startTime (int) : Start time (unix timestamp in milliseconds) of the Volume Profile. Default 'time'.
Returns: VolumeProfile object
method calculatePOC(vp)
Calculates current Point Of Control of the VP
Namespace types: VolumeProfile
Parameters:
vp (VolumeProfile)
Returns: void
method calculateVA(vp)
Calculates current Value Area High and Low of the VP
Namespace types: VolumeProfile
Parameters:
vp (VolumeProfile)
Returns: void
method update(vp, h, l, v, t)
Processes new chart data and sorts volume into rows. Then calls calculatePOC() and calculateVA() to update the VP. Parameters are usually the output of request.security_lower_tf.
Namespace types: VolumeProfile
Parameters:
vp (VolumeProfile)
h (array) : Array of highs
l (array) : Array of lows
v (array) : Array of volumes
t (array) : Array of candle times
Returns: void
method setSessionHigh(vp, h)
Sets the high of the session the VP is tracking
Namespace types: VolumeProfile
Parameters:
vp (VolumeProfile)
h (float)
Returns: void
method setSessionLow(vp, l)
Sets the low of the session the VP is tracking
Namespace types: VolumeProfile
Parameters:
vp (VolumeProfile)
l (float)
Returns: void
method getPOC(vp)
Gets the current Point Of Control
Namespace types: VolumeProfile
Parameters:
vp (VolumeProfile)
Returns: Point Of Control (float)
method getVAH(vp)
Gets the current Value Area High
Namespace types: VolumeProfile
Parameters:
vp (VolumeProfile)
Returns: Value Area High (float)
method getVAL(vp)
Gets the current Value Area Low
Namespace types: VolumeProfile
Parameters:
vp (VolumeProfile)
Returns: Value Area Low (float)
VolumeProfile
Fields:
rowSizeInTicks (series float)
valueAreaCoverage (series int)
startTime (series int)
valueAreaHigh (series float)
pointOfControl (series float)
valueAreaLow (series float)
sessionHigh (series float)
sessionLow (series float)
volumeByRow (map)
totalVolume (series float)
pocRow (series float)
pocVol (series float)
Delta Volume Channels [LucF]█ OVERVIEW
This indicator displays on-chart visuals aimed at making the most of delta volume information. It can color bars and display two channels: one for delta volume, another calculated from the price levels of bars where delta volume divergences occur. Markers and alerts can also be configured using key conditions, and filtered in many different ways. The indicator caters to traders who prefer chart visuals over raw values. It will work on historical bars and in real time, using intrabar analysis to calculate delta volume in both conditions.
█ CONCEPTS
Delta Volume
The volume delta concept divides a bar's volume in "up" and "down" volumes. The delta is calculated by subtracting down volume from up volume. Many calculation techniques exist to isolate up and down volume within a bar. The simplest techniques use the polarity of interbar price changes to assign their volume to up or down slots, e.g., On Balance Volume or the Klinger Oscillator . Others such as Chaikin Money Flow use assumptions based on a bar's OHLC values. The most precise calculation method uses tick data and assigns the volume of each tick to the up or down slot depending on whether the transaction occurs at the bid or ask price. While this technique is ideal, it requires huge amounts of data on historical bars, which usually limits the historical depth of charts and the number of symbols for which tick data is available.
This indicator uses intrabar analysis to achieve a compromise between the simplest and most precise methods of calculating volume delta. In the context where historical tick data is not yet available on TradingView, intrabar analysis is the most precise technique to calculate volume delta on historical bars on our charts. TradingView's Volume Profile built-in indicators use it, as do the CVD - Cumulative Volume Delta Candles and CVD - Cumulative Volume Delta (Chart) indicators published from the TradingView account . My Volume Delta Columns Pro indicator also uses intrabar analysis. Other volume delta indicators such as my Realtime 5D Profile use realtime chart updates to achieve more precise volume delta calculations. Indicators of that type cannot be used on historical bars however; they only work in real time.
This is the logic I use to assign intrabar volume to up or down slots:
• If the intrabar's open and close values are different, their relative position is used.
• If the intrabar's open and close values are the same, the difference between the intrabar's close and the previous intrabar's close is used.
• As a last resort, when there is no movement during an intrabar and it closes at the same price as the previous intrabar, the last known polarity is used.
Once all intrabars making up a chart bar have been analyzed and the up or down property of each intrabar's volume determined, the up volumes are added and the down volumes subtracted. The resulting value is volume delta for that chart bar, which can be used as an estimate of the buying/selling pressure on an instrument.
Delta Volume Percent (DV%)
This value is the proportion that delta volume represents of the total intrabar volume in the chart bar. Note that on some symbols/timeframes, the total intrabar volume may differ from the chart's volume for a bar, but that will not affect our calculations since we use the total intrabar volume.
Delta Volume Channel
The DV channel is the space between two moving averages: the reference line and a DV%-weighted version of that reference. The reference line is a moving average of a type, source and length which you select. The DV%-weighted line uses the same settings, but it averages the DV%-weighted price source.
The weight applied to the source of the reference line is calculated from two values, which are multiplied: DV% and the relative size of the bar's volume in relation to previous bars. The effect of this is that DV% values on bars with higher total volume will carry greater weight than those with lesser volume.
The DV channel can be in one of four states, each having its corresponding color:
• Bull (teal): The DV%-weighted line is above the reference line.
• Strong bull (lime): The bull condition is fulfilled and the bar's close is above the reference line and both the reference and the DV%-weighted lines are rising.
• Bear (maroon): The DV%-weighted line is below the reference line.
• Strong bear (pink): The bear condition is fulfilled and the bar's close is below the reference line and both the reference and the DV%-weighted lines are falling.
Divergences
In the context of this indicator, a divergence is any bar where the slope of the reference line does not match that of the DV%-weighted line. No directional bias is assigned to divergences when they occur.
Divergence Channel
The divergence channel is the space between two levels (by default, the bar's low and high ) saved when divergences occur. When price has breached a channel and a new divergence occurs, a new channel is created. Until that new channel is breached, bars where additional divergences occur will expand the channel's levels if the bar's price points are outside the channel.
Prices breaches of the divergence channel will change its state. Divergence channels can be in one of five different states:
• Bull (teal): Price has breached the channel to the upside.
• Strong bull (lime): The bull condition is fulfilled and the DV channel is in the strong bull state.
• Bear (maroon): Price has breached the channel to the downside.
• Strong bear (pink): The bear condition is fulfilled and the DV channel is in the strong bear state.
• Neutral (gray): The channel has not been breached.
█ HOW TO USE THE INDICATOR
Load the indicator on an active chart (see here if you don't know how).
The default configuration displays:
• The DV channel, without the reference or DV%-weighted lines.
• The Divergence channel, without its level lines.
• Bar colors using the state of the DV channel.
The default settings use an Arnaud-Legoux moving average on the close and a length of 20 bars. The DV%-weighted version of it uses a combination of DV% and relative volume to calculate the ultimate weight applied to the reference. The DV%-weighted line is capped to 5 standard deviations of the reference. The lower timeframe used to access intrabars automatically adjusts to the chart's timeframe and achieves optimal balance between the number of intrabars inspected in each chart bar, and the number of chart bars covered by the script's calculations.
The Divergence channel's levels are determined using the high and low of the bars where divergences occur. Breaches of the channel require a bar's low to move above the top of the channel, and the bar's high to move below the channel's bottom.
No markers appear on the chart; if you want to create alerts from this script, you will need first to define the conditions that will trigger the markers, then create the alert, which will trigger on those same conditions.
To learn more about how to use this indicator, you must understand the concepts it uses and the information it displays, which requires reading this description. There are no videos to explain it.
█ FEATURES
The script's inputs are divided in four sections: "DV channel", "Divergence channel", "Other Visuals" and "Marker/Alert Conditions". The first setting is the selection method used to determine the intrabar precision, i.e., how many lower timeframe bars (intrabars) are examined in each chart bar. The more intrabars you analyze, the more precise the calculation of DV% results will be, but the less chart coverage can be covered by the script's calculations.
DV Channel
Here, you control the visibility and colors of the reference line, its weighted version, and the DV channel between them.
You also specify what type of moving average you want to use as a reference line, its source and length. This acts as the DV channel's baseline. The DV%-weighted line is also a moving average of the same type and length as the reference line, except that it will be calculated from the DV%-weighted source used in the reference line. By default, the DV%-weighted line is capped to five standard deviations of the reference line. You can change that value here. This section is also where you can disable the relative volume component of the weight.
Divergence Channel
This is where you control the appearance of the divergence channel and the key price values used in determining the channel's levels and breaching conditions. These choices have an impact on the behavior of the channel. More generous level prices like the default low and high selection will produce more conservative channels, as will the default choice for breach prices.
In this section, you can also enable a mode where an attempt is made to estimate the channel's bias before price breaches the channel. When it is enabled, successive increases/decreases of the channel's top and bottom levels are counted as new divergences occur. When one count is greater than the other, a bull/bear bias is inferred from it.
Other Visuals
You specify here:
• The method used to color chart bars, if you choose to do so.
• The display of a mark appearing above or below bars when a divergence occurs.
• If you want raw values to appear in tooltips when you hover above chart bars. The default setting does not display them, which makes the script faster.
• If you want to display an information box which by default appears in the lower left of the chart.
It shows which lower timeframe is used for intrabars, and the average number of intrabars per chart bar.
Marker/Alert Conditions
Here, you specify the conditions that will trigger up or down markers. The trigger conditions can include a combination of state transitions of the DV and the divergence channels. The triggering conditions can be filtered using a variety of conditions.
Configuring the marker conditions is necessary before creating an alert from this script, as the alert will use the marker conditions to trigger.
Markers only appear on bar closes, so they will not repaint. Keep in mind, when looking at markers on historical bars, that they are positioned on the bar when it closes — NOT when it opens.
Raw values
The raw values calculated by this script can be inspected using a tooltip and the Data Window. The tooltip is visible when you hover over the top of chart bars. It will display on the last 500 bars of the chart, and shows the values of DV, DV%, the combined weight, and the intermediary values used to calculate them.
█ INTERPRETATION
The aim of the DV channel is to provide a visual representation of the buying/selling pressure calculated using delta volume. The simplest characteristic of the channel is its bull/bear state. One can then distinguish between its bull and strong bull states, as transitions from strong bull to bull states will generally happen when buyers are losing steam. While one should not infer a reversal from such transitions, they can be a good place to tighten stops. Only time will tell if a reversal will occur. One or more divergences will often occur before reversals.
The nature of the divergence channel's design makes it particularly adept at identifying consolidation areas if its settings are kept on the conservative side. A gray divergence channel should usually be considered a no-trade zone. More adventurous traders can use the DV channel to orient their trade entries if they accept the risk of trading in a neutral divergence channel, which by definition will not have been breached by price.
If your charts are already busy with other stuff you want to hold on to, you could consider using only the chart bar coloring component of this indicator:
At its simplest, one way to use this indicator would be to look for overlaps of the strong bull/bear colors in both the DV channel and a divergence channel, as these identify points where price is breaching the divergence channel when buy/sell pressure is consistent with the direction of the breach. I have highlighted all those points in the chart below. Not all of them would have produced profitable trades, but nothing is perfect in the markets. Also, keep in mind that the circles identify the visual you would be looking for — not the trade's entry level.
█ LIMITATIONS
• The script will not work on symbols where no volume is available. An error will appear when that is the case.
• Because a maximum of 100K intrabars can be analyzed by a script, a compromise is necessary between the number of intrabars analyzed per chart bar
and chart coverage. The more intrabars you analyze per chart bar, the less coverage you will obtain.
The setting of the "Intrabar precision" field in the "DV channel" section of the script's inputs
is where you control how the lower timeframe is calculated from the chart's timeframe.
█ NOTES
Volume Quality
If you use volume, it's important to understand its nature and quality, as it varies with sectors and instruments. My Volume X-ray indicator is one way you can appraise the quality of an instrument's intraday volume.
For Pine Script™ Coders
• This script uses the new overload of the fill() function which now makes it possible to do vertical gradients in Pine. I use it for both channels displayed by this script.
• I use the new arguments for plot() 's `display` parameter to control where the script plots some of its values,
namely those I only want to appear in the script's status line and in the Data Window.
• I wrote my script using the revised recommendations in the Style Guide from the Pine v5 User Manual.
█ THANKS
To PineCoders . I have used their lower_tf library in this script, to manage the calculation of the LTF and intrabar stats, and their Time library to convert a timeframe in seconds to a printable form for its display in the Information box.
To TradingView's Pine Script™ team. Their innovations and improvements, big and small, constantly expand the boundaries of the language. What this script does would not have been possible just a few months back.
And finally, thanks to all the users of my scripts who take the time to comment on my publications and suggest improvements. I do not reply to all but I do read your comments and do my best to implement your suggestions with the limited time that I have.
CVD - Cumulative Volume Delta Candles█ OVERVIEW
This indicator displays cumulative volume delta in candle form. It uses intrabar information to obtain more precise volume delta information than methods using only the chart's timeframe.
█ CONCEPTS
Bar polarity
By bar polarity , we mean the direction of a bar, which is determined by looking at the bar's close vs its open .
Intrabars
Intrabars are chart bars at a lower timeframe than the chart's. Each 1H chart bar of a 24x7 market will, for example, usually contain 60 bars at the lower timeframe of 1min, provided there was market activity during each minute of the hour. Mining information from intrabars can be useful in that it offers traders visibility on the activity inside a chart bar.
Lower timeframes (LTFs)
A lower timeframe is a timeframe that is smaller than the chart's timeframe. This script uses a LTF to access intrabars. The lower the LTF, the more intrabars are analyzed, but the less chart bars can display CVD information because there is a limit to the total number of intrabars that can be analyzed.
Volume delta
The volume delta concept divides a bar's volume in "up" and "down" volumes. The delta is calculated by subtracting down volume from up volume. Many calculation techniques exist to isolate up and down volume within a bar. The simplest techniques use the polarity of interbar price changes to assign their volume to up or down slots, e.g., On Balance Volume or the Klinger Oscillator . Others such as Chaikin Money Flow use assumptions based on a bar's OHLC values. The most precise calculation method uses tick data and assigns the volume of each tick to the up or down slot depending on whether the transaction occurs at the bid or ask price. While this technique is ideal, it requires huge amounts of data on historical bars, which usually limits the historical depth of charts and the number of symbols for which tick data is available.
This indicator uses intrabar analysis to achieve a compromise between the simplest and most precise methods of calculating volume delta. In the context where historical tick data is not yet available on TradingView, intrabar analysis is the most precise technique to calculate volume delta on historical bars on our charts. Our Volume Profile indicators use it. Other volume delta indicators in our Community Scripts such as the Realtime 5D Profile use realtime chart updates to achieve more precise volume delta calculations, but that method cannot be used on historical bars, so those indicators only work in real time.
This is the logic we use to assign intrabar volume to up or down slots:
• If the intrabar's open and close values are different, their relative position is used.
• If the intrabar's open and close values are the same, the difference between the intrabar's close and the previous intrabar's close is used.
• As a last resort, when there is no movement during an intrabar and it closes at the same price as the previous intrabar, the last known polarity is used.
Once all intrabars making up a chart bar have been analyzed and the up or down property of each intrabar's volume determined, the up volumes are added and the down volumes subtracted. The resulting value is volume delta for that chart bar.
█ FEATURES
CVD Candles
Cumulative Volume Delta Candles present volume delta information as it evolves during a period of time.
This is how each candle's levels are calculated:
• open : Each candle's' open level is the cumulative volume delta for the current period at the start of the bar.
This value becomes zero on the first candle following a CVD reset.
The candles after the first one always open where the previous candle closed.
The candle's high, low and close levels are then calculated by adding or subtracting a volume value to the open.
• high : The highest volume delta value found in intrabars. If it is not higher than the volume delta for the bar, then that candle will have no upper wick.
• low : The lowest volume delta value found in intrabars. If it is not lower than the volume delta for the bar, then that candle will have no lower wick.
• close : The aggregated volume delta for all intrabars. If volume delta is positive for the chart bar, then the candle's close will be higher than its open, and vice versa.
The candles are plotted in one of two configurable colors, depending on the polarity of volume delta for the bar.
CVD resets
The "cumulative" part of the indicator's name stems from the fact that calculations accumulate during a period of time. This allows you to analyze the progression of volume delta across manageable chunks, which is often more useful than looking at volume delta cumulated from the beginning of a chart's history.
You can configure the reset period using the "CVD Resets" input, which offers the following selections:
• None : Calculations do not reset.
• On a fixed higher timeframe : Calculations reset on the higher timeframe you select in the "Fixed higher timeframe" field.
• At a fixed time that you specify.
• At the beginning of the regular session .
• On a stepped higher timeframe : Calculations reset on a higher timeframe automatically stepped using the chart's timeframe and following these rules:
Chart TF HTF
< 1min 1H
< 3H 1D
<= 12H 1W
< 1W 1M
>= 1W 1Y
The indicator's background shows where resets occur.
Intrabar precision
The precision of calculations increases with the number of intrabars analyzed for each chart bar. It is controlled through the script's "Intrabar precision" input, which offers the following selections:
• Least precise, covering many chart bars
• Less precise, covering some chart bars
• More precise, covering less chart bars
• Most precise, 1min intrabars
As there is a limit to the number of intrabars that can be analyzed by a script, a tradeoff occurs between the number of intrabars analyzed per chart bar and the chart bars for which calculations are possible.
Total volume candles
You can choose to display candles showing the total intrabar volume for the chart bar. This provides you with more context to evaluate a bar's volume delta by showing it relative to the sum of intrabar volume. Note that because of the reasons explained in the "NOTES" section further down, the total volume is the sum of all intrabar volume rather than the volume of the bar at the chart's timeframe.
Total volume candles can be configured with their own up and down colors. You can also control the opacity of their bodies to make them more or less prominent. This publication's chart shows the indicator with total volume candles. They are turned off by default, so you will need to choose to display them in the script's inputs for them to plot.
Divergences
Divergences occur when the polarity of volume delta does not match that of the chart bar. You can identify divergences by coloring the CVD candles differently for them, or by coloring the indicator's background.
Information box
An information box in the lower-left corner of the indicator displays the HTF used for resets, the LTF used for intrabars, and the average quantity of intrabars per chart bar. You can hide the box using the script's inputs.
█ INTERPRETATION
The first thing to look at when analyzing CVD candles is the side of the zero line they are on, as this tells you if CVD is generally bullish or bearish. Next, one should consider the relative position of successive candles, just as you would with a price chart. Are successive candles trending up, down, or stagnating? Keep in mind that whatever trend you identify must be considered in the context of where it appears with regards to the zero line; an uptrend in a negative CVD (below the zero line) may not be as powerful as one taking place in positive CVD values, but it may also predate a movement into positive CVD territory. The same goes with stagnation; a trader in a long position will find stagnation in positive CVD territory less worrisome than stagnation under the zero line.
After consideration of the bigger picture, one can drill down into the details. Exactly what you are looking for in markets will, of course, depend on your trading methodology, but you may find it useful to:
• Evaluate volume delta for the bar in relation to price movement for that bar.
• Evaluate the proportion that volume delta represents of total volume.
• Notice divergences and if the chart's candle shape confirms a hesitation point, as a Doji would.
• Evaluate if the progress of CVD candles correlates with that of chart bars.
• Analyze the wicks. As with price candles, long wicks tend to indicate weakness.
Always keep in mind that unless you have chosen not to reset it, your CVD resets for each period, whether it is fixed or automatically stepped. Consequently, any trend from the preceding period must re-establish itself in the next.
█ NOTES
Know your volume
Traders using volume information should understand the volume data they are using: where it originates and what transactions it includes, as this can vary with instruments, sectors, exchanges, timeframes, and between historical and realtime bars. The information used to build a chart's bars and display volume comes from data providers (exchanges, brokers, etc.) who often maintain distinct feeds for intraday and end-of-day (EOD) timeframes. How volume data is assembled for the two feeds depends on how instruments are traded in that sector and/or the volume reporting policy for each feed. Instruments from crypto and forex markets, for example, will often display similar volume on both feeds. Stocks will often display variations because block trades or other types of trades may not be included in their intraday volume data. Futures will also typically display variations.
Note that as intraday vs EOD variations exist for historical bars on some instruments, differences may also exist between the realtime feeds used on intraday vs 1D or greater timeframes for those same assets. Realtime reporting rules will often be different from historical feed reporting rules, so variations between realtime feeds will often be different from the variations between historical feeds for the same instrument. The Volume X-ray indicator can help you analyze differences between intraday and EOD volumes for the instruments you trade.
If every unit of volume is both bought by a buyer and sold by a seller, how can volume delta make sense?
Traders who do not understand the mechanics of matching engines (the exchange software that matches orders from buyers and sellers) sometimes argue that the concept of volume delta is flawed, as every unit of volume is both bought and sold. While they are rigorously correct in stating that every unit of volume is both bought and sold, they overlook the fact that information can be mined by analyzing variations in the price of successive ticks, or in our case, intrabars.
Our calculations model the situation where, in fully automated order handling, market orders are generally matched to limit orders sitting in the order book. Buy market orders are matched to quotes at the ask level and sell market orders are matched to quotes at the bid level. As explained earlier, we use the same logic when comparing intrabar prices. While using intrabar analysis does not produce results as precise as when individual transactions — or ticks — are analyzed, results are much more precise than those of methods using only chart prices.
Not only does the concept underlying volume delta make sense, it provides a window on an oft-overlooked variable which, with price and time, is the only basic information representing market activity. Furthermore, because the calculation of volume delta also uses price and time variations, one could conceivably surmise that it can provide a more complete model than ones using price and time only. Whether or not volume delta can be useful in your trading practice, as usual, is for you to decide, as each trader's methodology is different.
For Pine Script™ coders
As our latest Polarity Divergences publication, this script uses the recently released request.security_lower_tf() Pine Script™ function discussed in this blog post . It works differently from the usual request.security() in that it can only be used at LTFs, and it returns an array containing one value per intrabar. This makes it much easier for programmers to access intrabar information.
Look first. Then leap.
VolumeSpreadAnalysisLibrary "VolumeSpreadAnalysis"
A library for Volume Spread Analysis (VSA).
spread(_barIndex)
Calculates the spread of a bar.
Parameters:
_barIndex (int) : (int) The index of the bar.
Returns: (float) The spread of the bar.
volume(_barIndex)
Retrieves the volume of a bar.
Parameters:
_barIndex (int) : (int) The index of the bar.
Returns: (float) The volume of the bar.
body(_barIndex)
Calculates the body of a bar.
Parameters:
_barIndex (simple int) : (int) The index of the bar.
Returns: (float) The body size of the bar.
wickUpper(_barIndex)
Calculates the upper wick of a bar (upper shadow).
Parameters:
_barIndex (simple int) : (int) The index of the bar.
Returns: (float) The upper wick size of the bar.
wickLower(_barIndex)
Calculates the lower wick of a bar (lower shadow).
Parameters:
_barIndex (simple int) : (int) The index of the bar.
Returns: (float) The lower wick size of the bar.
calcForecastedSMA(_source, _length, _forecastedLevel)
Calculates the forecasted Simple Moving Average (SMA).
Parameters:
_source (float) : (series float) Source data for calculation.
_length (simple int) : (int) The length of the SMA.
_forecastedLevel (float) : (float) The forecasted level to include in the calculation.
Returns: (float) The forecasted SMA value.
calcForecastedEMA(_source, _length, _forecastedLevel)
Calculates the forecasted Exponential Moving Average (EMA).
Parameters:
_source (float) : (series float) Source data for calculation.
_length (simple int) : (int) The length of the EMA.
_forecastedLevel (float) : (float) The forecasted level to include in the calculation.
Returns: (float) The forecasted EMA value.
calcForecastedRMA(_source, _length, _forecastedLevel)
Calculates the forecasted Relative Moving Average (RMA).
Parameters:
_source (float) : (series float) Source data for calculation.
_length (simple int) : (int) The length of the RMA.
_forecastedLevel (float) : (float) The forecasted level to include in the calculation.
Returns: (float) The forecasted RMA value.
calcForecastedWMA(_source, _length, _forecastedLevel)
Calculates the forecasted Weighted Moving Average (WMA).
Parameters:
_source (float) : (series float) Source data for calculation.
_length (simple int) : (int) The length of the WMA.
_forecastedLevel (float) : (float) The forecasted level to include in the calculation.
Returns: (float) The forecasted WMA value.
calcElapsedTimePercent()
Calculates the elapsed time percent of the current bar.
Returns: (float) The elapsed time percent.
calcForecastedSpread(multiplierAtMidpoints, multiplierAtPeaks)
Calculates the forecasted spread using elapsed time and dynamic multipliers, handling spread's non-linear nature.
Parameters:
multiplierAtMidpoints (float) : (float) The multiplier value at midpoints.
multiplierAtPeaks (float) : (float) The multiplier value at peaks.
Returns: (float) The forecasted spread value.
calcForecastedVolume()
Calculates the forecasted volume using elapsed time, satisfying volume's linear nature.
Returns: (float) The forecasted volume value.
calcForecastedMA(_source, _length, _forecastedSource, _type)
Calculates the forecasted Moving Average (MA) based on the specified type.
Parameters:
_source (float) : (series float) Source data for calculation.
_length (simple int) : (int) The length of the MA.
_forecastedSource (float) : (float) The forecasted level to include in the calculation.
_type (simple string) : (string) The type of the MA ("SMA", "EMA", "SMMA (RMA)", "WMA").
Returns: (float) The forecasted MA value.
calcMA(_source, _length, _type)
Calculates the Moving Average (MA) based on the specified type.
Parameters:
_source (float) : (series float) Source data for calculation.
_length (simple int) : (int) The length of the MA.
_type (simple string) : (string) The type of the MA ("SMA", "EMA", "SMMA (RMA)", "WMA").
Returns: (float) The MA value.
bullBar(_barIndex)
Determines if the bar is bullish.
Parameters:
_barIndex (simple int) : (int) The index of the bar.
Returns: (bool) True if the bar is bullish, otherwise false.
bearBar(_barIndex)
Determines if the bar is bearish.
Parameters:
_barIndex (simple int) : (int) The index of the bar.
Returns: (bool) True if the bar is bearish, otherwise false.
breakout(_barIndex)
Determines if there is a breakout above the previous bar.
Parameters:
_barIndex (simple int) : (int) The index of the bar.
Returns: (bool) True if there is a breakout, otherwise false.
breakdown(_barIndex)
Determines if there is a breakdown below the previous bar.
Parameters:
_barIndex (simple int) : (int) The index of the bar.
Returns: (bool) True if there is a breakdown, otherwise false.
rejectionWickUpper(_rejectionWick)
Determines if the upper wick is a rejection wick.
Parameters:
_rejectionWick (simple float) : (float) The rejection wick percentage.
Returns: (bool) True if the upper wick is a rejection wick, otherwise false.
rejectionWickLower(_rejectionWick)
Determines if the lower wick is a rejection wick.
Parameters:
_rejectionWick (simple float) : (float) The rejection wick percentage.
Returns: (bool) True if the lower wick is a rejection wick, otherwise false.
setupDataVolume(_data, _mult_Low, _mult_High, _mult_Ultra, _maLengthVolume, _maTypeVolume)
Sets up data for volume levels.
Parameters:
_data (map) : (map) The map to store the levels.
_mult_Low (simple float) : (float) The multiplier for low level.
_mult_High (simple float) : (float) The multiplier for high level.
_mult_Ultra (simple float) : (float) The multiplier for ultra level.
_maLengthVolume (simple int) : (int) The length for MA.
_maTypeVolume (simple string) : (string) The type for MA.
Returns: (void) Nothing.
setupDataSpread(_data, _mult_Low, _mult_High, _mult_Ultra, _maLengthSpread, _maTypeSpread)
Sets up data for spread levels.
Parameters:
_data (map) : (map) The map to store the levels.
_mult_Low (simple float) : (float) The multiplier for low level.
_mult_High (simple float) : (float) The multiplier for high level.
_mult_Ultra (simple float) : (float) The multiplier for ultra level.
_maLengthSpread (simple int) : (int) The length for MA.
_maTypeSpread (simple string) : (string) The type for MA.
Returns: (void) Nothing.
setupDataForecastVolume(_dataForecast, _mult_Low, _mult_High, _mult_Ultra, _maLengthVolume, _predictedLevelVolume, _maTypeVolume)
Sets up data for volume and spread levels for forecast.
Parameters:
_dataForecast (map)
_mult_Low (simple float) : (float) The multiplier for low level.
_mult_High (simple float) : (float) The multiplier for high level.
_mult_Ultra (simple float) : (float) The multiplier for ultra level.
_maLengthVolume (simple int) : (int) The length for MA.
_predictedLevelVolume (float) : (float) The predicted level for MA.
_maTypeVolume (simple string) : (string) The type for MA.
Returns: (void) Nothing.
setupDataForecastSpread(_dataForecast, _mult_Low, _mult_High, _mult_Ultra, _maLengthSpread, _predictedLevelSpread, _maTypeSpread)
Sets up data for spread levels for forecast.
Parameters:
_dataForecast (map)
_mult_Low (simple float) : (float) The multiplier for low level.
_mult_High (simple float) : (float) The multiplier for high level.
_mult_Ultra (simple float) : (float) The multiplier for ultra level.
_maLengthSpread (simple int) : (int) The length for MA.
_predictedLevelSpread (float) : (float) The predicted level for MA.
_maTypeSpread (simple string) : (string) The type for MA.
Returns: (void) Nothing.
isVolumeLow(_data, _barIndex)
Determines if the volume is low.
Parameters:
_data (map) : (map) The data map with volume levels.
_barIndex (int)
Returns: (bool) True if the volume is low, otherwise false.
isVolumeNormal(_data, _barIndex)
Determines if the volume is normal.
Parameters:
_data (map) : (map) The data map with volume levels.
_barIndex (int)
Returns: (bool) True if the volume is normal, otherwise false.
isVolumeHigh(_data, _barIndex)
Determines if the volume is high.
Parameters:
_data (map) : (map) The data map with volume levels.
_barIndex (int)
Returns: (bool) True if the volume is high, otherwise false.
isVolumeUltra(_data, _barIndex)
Determines if the volume is ultra.
Parameters:
_data (map) : (map) The data map with volume levels.
_barIndex (int)
Returns: (bool) True if the volume is ultra, otherwise false.
isSpreadLow(_data, _barIndex)
Determines if the spread is low.
Parameters:
_data (map) : (map) The data map with spread levels.
_barIndex (int)
Returns: (bool) True if the spread is low, otherwise false.
isSpreadNormal(_data, _barIndex)
Determines if the spread is normal.
Parameters:
_data (map) : (map) The data map with spread levels.
_barIndex (int)
Returns: (bool) True if the spread is normal, otherwise false.
isSpreadHigh(_data, _barIndex)
Determines if the spread is high.
Parameters:
_data (map) : (map) The data map with spread levels.
_barIndex (int)
Returns: (bool) True if the spread is high, otherwise false.
isSpreadUltra(_data, _barIndex)
Determines if the spread is ultra.
Parameters:
_data (map) : (map) The data map with spread levels.
_barIndex (int)
Returns: (bool) True if the spread is ultra, otherwise false.
isVolumeText(_data)
Determines text string representing the volume area level.
Parameters:
_data (map) : (map) The data map with volume levels.
Returns: (string) Text string of Low, Normal, High, or Ultra.
isSpreadText(_data)
Determines text string representing the spread area level.
Parameters:
_data (map) : (map) The data map with spread levels.
Returns: (string) Text string of Low, Normal, High, or Ultra.
calcBarColor(_value, _level)
Calculates the color based level.
Parameters:
_value (float) : (float) The value to check.
_level (float) : (float) The value level for comparison.
Returns: (color) The color for the bar.
bullPinBar(_maxBodyPercent, _minWickPercent)
Determines if the bar is a bull pin bar.
Parameters:
_maxBodyPercent (simple float) : (float) The maximum body percentage.
_minWickPercent (simple float) : (float) The minimum wick percentage.
Returns: (bool) True if the bar is a bull pin bar, otherwise false.
bearPinBar(_maxBodyPercent, _minWickPercent)
Determines if the bar is a bear pin bar.
Parameters:
_maxBodyPercent (simple float) : (float) The maximum body percentage.
_minWickPercent (simple float) : (float) The minimum wick percentage.
Returns: (bool) True if the bar is a bear pin bar, otherwise false.
dojiBar(_maxBodyPercent)
Determines if the bar is a doji.
Parameters:
_maxBodyPercent (simple float) : (float) The maximum body percentage.
Returns: (bool) True if the bar is a doji, otherwise false.
spinningTopBar(_minWicksPercent, _emaLength)
Determines if the bar is a spinning top.
Parameters:
_minWicksPercent (simple float) : (float) The minimum wicks percentage.
_emaLength (simple int) : (int) The length for EMA calculation.
Returns: (bool) True if the bar is a spinning top, otherwise false.
highWaveBar(_minBodyPercent, _minWickPercent, _bars)
Determines if the bar is a high wave bar.
Parameters:
_minBodyPercent (simple float) : (float) The minimum body percentage.
_minWickPercent (simple float) : (float) The minimum wick percentage.
_bars (simple int) : (int) The number of bars for comparison.
Returns: (bool) True if the bar is a high wave bar, otherwise false.
consolidationBar(_data, _spread, _bars)
Determines if the bars are in consolidation.
Parameters:
_data (map) : (map) The data map with spread levels.
_spread (simple float) : (float) The spread percentage for comparison.
_bars (simple int) : (int) The number of bars for comparison.
Returns: (bool) True if the bars are in consolidation, otherwise false.
S_DownThrust(_data, _bullPinBarMaxBody, _bullPinBarMinWick)
Determines if there is a sign of strength (DownThrust).
Parameters:
_data (map) : (map) The data map with volume and spread levels.
_bullPinBarMaxBody (simple float) : (float) The maximum body percentage for bull pin bar.
_bullPinBarMinWick (simple float) : (float) The minimum wick percentage for bull pin bar.
Returns: (bool) True if there is a sign of strength (DownThrust), otherwise false.
S_SellingClimax(_data, _rejectionWick)
Determines if there is a sign of strength (Selling Climax).
Parameters:
_data (map) : (map) The data map with volume and spread levels.
_rejectionWick (simple float) : (float) The rejection wick percentage.
Returns: (bool) True if there is a sign of strength (Selling Climax), otherwise false.
S_NoEffortBearishResult()
Determines if there is a sign of strength (No Effort Bearish Result).
Returns: (bool) True if there is a sign of strength (No Effort Bearish Result), otherwise false.
S_BearishEffortNoResult()
Determines if there is a sign of strength (Bearish Effort No Result).
Returns: (bool) True if there is a sign of strength (Bearish Effort No Result), otherwise false.
S_InverseDownThrust(_data, _bearPinBarMaxBody, _bearPinBarMinWick)
Determines if there is a sign of strength (Inverse DownThrust).
Parameters:
_data (map) : (map) The data map with volume and spread levels.
_bearPinBarMaxBody (simple float) : (float) The maximum body percentage for bear pin bar.
_bearPinBarMinWick (simple float) : (float) The minimum wick percentage for bear pin bar.
Returns: (bool) True if there is a sign of strength (Inverse DownThrust), otherwise false.
S_FailedSellingClimax()
Determines if there is a sign of strength (Failed Selling Climax).
Returns: (bool) True if there is a sign of strength (Failed Selling Climax), otherwise false.
S_BullOutsideReversal(_data)
Determines if there is a sign of strength (Bull Outside Reversal).
Parameters:
_data (map) : (map) The data map with volume and spread levels.
Returns: (bool) True if there is a sign of strength (Bull Outside Reversal), otherwise false.
S_EndOfFallingMarket(_data)
Determines if there is a sign of strength (End of Falling Market).
Parameters:
_data (map) : (map) The data map with volume and spread levels.
Returns: (bool) True if there is a sign of strength (End of Falling Market), otherwise false.
S_PseudoDownThrust(_bullPinBarMaxBody, _bullPinBarMinWick)
Determines if there is a sign of strength (Pseudo DownThrust).
Parameters:
_bullPinBarMaxBody (simple float) : (float) The maximum body percentage for bull pin bar.
_bullPinBarMinWick (simple float) : (float) The minimum wick percentage for bull pin bar.
Returns: (bool) True if there is a sign of strength (Pseudo DownThrust), otherwise false.
S_NoSupply(_bullPinBarMaxBody, _bullPinBarMinWick)
Determines if there is a sign of strength (No Supply).
Parameters:
_bullPinBarMaxBody (simple float) : (float) The maximum body percentage for bull pin bar.
_bullPinBarMinWick (simple float) : (float) The minimum wick percentage for bull pin bar.
Returns: (bool) True if there is a sign of strength (No Supply), otherwise false.
W_UpThrust(_data, _bearPinBarMaxBody, _bearPinBarMinWick)
Determines if there is a sign of weakness (UpThrust).
Parameters:
_data (map) : (map) The data map with volume and spread levels.
_bearPinBarMaxBody (simple float) : (float) The maximum body percentage for bear pin bar.
_bearPinBarMinWick (simple float) : (float) The minimum wick percentage for bear pin bar.
Returns: (bool) True if there is a sign of weakness (UpThrust), otherwise false.
W_BuyingClimax(_data, _rejectionWick)
Determines if there is a sign of weakness (Buying Climax).
Parameters:
_data (map) : (map) The data map with volume and spread levels.
_rejectionWick (simple float) : (float) The rejection wick percentage.
Returns: (bool) True if there is a sign of weakness (Buying Climax), otherwise false.
W_NoEffortBullishResult()
Determines if there is a sign of weakness (No Effort Bullish Result).
Returns: (bool) True if there is a sign of weakness (No Effort Bullish Result), otherwise false.
W_BullishEffortNoResult()
Determines if there is a sign of weakness (Bullish Effort No Result).
Returns: (bool) True if there is a sign of weakness (Bullish Effort No Result), otherwise false.
W_InverseUpThrust(_data, _bullPinBarMaxBody, _bullPinBarMinWick)
Determines if there is a sign of weakness (Inverse UpThrust).
Parameters:
_data (map) : (map) The data map with volume and spread levels.
_bullPinBarMaxBody (simple float) : (float) The maximum body percentage for bull pin bar.
_bullPinBarMinWick (simple float) : (float) The minimum wick percentage for bull pin bar.
Returns: (bool) True if there is a sign of weakness (Inverse UpThrust), otherwise false.
W_FailedBuyingClimax()
Determines if there is a sign of weakness (Failed Buying Climax).
Returns: (bool) True if there is a sign of weakness (Failed Buying Climax), otherwise false.
W_BearOutsideReversal(_data)
Determines if there is a sign of weakness (Bear Outside Reversal).
Parameters:
_data (map) : (map) The data map with volume and spread levels.
Returns: (bool) True if there is a sign of weakness (Bear Outside Reversal), otherwise false.
W_EndOfRisingMarket(_data)
Determines if there is a sign of weakness (End of Rising Market).
Parameters:
_data (map) : (map) The data map with volume and spread levels.
Returns: (bool) True if there is a sign of weakness (End of Rising Market), otherwise false.
W_PseudoUpThrust(_bearPinBarMaxBody, _bearPinBarMinWick)
Determines if there is a sign of weakness (Pseudo UpThrust).
Parameters:
_bearPinBarMaxBody (simple float) : (float) The maximum body percentage for bear pin bar.
_bearPinBarMinWick (simple float) : (float) The minimum wick percentage for bear pin bar.
Returns: (bool) True if there is a sign of weakness (Pseudo UpThrust), otherwise false.
W_NoDemand(_bearPinBarMaxBody, _bearPinBarMinWick)
Determines if there is a sign of weakness (No Demand).
Parameters:
_bearPinBarMaxBody (simple float) : (float) The maximum body percentage for bear pin bar.
_bearPinBarMinWick (simple float) : (float) The minimum wick percentage for bear pin bar.
Returns: (bool) True if there is a sign of weakness (No Demand), otherwise false.
N_QuietDoji(_dojiBarMaxBody)
Determines if there is a neutral signal (Quiet Doji).
Parameters:
_dojiBarMaxBody (simple float) : (float) The maximum body percentage for doji bar.
Returns: (bool) True if there is a neutral signal (Quiet Doji), otherwise false.
N_BalancedDoji(_data, _dojiBarMaxBody)
Determines if there is a neutral signal (Balanced Doji).
Parameters:
_data (map) : (map) The data map with volume and spread levels.
_dojiBarMaxBody (simple float) : (float) The maximum body percentage for doji bar.
Returns: (bool) True if there is a neutral signal (Balanced Doji), otherwise false.
N_StrongDoji(_dojiBarMaxBody)
Determines if there is a neutral signal (Strong Doji).
Parameters:
_dojiBarMaxBody (simple float) : (float) The maximum body percentage for doji bar.
Returns: (bool) True if there is a neutral signal (Strong Doji), otherwise false.
N_QuietSpinningTop(_spinningTopBarMinWicks, _spinningTopBarEmaLength)
Determines if there is a neutral signal (Quiet Spinning Top).
Parameters:
_spinningTopBarMinWicks (simple float) : (float) The minimum wicks percentage for spinning top bar.
_spinningTopBarEmaLength (simple int) : (int) The length for EMA calculation.
Returns: (bool) True if there is a neutral signal (Quiet Spinning Top), otherwise false.
N_BalancedSpinningTop(_data, _spinningTopBarMinWicks, _spinningTopBarEmaLength)
Determines if there is a neutral signal (Balanced Spinning Top).
Parameters:
_data (map) : (map) The data map with volume and spread levels.
_spinningTopBarMinWicks (simple float) : (float) The minimum wicks percentage for spinning top bar.
_spinningTopBarEmaLength (simple int) : (int) The length for EMA calculation.
Returns: (bool) True if there is a neutral signal (Balanced Spinning Top), otherwise false.
N_StrongSpinningTop(_spinningTopBarMinWicks, _spinningTopBarEmaLength)
Determines if there is a neutral signal (Strong Spinning Top).
Parameters:
_spinningTopBarMinWicks (simple float) : (float) The minimum wicks percentage for spinning top bar.
_spinningTopBarEmaLength (simple int) : (int) The length for EMA calculation.
Returns: (bool) True if there is a neutral signal (Strong Spinning Top), otherwise false.
N_QuietHighWave(_highWaveBarMinBody, _highWaveBarMinWick, _highWaveBarBars)
Determines if there is a neutral signal (Quiet High Wave).
Parameters:
_highWaveBarMinBody (simple float) : (float) The minimum body percentage for high wave bar.
_highWaveBarMinWick (simple float) : (float) The minimum wick percentage for high wave bar.
_highWaveBarBars (simple int) : (int) The number of bars for comparison.
Returns: (bool) True if there is a neutral signal (Quiet High Wave), otherwise false.
N_BalancedHighWave(_data, _highWaveBarMinBody, _highWaveBarMinWick, _highWaveBarBars)
Determines if there is a neutral signal (Balanced High Wave).
Parameters:
_data (map) : (map) The data map with volume and spread levels.
_highWaveBarMinBody (simple float) : (float) The minimum body percentage for high wave bar.
_highWaveBarMinWick (simple float) : (float) The minimum wick percentage for high wave bar.
_highWaveBarBars (simple int) : (int) The number of bars for comparison.
Returns: (bool) True if there is a neutral signal (Balanced High Wave), otherwise false.
N_StrongHighWave(_highWaveBarMinBody, _highWaveBarMinWick, _highWaveBarBars)
Determines if there is a neutral signal (Strong High Wave).
Parameters:
_highWaveBarMinBody (simple float) : (float) The minimum body percentage for high wave bar.
_highWaveBarMinWick (simple float) : (float) The minimum wick percentage for high wave bar.
_highWaveBarBars (simple int) : (int) The number of bars for comparison.
Returns: (bool) True if there is a neutral signal (Strong High Wave), otherwise false.
N_Consolidation(_data, _consolidationBarSpread, _consolidationBarBars)
Determines if there is a neutral signal (Consolidation).
Parameters:
_data (map) : (map) The data map with volume and spread levels.
_consolidationBarSpread (simple float) : (float) The spread percentage for consolidation bar.
_consolidationBarBars (simple int) : (int) The number of bars for comparison.
Returns: (bool) True if there is a neutral signal (Consolidation), otherwise false.
Bullish/Bearish VolumeThe "Bullish/Bearish Volume" indicator helps traders identify discrepancies between price movement and trading volumes. Sometimes the price trends in one direction while trading volumes indicate opposing intentions among market participants. This indicator aims to identify such divergences, assisting traders in making more informed and balanced trading decisions.
Key features:
1. Directional Volume Differences: The indicator calculates volumes by separating them into two main categories: buying and selling. When the closing price is higher than the opening price, buying volume is shown in green, while selling volume is shown in red when the closing price is lower than the opening price. This accurate classification helps identify which volume type predominates in the current interval.
2. Histograms by Fixed Time Intervals: Collecting data from a fixed time interval (1 minute), the indicator analyzes and sums up buying and selling volumes regardless of the selected chart timeframe. This provides a more detailed market view, allowing traders to accurately gauge sentiment within any chosen timeframe.
3. Total Volume: The indicator aggregates buying and selling volumes, representing total trading activity in gray transparent bars. This gives traders a clear visual representation of overall volume activity in the market for a selected period.
4. Volume Delta and its Moving Average: The volume delta (the difference between buying and selling volumes) is highlighted in blue, allowing for monitoring shifts in the balance of buying and selling power. Additionally, the indicator includes a moving average of the delta, shown as a blue line, to smooth out short-term fluctuations and help traders easily identify long-term trends in volume shifts.
5. Volume Volatility: A histogram representing volume volatility offers insight into trading activity variability, uncovering abnormal spikes or lulls in market dynamics.
Bullish/Bearish Volume is a powerful tool that can break down market flows into understandable signals, enabling traders to better recognize imbalances and make informed decisions.
Movement based on Buying/Selling VolumeDescription:
The "Buying Selling Volume" indicator calculates buying and selling volumes based on price movements within a specified lookback period. It then computes exponential moving averages (EMAs) of these volumes to determine trend direction. The indicator visually represents trend direction on the chart.
Volume Calculation and Normalization (Lines #1 - #12):
The indicator first computes the buying volume (BV) and selling volume (SV) based on price movements within the specified lookback period. These volumes are calculated proportionally to the distance between the closing price and the high and low of each candle.
To ensure consistent behavior and prevent division by zero, the volumes are normalized using a conditional statement to handle cases where the high and low are equal, which implies a lack of price movement.
Additionally, the volume (vol) is normalized to ensure non-zero division in subsequent calculations.
Total Volume and Proportional Volume Calculation (Lines #13 - #20):
The total volume (TP) is computed by summing the buying and selling volumes.
The proportional buying volume (BPV) and selling volume (SPV) are then calculated based on their respective contributions to the total volume.
These proportional volumes are scaled by the total volume to ensure accurate representation relative to market activity.
Evaluating Buying and Selling Pressure (Lines #21 - #24):
The code segment assigns positive or negative values to represent buying and selling pressure, respectively, based on the comparison between BPV and SPV. This step involves determining whether the buying pressure exceeds the selling pressure or vice versa.
The calculated values, denoted as BPc1 and SPc1, encapsulate the relative strength of buying and selling forces within the market.
EMA Calculation and Trend Identification (Lines #25 - #32):
The BPc1 and SPc1 values are subjected to exponential moving average (EMA) calculations using the specified lookback period (LookbackL). This process involves smoothing out the buying and selling pressure data to reveal underlying trends.
The resulting EMAs, represented by ema1B and ema1S, serve as crucial indicators of trend direction. A bullish trend is indicated when ema1B exceeds ema1S, while a bearish trend is signaled when ema1B falls below ema1S.
Secondary Volume Analysis and Trend Confirmation (Lines #33 - #42):
A similar volume analysis and EMA calculation process is repeated in this segment, using a different lookback period (LookbackL2). This allows for a secondary assessment of market dynamics and trend direction.
The resulting EMAs, denoted as ema1B2 and ema1S2, are compared to validate the trend direction identified in the primary analysis.
Visual Representation and Trend Display (Lines #43 - #46):
Finally, the indicator visualizes the identified trends on the chart by plotting colored shapes based on the comparison between the primary and secondary trend directions.
A green color indicates alignment in bullish trends, a red color signifies alignment in bearish trends, while a neutral color (gray) represents no clear consensus between the primary and secondary analyses.
Ideal Usage:
1. **Trend Confirmation:** Traders can use this indicator to confirm trend direction before entering trades.
2. **Reversal Signals:** Changes in trend direction, indicated by shifts in plotted shape colors, can signal potential market reversals.
Warnings:
1. **False Signals:** Like any technical indicator, false signals may occur, especially during low-volume or choppy market conditions. Additional analysis and risk management techniques are essential to mitigate potential losses.
2. **Parameter Sensitivity:** Adjusting lookback periods can impact the indicator's sensitivity to price movements. Traders should test different parameter settings and consider market conditions when using the indicator.
Extended Volume With Historical & Realtime Intrabar ProfileExtended Volume With Historical & Realtime Intrabar Profile
This indicator displays some additional information on the normal volume bars. Apart from the normal co-relation between price action, it is possible to configure an intrabar timeframe.
Intrabar volume analysis
On historical bars, this will calculate the last intrabar timeframe minutes volumes. The intrabar timeframe is user input. On a realtime bar, it will calculate the "rolling/forward" minutes cumulative volume . Which means from the time the script is loaded, it will on subsequent volume ticks, calculate the cumulative volume till then. The realtime cumulative volume will roll-over once the intrabar timeframe minutes is reached. For example, if the script was set to an intrabar timeframe of 30 minutes and loaded on the chart at 2:00 PM, then the realtime bar, will start adding up the volume on each volume tick. At 2:30 PM, this cumulative volume will be reset to zero, again start the same process for 30 minutes till 3:00 PM. It must be noted that fetching lower timeframe data from higher timeframe is not supported/guaranteed in pine script, yet. So the data is approximate and can be erroneous at times. Physical checking maybe required on lower timeframes to confirm the actions.
Price Action and Volume
Each volume bar is coloured on the basis of resulting price action and relative to volume bars prior to this day. This is very helpful in spotting "unusual" volumes.
Color Codes
A normal day volume on an up day, (today close > previous close) is displayed in Blue.
A normal day volume on a down day, is displayed in Fuchsia.
An up day with up volume day with today's volume higher than daily average volume is displayed in Teal.
A down volume day but with high close with lower average volume maybe a sign of weak hands, displayed in Orange.
An up day with volume above the weekly average is displayed in Lime.
Special Info
When enabled, a 52W High volume bar is noted by the sign "1Yr H".
When enabled (for historical bars), if the last intrabar cumulative volume is greater than 1.5 times the 5 day's average intrabar volume , "HD:XX" is displayed on top of the volume bar. The ratio of the day's volume to last 5 day's is displayed. For many markets, a higher value is indicative of delivery based trades near the end of the trading sessions when intraday volumes reside.
Nudge
A modification of the "Volume Buzz", this is a percentage change of the current rolling volume to the daily average of the intrabar volumes for realtime bar. For historical bars, it is the percentage change of the day volume to the daily average volume . The realtime "Nudge" is displayed in the
RT Box
The RT Box, displays the following information:
Elapsed Time - Time elapsed since realtime monitoring, will reset to 0 after intrabar timeframe is elapsed
Vol : Cumulative volume till recent tick since start of monitoring
Chng% : Change in price between the current time and the price at start of the monitoring
Nudge : The volume Nudge value, as explained above
Input controls
Intrabar volumes
Session Closing Volumes, when enabled activates realtime monitoring
Lookback minutes , in steps of 15 minutes, define the intrabar timeframe. Max 210 minutes. Minimum 15 minutes.
Show Only Intrabar Volumes , display on the intrabar timeframe volumes on historical bars, turn off normal day volumes
RT Box , when enabled displays realtime stats about rolling volumes on realtime bar
Volume Averages
Daily Avg Lookback , enable and set the lookback for daily volume average - disabled when "Only Last bars Info" is selected
Weekly Avg Lookback , enable and set the lookback for weekly volume average
Intrabars Avg Lookback , enable and set the lookback for intrabar volume average - enabled only when "Only Last bars Info" is selected
Debug & Info
Display Debug info on each volume bar, set by offset. 0 will show on last bar, 1 on the second last and sop on.
Enhanced Info : When enabled displays "1 Yr H" and "HD" data as explained above
Known Issue
The intrabar volume average does not get displayed on the last historical bar during market-off hours.
Buy Sell Volume SeparateDescription:
The script is designed to provide traders with a unique and comprehensive analysis of trading volume dynamics. Unlike existing scripts, the script offers a distinct advantage by presenting both buy and sell volumes on separate scales, simplifying trading decisions.
Key Features:
1. Dual Volume Scales: The script provides two separate volume scales, one for buy volumes and another for sell volumes. This separation allows to easily distinguish between buying and selling pressure, aiding in more precise trade entries and exits.
2. Clear and Intuitive Chart: The script ensures that the chart it generates is clean and easy to understand. The buy and sell volumes are color-coded for clarity, and you can quickly identify significant volume spikes and trends.
How to Use:
1. Adding the Script: To use the script, simply add it to your TradingView chart.
2. Interpreting Buy and Sell Volumes: On the chart, you will see two separate volume scales—one for buy volumes and one for sell volumes. Green bars represent buying pressure, while red bars indicate selling pressure. Pay attention to the relative strengths and patterns of these bars to gauge market sentiment.
3. Informed Trading Decisions: Armed with insights into both buy and sell volumes, you can make more informed trading decisions. Look for divergences, patterns, or significant volume spikes to identify potential entry and exit points.
Injected Volume Footprint (IVF)Reading volume footprints to interpret buying and selling pressure involves examining the intensity and timing of buy/sell activity within each candle. Although this IVF indicator does not directly show the sequence of buying and selling events within a single candle (as a true footprint chart would), here’s how you can interpret the volume data presented by IVF to get insights on market pressure:
Step 1: Identifying Strong Pressure
Check Color Intensity:
Darker shades represent higher intensity for both buy and sell volumes.
Look for dark green shades for strong buying pressure and dark red or orange shades for strong selling pressure. This helps you quickly spot candles with a high level of activity on one or both sides.
Check Volume Stacking:
Since buy volumes are above the zero line and sell volumes are below, large differences between the two suggest dominance by one side.
If buy volume is significantly higher (e.g., tall green bar with a small red/yellow bar underneath), buying pressure is dominant. Conversely, if sell volume is larger (tall red/yellow bar with a small green bar above), selling pressure dominates.
Step 2: Interpreting Both Buy and Sell Activity
Simultaneous Pressure:
If you see strong green (buy) and red/yellow (sell) volumes within the same candle, it indicates that there was active trading on both sides during that period.
This scenario might suggest a battle between buyers and sellers—often seen near critical support or resistance levels where both sides are actively defending their positions.
Balance vs. Imbalance:
Balanced Pressure: When buy and sell volumes are similar in size, it indicates a period of indecision or a potential consolidation. This usually happens when neither buyers nor sellers have a clear upper hand.
Imbalanced Pressure: If one side has a much larger volume than the other, it shows a clear dominance. For instance, if green buy volume dominates, it means buyers were willing to absorb sell orders aggressively, suggesting a possible uptrend.
Step 3: Estimating Sequence (Hypothetical)
Although IVF doesn’t provide a direct sequence, you can make educated guesses based on context:
Price Action Context:
If the candle opens and initially moves down but then closes higher (bullish candle), it might indicate that selling pressure came first and buying pressure followed, pushing the price up.
Conversely, if the candle opens and moves up first but closes lower (bearish candle), buying might have started first but was overtaken by selling pressure.
Volume Reaction to Price Levels:
At support levels, if you see strong buy volumes with some sell volumes, it might mean initial selling pressure was absorbed by buyers defending the level.
At resistance levels, if sell volume increases with some buy activity, it may indicate initial buying was met by aggressive selling, potentially reversing the price.
Trend Context:
In an uptrend, strong sell volume within an otherwise bullish candle may indicate profit-taking or the start of a pullback, as sellers try to cap further gains.
In a downtrend, strong buy volume in a bearish candle may indicate potential accumulation or buyers attempting to slow the decline, signaling a possible reversal if the trend weakens.
Conclusion
The IVF indicator doesn’t provide the exact sequence of events within each candle like true footprint data would, but by analyzing the intensity, balance, and context within the price action, you can get a reasonable sense of which side was more aggressive and how both buying and selling pressures interacted.
Enhanced Volume Spike ScannerEnhanced Volume Spike Scanner – User Instructions
Overview
This TradingView indicator monitors the trading volume of a list of selected tickers and detects “volume spikes” by comparing the current volume against a simple moving average (SMA) of past volumes. It calculates a “spike strength” (the ratio of current volume to average volume) and assigns a color based on its intensity. The indicator then displays a sorted table on your chart with each ticker’s symbol, spike value, and current volume. Alerts can be triggered if a ticker’s spike strength reaches specific color-coded levels.
How It Works
1. Volume Calculation:
• For each ticker, the indicator fetches the current volume and calculates its simple moving average (SMA) over a user-defined lookback period.
• The ratio of the current volume to the SMA (spike strength) is computed.
2. Color Coding:
• A color is assigned based on the spike strength:
• >5.0: Orange
• >4.0: Yellow
• >3.0: Green
• >2.5: Lime
• >2.0: Blue
• Otherwise: Pink
• These colors serve as visual cues for the intensity of the volume spike.
3. Table Display:
• All tickers are listed in a table on the chart.
• The table is sorted in descending order of spike strength so that the tickers with the strongest volume spikes appear at the top.
• Each row displays the ticker symbol, its spike value (formatted to two decimal places), and the current volume.
4. Alerts:
• You can enable alerts for each color level (e.g., Orange for the most intense spikes).
• Alerts trigger once per bar for any ticker that meets the criteria, allowing you to react promptly to significant volume changes.
⸻
User Inputs and Customization
• Volume Spike Multiplier:
Set the threshold for what constitutes a spike (e.g., a value of 2.0 means the current volume must be at least twice the SMA to be considered a spike).
• Volume Lookback Period:
Define how many bars to use when calculating the SMA of the volume.
• Minimum Volume Filter:
Optionally enable a filter to ignore low-volume ticks. Specify the minimum volume that must be reached for a ticker to be considered.
• Table Settings:
Adjust parameters like column width, table number, and vertical positioning to suit your chart layout.
• Alert Settings:
Toggle alerts for each spike intensity level. Only tickers that meet the specified color threshold will trigger an alert.
• Color Inputs:
Customize the colors for each spike intensity level using the color input settings.
• Ticker Inputs:
Update the ticker symbols manually in the input section (Ticker 1, Ticker 2, etc.) to monitor the assets you are interested in.
⸻
Using the Indicator
1. Add the Indicator:
Once added to your chart, the table will appear at the top-right corner. You can reposition it using the “Table Number” or “Move Down” inputs.
2. Monitor the Table:
Watch the table update each bar:
• The Symbol column lists your selected tickers.
• The Spike column shows the spike strength along with its corresponding color (indicating intensity).
• The Volume column shows the current volume for each ticker.
3. React to Alerts:
If you have enabled alerts for a specific intensity, you’ll receive a notification (once per bar) when a ticker reaches that volume spike level.
4. Adjust Settings as Needed:
Experiment with the multipliers, lookback periods, and minimum volume thresholds to fine-tune the indicator for your trading style.
⸻
Cumulative Buying and Selling Volume with 3 Lookback PeriodsScript Overview:
This script is designed to help traders identify market momentum by analyzing buying and selling volume. It calculates the cumulative buying and selling pressure over three different lookback periods, providing insights into whether the bulls or bears are dominating at any given time. The script does this by computing the cumulative buying and selling volume for each period and comparing them through exponential moving averages (EMA) to smooth out short-term fluctuations.
Purpose and Use:
The primary goal of this script is to highlight shifts in market sentiment based on volume dynamics. Volume is a critical component in market analysis, often signaling the strength behind price movements. By focusing on cumulative buying and selling pressure, the script gives traders an idea of whether the market is trending towards more buying or selling during specific periods. Traders can use this tool to:
Identify potential entry points when buying pressure is strong.
Recognize potential selling opportunities when selling pressure is increasing.
Detect periods of indecision when neither buying nor selling dominates.
Key Concepts:
1. Buying Volume (BV):
The buying volume is calculated based on the price range of each candle. It represents the volume allocated to the bullish side of the market:
When the close is near the high, the buying volume is higher.
Formula: BV = volume * (close - low) / (high - low).
2. Selling Volume (SV):
Similarly, selling volume is derived based on the position of the close relative to the low:
When the close is near the low, selling volume is higher.
Formula: SV = volume * (high - close) / (high - low)
3. Lookback Periods:
The script allows users to define three different lookback periods (5, 10, and 20 by default). These periods smooth out the cumulative buying and selling volumes using EMA calculations:
Shorter periods capture more immediate changes in volume dynamics.
Longer periods provide a broader perspective on market trends.
4. Cumulative Volume Calculation:
For each lookback period, cumulative buying and selling volumes are tracked separately and then smoothed with EMA:
emaBuyVol and emaSellVol are the smoothed values for buying and selling volumes over the lookback periods.
5. Market Pressure Comparison:
Buying Pressure: If the EMA of buying volume is greater than the EMA of selling volume for a particular lookback period, the script considers that buying pressure dominates for that period.
Selling Pressure: Conversely, if selling volume dominates over buying volume for a period, the script registers selling pressure.
6. Overall Market Pressure:
The script aggregates the buying and selling pressures from the three lookback periods to determine the overall market sentiment:
If the majority of periods show buying pressure, the market is bullish.
If the majority show selling pressure, the market is bearish.
If neither side dominates, it suggests a neutral or indecisive market.
Visual Cues:
The script provides visual feedback to help traders quickly interpret the market pressure:
Background Color:
Green (#2bff00) when buying pressure dominates.
Red (#ff0000) when selling pressure dominates.
Gray (#404040) when there is no clear dominance.
Bar Color: The script also colors the price bars based on the dominant market pressure:
Green for buying pressure.
Red for selling pressure.
Gray for neutral or balanced market pressure.
Reset Mechanism:
At the start of each new candle, the cumulative volumes for all three periods are reset to zero. This ensures that the cumulative volumes are only measured for the current candle, preventing carryover from previous periods that could distort the analysis.
How Traders Can Use This Script:
Trend Confirmation: Traders can use the script as a trend confirmation tool. When the background turns green (buying dominance), it suggests bullish momentum. When red, bearish momentum is likely. This information can be used to confirm existing positions or signal new trades in the direction of the market pressure.
Reversal Detection: A sudden shift in the background color (from green to red or vice versa) can indicate a potential reversal. This can be particularly useful when combined with other technical indicators such as price action or support/resistance levels.
Multiple Timeframes: Since the script supports three different lookback periods, it provides a comprehensive view of market pressure across short-term, medium-term, and long-term perspectives. Traders can tailor the lookback periods based on their preferred timeframe to match their trading style, whether it’s intraday trading or longer-term swing trading.
Risk Management: The script's clear visual cues help traders manage risk by highlighting when selling pressure increases, allowing them to consider reducing long positions or tightening stop-losses.
Buying and Selling Pressure with Delta VolumeScript Name
"Buying and Selling Pressure with Delta Volume"
Purpose
The script is designed to analyse and visualise buying and selling pressure for each candle on a trading chart. It estimates the volume attributed to buying and selling within each candle and calculates the delta volume, which is the difference between buying and selling volume. This can help traders understand market dynamics and the balance of power between buyers and sellers.
Components
Volume Data:
The script uses the volume data from the current chart's timeframe.
Candle Spread:
The spread is calculated as the difference between the high and low prices of each candle.
Handling Doji Candles:
If the spread is zero (which can happen with Doji candles), it sets the spread to na (not available) to prevent division by zero errors.
Buying and Selling Pressure:
Buying Pressure: Estimated as the proportion of the candle's volume attributed to the price moving up from the low to the close.
Selling Pressure: Estimated as the proportion of the candle's volume attributed to the price moving down from the high to the close.
Delta Volume:
The difference between buying pressure and selling pressure, representing the net buying or selling volume for each candle.
Plotting
Buying Pressure:
Plotted as green histogram bars.
Selling Pressure:
Plotted as red histogram bars.
Delta Volume:
Plotted as blue histogram bars and a blue line, indicating the difference between buying and selling pressure.
A horizontal line at zero (grey colour) is added to help visualise positive and negative delta volume.
WIG20 Total Value-Weighted VolumeThis Pine Script creates a custom indicator for TradingView that calculates and visualizes the total "value-weighted volume" of the 20 stocks in the WIG20 index (a major Polish stock market index). Here's a breakdown of what it does:
Functionality:
Stock Selection:
The script allows you to input the ticker symbols for the 20 stocks that make up the WIG20 index (e.g., "PKO" for PKO Bank Polski, "PKN" for PKN Orlen, etc.). These are customizable via input fields, so you can adjust them to match the current WIG20 constituents.
Data Retrieval:
For each of the 20 stocks, it fetches two pieces of data from the current chart timeframe (e.g., daily, hourly):
Volume: The number of shares traded (e.g., v01 for the first stock).
Average Price: The midpoint price of the candle, calculated as (open + close) / 2 (e.g., p01 for the first stock). This represents a typical price for that period.
Value-Weighted Volume Calculation:
For each stock, it multiplies the volume by its average price (e.g., vw01 = v01 * p01). This converts the raw volume (in shares) into a monetary value (e.g., in Polish złoty, PLN, assuming the prices are in PLN).
The result, called "value-weighted volume," reflects the total monetary amount traded for each stock rather than just the number of shares.
Total Value-Weighted Volume:
It sums the value-weighted volumes of all 20 stocks into a single value, totalValueVolume. This represents the combined monetary trading activity across the WIG20 index for each time period (e.g., each candle on the chart).
Statistical Analysis:
The script calculates a rolling mean and standard deviation of the totalValueVolume over a user-defined lookback period (default is 20 bars, adjustable via input).
It then computes a "3-sigma" threshold, which is the mean plus three times the standard deviation. This threshold identifies unusually high trading activity (statistically significant outliers).
Candle Direction:
It checks whether the current candle on the chart (e.g., the WIG20 index itself) is bullish or bearish:
Bullish: If the close price is higher than the open price (close > open).
Bearish: If the close price is lower than the open price (close < open).
Color-Coded Visualization:
The totalValueVolume is plotted as a histogram on the chart with dynamic colors:
Blue: If the value-weighted volume is below the 3-sigma threshold (normal trading activity).
Green: If the value-weighted volume exceeds the 3-sigma threshold and the candle is bullish (indicating unusually high buying activity).
Red: If the value-weighted volume exceeds the 3-sigma threshold and the candle is bearish (indicating unusually high selling activity).
Purpose:
What It Shows: The indicator highlights the total monetary trading volume across the WIG20 stocks, adjusted for each stock’s price, and flags periods of exceptional activity (above 3 sigma) with colors that indicate market direction (bullish or bearish).
Use Case: Traders or analysts might use this to:
Identify significant market events where trading volume spikes (e.g., news-driven moves).
Assess whether those spikes align with bullish (green) or bearish (red) sentiment, based on the WIG20 index’s price movement.
Compare monetary trading activity across different periods, rather than just share volume, which gives more weight to higher-priced stocks.
Key Features:
Customizable: You can tweak the stock symbols and lookback period to fit your needs.
Statistical Insight: The 3-sigma rule helps spot outliers in trading activity.
Visual Clarity: The histogram’s color changes make it easy to see when volume spikes occur and whether they’re tied to upward or downward price moves.
Example Output:
On a daily WIG20 chart, if one day’s total value-weighted volume is exceptionally high (above 3 sigma) and the WIG20 closes higher than it opened, the histogram bar for that day turns green. If it closes lower, it turns red. Otherwise, it stays blue.
In essence, this script transforms raw volume data into a price-adjusted, statistically informed indicator that visually emphasizes significant trading events with directional context!
EM Visible Range Volume Profile█ OVERVIEW
ᴇᴍ VRVP (Visible Range Volume Profile) indicator calculates the volume profile within the visible range of prices.
Volume Profile is an advanced technical analysis indicator that shows trading activity over a specified period of time at certain price levels.
The indicator plots a histogram on the chart that reflects dominant or significant price levels based that are based on volume.
VP concept
VP Components
Open, High, Low, Close:
There are different types of volume profile indicators but the majority of them will designate the OHLC.
Point of Control:
A price level with the most traded volume during one session, also known as POC.
High Volume Node (HVN):
Area of high volume relative to surrounding price action.
Low Volume Node (LVN):
Area of low volume relative to surrounding price action.
Analysis of price in relation to high and low volume nodes is useful when building context around your trades.
█ VOLUME PROFILE STRATEGIES
The distribution of a volume profile can help you determine the strength of a trend and spot potential reversal zones. Let’s take a look at the five different distribution types.
Neutral D
In order for price to break away from value, either the buyers or the sellers will have to become more aggressive than the other side. When this occurs, it gives us with a vital piece of information.
Now we know who were the agressors at this price level: either the buyers or the sellers. That's why this is a good level for a trading setup if the price bounces back.
Bearish P and Bullish P
Bearish P — reversal. Bullish P — confirmation.
Bearish Ь and Bullish Ь
Bearish Ь — confirmation. Bullish Ь — reversal.
Examples
█ INPUTS
Width — amplitude of the VP histogram.
Grid — the number of columns of the VP histogram.
Delta of volumes — combinatorial determination of the ratios of sellers and buyers.
In quoted units — conversion in units of quoted currency.
Logarithmic scale — recalculation the grid step to the logarithmic scale of the chart.
HTF — (Higher Timeframe) calculation of VP for the period of the selected timeframe. ISO: Isolated computation in HTF period.
Palette: Total volume, Volume of buyers, Volume of sellers, HTF bars.
Warnings: colour of the «⚠» icon, language of information in the Tooltip.
Addition: ᴇᴍ CHN-RMA — a grid of moving averages with periods of centered hexagonal numbers.
█ ОБЩИЕ СВЕДЕНИЯ
ᴇᴍ VRVP (Visible Range Volume Profile) рассчитывает профиль объёма в видимом диапазоне цен.
Профиль объёма — это продвинутый индикатор технического анализа, который показывает торговую активность за условленный период времени на определённых ценовых уровнях.
Индикатор строит на графике гистограмму, отражающую доминирующие или значимые ценовые уровни, основанные на объёме.
█ НАСТРОЙКИ
Ширина — амплитуда гистограммы VP.
Сетка — количество колонок гистограммы VP.
Дельта объёмов — комбинаторное определение соотношений продаж и покупок.
В котируемых единицах — пересчёт в единицах котируемой валюты.
Логарифмическая шкала — пересчёт шага сетки на логарифмическую шкалу графика.
HTF — (Higher Timeframe) расчёт VP за период выбранного таймфрейма. ISO: Изолированное вычисление в HTF-периоде.
Палитра: Суммарный объём, Объём покупок, Объём продаж, Бары HTF.
Предупреждения: цвет значка «⚠», язык информации в Tooltip.
Дополнение: ᴇᴍ CHN-RMA — сетка скользящих средних с периодами центрированных гексагональных чисел.
Cross-Exchange BTC Volume[nakano]## Cross-Exchange BTC Volume
### Overview 📊
This indicator aggregates Bitcoin (BTC) volume from multiple major cryptocurrency exchanges in real-time and displays it as a stacked column chart. Additionally, it shows a label on the right side of the chart detailing the latest volume from each exchange and its percentage сьогодніs total market volume, helping to visually grasp market liquidity and trading concentration.
### Main Features ✨
* **Multi-Exchange Volume Aggregation**: Sums up the volume from major BTC/USD and BTC/USDT pairs on Binance, Coinbase, Bybit, Kraken, Bitstamp, Bitfinex, Gemini, HTX (formerly Huobi), and KuCoin, as well as BTC/JPY pairs on Bitflyer, Binance, Kraken, and Bitfinex.
* **Stacked Volume Chart**: Displays the volume from each exchange as a color-coded stacked column chart, allowing for an at-a-glance understanding of the overall volume composition.
* **Detailed Volume Label**: Shows a text label on the right side of the chart with the **latest volume** from each exchange (rounded to one decimal place, formatted as "0.x" if less than 1, or with thousand separators if 1 or greater) and its percentage of the current total volume. This label can be toggled on/off in the settings.
* **Dynamic Updates**: Volume data updates according to the chart's timeframe.
### What it Displays 📈
* **Stacked Volume Chart (Lower Pane)**:
* Volume from each exchange is displayed in a color-coded stacked format. The chart legend indicates which color corresponds to which exchange group (e.g., "Cumulative: Sum below BINANCEUSDT"). Volumes are stacked from the bottom, with the top border representing the total volume.
* **Detailed Volume Label (Right Side of Chart)**:
* A single text label is displayed on the right side of the chart, showing the volume figures and market share percentages for each exchange (or group).
* This label is updated when calculations are performed on the right edge of the chart (where the latest bars appear). The volume and percentage figures displayed are based on the **latest data** at that point.
* The displayed content is as follows:
* `BINANCE(US)`: Total volume and percentage for Binance USD(T/C) pairs.
* `COINBASE(US)`: Total volume and percentage for Coinbase USD(C) pairs.
* `BYBIT(US)`: Volume and percentage for Bybit USDT pair.
* `KRAKEN(US)`: Total volume and percentage for Kraken USD(T) pairs.
* `BITSTAMP`: Volume and percentage for Bitstamp USD pair.
* `BITFINEX(US)`: Volume and percentage for Bitfinex USD pair.
* `BITFLYER(JP)`: Volume and percentage for Bitflyer JPY pair.
* `BINANCE(JP)`: Volume and percentage for Binance JPY pair.
* `KRAKEN(JP)`: Volume and percentage for Kraken JPY pair.
* `BITFINEX(JP)`: Volume and percentage for Bitfinex JPY pair.
* `OTHER (incl. HTX)`: Total volume and percentage for Gemini (USD), HTX (USDT), and KuCoin (USDT).
### Inputs ⚙️
* **Show Labels**: `true` (checked) to display the detailed volume label, `false` (unchecked) to hide it. Default is `true`.
### How to Use / Use Cases 💡
* Understand which exchanges are experiencing active BTC trading.
* Check which exchange's volume reacts алкоголь (significantly) to specific news or events.
* Observe changes in volume share among exchanges across different time zones (e.g., Asia, Europe, US sessions).
* Analyze increases/decreases in overall market volume and the contribution of each exchange.
### Notes 📝
* This indicator is written in `//@version=6`.
* Volume data is sourced from symbols provided by TradingView for each exchange. Data may become unavailable due to changes in exchange APIs, symbol names, etc.
* A single detailed volume label is displayed, updating to reflect the latest situation as the chart updates. Its content is triggered to update based on the **latest volume data** when bars in the most recent part of the chart are calculated.
* The source code is subject to the terms of the Mozilla Public License 2.0.
---
**© nakano**
Aggregated Volume (Multi-Exchange)Indicator: Aggregated Volume (Multi-Exchange)
Overview:
The Aggregated Volume (Multi-Exchange) indicator is designed to aggregate trading volume data from multiple exchanges for a specific cryptocurrency pair. The goal is to provide a consolidated view of the total trading volume across different platforms, helping traders and analysts gauge the overall market activity for a given asset.
Features:
Multi-Exchange Support: The indicator allows you to aggregate trading volume data from various exchanges. Users can enable or disable volume data from specific exchanges (e.g., Binance, Bybit, Kucoin, etc.).
Spot and Futures Volumes: The indicator can sum the volume for spot trading and futures trading separately if desired. However, in the current version, it only sums the volume for specific pairs across multiple exchanges, without distinguishing between spot and futures volumes (though this feature can be added if necessary).
Customizable Exchange Selection: Users can select which exchanges' volume data to include in the aggregation.
Real-Time Updates: The volume data is updated in real-time as new bars are formed on the chart, providing an up-to-date picture of the trading volume.
Purpose:
The primary purpose of this indicator is to consolidate trading volume information from multiple exchanges for the same trading pair (e.g., BTC/USD). Traders can use this aggregated volume to gain a better understanding of market activity across various platforms, as well as assess the level of liquidity and interest in a particular asset.
By viewing the total aggregated volume, traders can:
Track market trends: Higher aggregated volume can signal increased market interest, making it easier to spot trends or potential breakouts.
Analyze liquidity: This indicator can help traders assess liquidity in the market, especially when using multiple exchanges.
Identify potential market manipulation: If there is a sudden spike in volume on multiple exchanges, it could signal market manipulation or an event-driven surge.
How it Works:
Volume Aggregation: The indicator collects and sums the volume data for a given symbol (e.g., BTC/USD) from different exchanges like Binance, Bybit, Kucoin, and others.
Multiple Exchanges: The volume data is aggregated from each selected exchange and plotted as a single volume value on the chart.
Real-Time Volume Plotting: The total aggregated volume is then plotted as a histogram on the chart, with the color of the bars changing depending on whether the price is rising or falling (typically green for rising prices and red for falling prices).
Inputs/Settings:
Exchange Selection: A list of checkboxes where users can choose which exchanges' volume data to include (e.g., Binance, Bybit, Kucoin, etc.).
Color Settings: Users can set the color for the histogram bars based on price direction (e.g., green for rising and red for falling).
Volume Calculation: The indicator calculates the volume for a specific cryptocurrency pair across selected exchanges in real-time.
Daily VolumeShows a table in the top right of the chart with a few options:
Only show intraday: By default the table will not be visible on timeframes of 1D or above, but this can be changed to show all the time if desired.
Daily volume: Displays the volume for the day so far, regardless of what timeframe is currently showing.
Yesterday's volume: Displays the volume from the previous day. As with the daily volume , it will show the entire previous day's volume regardless of the current timeframe.
Average Volume: Displays the average volume based on a user-specified number of days. The default value is 30 days.
Text color and table color: Choose the color settings for the table text and background.
Falling and Growing VolumeFalling & Growing Volume is an indicator which shows growing and falling volumes in different colors. If current volume greater then previous volume then it is considered as growing volume otherwise as falling volume.
BTC Volume: Bitfinex Total/Long/ShortQuick little script to show Bitfinex LONG/SHORT positions in context to overall volume on the TF. Works best on small TFs to eliminate fluctuation in margin positions impacting the 'accuracy' of volume.
Base Color Scheme
Blue: Total Bitfinex traded volume
Yellow: Assumed Volume of BTCUSDLONGS (Close Position - Open Position)
Orange: Assumed Volume of BTCUSDSHORTS (Close Position - Open Position)
Work is based on conversations and community interaction through Crypto Traders Pro.
[Stya] Volume Buy vs Volume MA20This indicator focusing on volume movement, where the indicator track if the volume is bigger more than 120% compare to MA20 volume.
Delta Volume[integral]Delta Volume – Visualizing Accumulated Candle Dominance
This indicator measures and accumulates the net difference between bullish and bearish candle volumes over a user-defined range of bars. It integrates the volume dominance over time, offering traders a unique view into how buying or selling pressure has been distributed.
🔍 Concept & Logic
Delta Volume Calculation
For each bar, the script looks x to y bars back in time (e.g., from 10 bars ago to 5 bars ago) and:
Adds volume for bullish candles (close > open)
Subtracts volume for bearish candles (close < open)
This gives us a snapshot of volume dominance for that range.
What is Integration in This Context?
Integration, in this script, refers to the accumulation (summation) of these dominance differences over a period.
Much like integrating a function in calculus (i.e., area under the curve), here we are integrating the "net advantage" of buyers vs. sellers.
Over time, this builds a cumulative picture of directional pressure, showing whether buyers (positive integration) or sellers (negative integration) are in control.
Why It Matters
Unlike simple volume charts, this tool filters noise by focusing on who is dominating the market—buyers or sellers—and tracks that dominance over time.
It gives a macro-level view of pressure buildup, which can precede major breakouts or reversals.
📊 Visual Features
Buy Volume (green columns): Sum of volumes from bullish candles.
Sell Volume (red columns): Sum of volumes from bearish candles.
Candle Difference (white line): Net dominance difference (Buy - Sell).
Integrated Dominance Difference: Cumulative label showing the total buyer-seller dominance over the defined integration period.
Zero Line (dashed): Balance point.
🧠 Use Case
Detect divergences between price and cumulative volume pressure.
Confirm trend strength when integrated delta volume aligns with price movement.
Spot accumulation or distribution phases invisible on price action alone.
⚠️ If you're applying this to symbols with no volume data (e.g., certain Forex or indices), the script will stop with an error message.