1 min Volume Flow Indicator (VFI) with EMA ribbonOriginally Markos Katsanos' indicator that LazyBear made popular here on TW. Now updated to Pine Script version 5, which makes multi-timeframe charting easier.
The initial Katsanos' idea for the indicator is the following:
"The VFI is based on the popular On Balance Volume (OBV) but with three very important modifications:
Unlike the OBV, indicator values are no longer meaningless. Positive readings are bullish and negative bearish.
The calculation is based on the day’s median instead of the closing price.
A volatility threshold takes into account minimal price changes and another threshold eliminates excessive volume. ...
A simplified interpretation of the VFI is that values above zero indicate a bullish state and the crossing of the zero line is the trigger or buy signal.
The strongest signal with all money flow indicators is of course divergence.
The classic form of divergence is when the indicator refuses to follow the price action and makes lower highs while price makes higher highs (negative divergence). If price reaches a new low but the indicator fails to do so, then price probably traveled lower than it should have. In this instance, you have positive divergence."
I set up default settings for intraday trading I personally have found the most useful. And what I have found useful is how and which volume flows in and out on 1 min chart. For 1 min volume flow I find it convenient to have specific EMAs as guidance: 360, 720, 1440, 2160, 2880, 3600, 4320 -- the logic is derived from how many minutes there are per specific hours and days. Since short term trends typically last for three days, 1440 and 4320 EMAs are the ones I myself concentrate the most. That is to say, quite often 1min volume flow pivots around 1440 and 4320 EMAs.
If you want to see 1 min volume flow on some other timeframe than 1 min, change the timeframe in the settings.
Tìm kiếm tập lệnh với "Volume"
Swing Volume Profiles [LuxAlgo]The Swing Volume Profiles indicator aims to calculate and highlight trading activity at specific price levels between two swing points; allowing traders to reveal dominant and/or significant price levels based on volume.
By measuring traded volume at all price levels in the market over a specified time period, the script can also be used to detect some key analysis generally such as supply & demand, buy-side & sell-side liquidity levels, unfilled liquidity voids, and imbalances that can highlight on the chart.
🔶 USAGE
A volume profile is an advanced charting tool that displays the traded volume at different price levels over a specific period. It helps you visualize where the majority of trading activity has occurred.
Key Levels are the areas where the volume is concentrated or where there are significant volume spikes. These levels are known as key support and resistance levels. High-volume nodes indicate areas of high activity and are likely to act as support or resistance in the future.
Volume profile also helps identify value areas, which represent the price levels where the most trading activity has taken place. These levels can act as areas of support or resistance as traders perceive them as fair value.
The Point of Control describes the price level where the most volume was traded. A Naked Point of Control (also called a Virgin Point of Control) is a previous POC that has not been traded. Extending PoC options 'Until Bar Cross' or 'Until Bar Touch' helps in identifying Naked Point of Control Lines.
Previous PoC levels can serve as support and resistance for future price movements. Extending PoC Level 'Until Last Bar' option will help to identify such levels.
🔶 DETAILS
One of the unique features of the script is its ability to detect some other key levels such as levels of acceptance and rejection.
Levels of rejection we may summarize as supply and demand levels, these are also referred to as buy-side and sell-side liquidity levels. They usually occur at extreme highs or lows, where prices may be too high for buyers (high supply, low demand) or too low for sellers (low supply, high demand)
Levels of acceptance are the levels where Liquidity Voids occur, these are also referred to imbalances. Liquidity voids are sudden changes in price when the price jumps from one level to another. The peculiar thing about liquidity voids is that they almost always fill up, so we call them levels of acceptance.
🔶 ALERTS
When an alert is configured, the user will have the ability to be notified in case:
Point Of Control Line is touched/crossed
Value Area High Line is touched/crossed
Value Area Low Line is touched/crossed
🔶 SETTINGS
🔹 Display Options
Mode: Controls the lookback length of detection and visualization, where Present assumes last X bars specifid in '# Bars' option and Historical assumes all data available to the user as well as allowed limits of visiual objects (boxs, lines, labels etc)
# Bars: Controls the lookback length.
🔹 Swing Volume Profiles
The script takes into account user-defined parameters and plots volume profiles. Due to Pine Script™ drwaing objects limit only total volume profiles are presented.
Swing Detection Length: Lookback period
Swing Volume Profiles: Toggles the visibility of the Volume Profiles, with color options to differentiate the Value Area within a profile.
Profile Range Background Fill: Toggles the visibility of the Volume Profiles Range
🔹 Point of Control (PoC)
Point of Control (POC) – The price level for the time period with the highest traded volume
Point of Control (PoC): Toggles the visibility of the Point of Control
Developing PoC: Toggles the visibility of the Developing PoC
Extend PoC: Option that allows detecting virgin PoC levels. Virgin Point of Control (VPoC) is defined as a Point of Control that has never been revisited or touched. The option also allows PoC levels to extend till the last bar aiming to present levels from history where the levels were traded significantly and those levels can be used as support and resistance levels.
🔹 Value Area (VA)
Value Area (VA) – The range of price levels in which the specified percentage of all volume was traded during the time period.
Value Area Volume %: Specifies percentage of the Value Area
Value Area High (VAH): Toggles the visibility of the Value Area High, the highest price level within the Value Area
Value Area Low (VAL): Toggles the visibility of the Value Area Low, the lowest price level within the Value Area
Value Area (VA) Background Fill: Toggles the visibility of the Value Area Range
🔹 Liquidity Levels / Voids
Unfilled Liquidity, Thresh: Enable display of the Unfilled Liquidity Levels and Liquidity Voids, where threshold value defines the significance of the level.
🔹 Profile Stats
Position, Size: Specifies the position and the size of the label presenting Profile Stats, the tooltip of the label includes all related info for each profile.
Price, Price Change, and Cumulative Volume: Enable display of the given options on the chart.
🔹 Volume Profile Others
Number of Rows: Specify how many rows each histogram will have. Caution, having it set to high values will quickly hit Pine Script™ drawing objects limit and may cause fewer historical profiles to be displayed.
Placement: Place profile either left or right.
Profile Width %: Alters the width of the rows in the histogram, relative to the calculated profile length.
🔶 RELATED SCRIPTS
Alternative Liquidity Void Detection script, Buyside-Sellside-Liquidity
Volume Price Balance by serkany88This idea has been in my mind for a while. We all know how important volume is to technical analysis but volume and price itself doesn't mean much when volatility and momentum of the current trend is not taken into account. With this oscillator we try to combine all these factors into one indicator and provide a simplified interpretation of this relationship with spread analysis. This indicator can be used in all timeframes but higher timeframes like 1 hour and above will provide most stable results.
How it works?
This oscillator tries to analyze volume spread along with price spread based on wyckoff methods and attains certain "strength value" for each candle and it's relationship with the volume. After this calculation preferably we remove detected rejection candles from overall calculation and draw them as plots. The multipliers of the strengths can be changed from the settings.
Green Line Above Red Line = Bullish momentum stronger
Red Line Above Green Line = Bearish momentum stronger
Top circles mean possible bullish reversal candle detected. Gray is weak, White is normal and Red top circle means strong possible reversal detected.
Bottom circles mean possible bearish reversal candle detected. Gray is weak, White is normal and Green bottom circle means strong possible reversal detected.
Let's check the example below
As you can see we see a green dot appear in a somewhat weakening bullish momentum, this can mean possible reversal can happen soon and it does.
Below is a bearish example
In this example we see a possible strong reversal signal in a increasing bullish momentum and the price reacts immediately after the candle.
We also have a table that shows the current non-smoothed result of trend strength based on calculated price-volume spread at top right of the oscillator.
Time & volume point of control / quantifytoolsWhat are TPOC & VPOC?
TPOC (time point of control) and VPOC (volume point of control) are points in price where highest amount of time/volume was traded. This is considered key information in a market profile, as it shows where market participant interest was highest. Unlike full fledged market profile that shows total time/volume distribution, this script shows the points of control for each candle, plotted with a line (time) and a dot (volume). The script hides your candles/bars by default and forms a line in the middle representing candle range. In case of candles, borders will still be visible. This feature can be turned off in the settings.
Volume and time data are fetched from a lower timeframe that is automatically adjusted to fit the timeframe you're using. By default, the following settings are applied:
Charts <= 30 min: 1 minute timeframe
Charts > 30 min & <= 3 hours : 5 minute timeframe
Charts > 3 hours & <= 8 hours : 15 minute timeframe
Charts > 8 hours & <= 1D: 1 hour timeframe
Charts > 1D & <= 3D : 2 hour timeframe
Charts > 3D: 4 hour timeframe
Timeframe settings can be changed via input menu. The lower the timeframe, the more precision you get but with the cost of less historical data and slower loading time. Users can also choose which source to use for determining price for points of control, e.g. using close as source, the point of control is set to match the value of lower timeframe candle close. This could be replaced with OHLC4 for example, resulting in a point of control based on OHLC average.
To identify more profound points of market participant interest, TPOC & VPOC as percentage of total time/volume thresholds can be set via input menu. When a point of control is equal to or greater than the set percentage threshold, visual elements will be highlighted in a different color, e.g. 50% VPOC threshold will activate a highlight whenever volume traded at VPOC is equal to or greater than 50% of total volume. All colors are customizable.
VPOC is defined by fetching lower timeframe candle with the most amount of volume traded and using its close (by default) as a mark for point of control. For TPOC, each candle is divided into 10 lots which are used for calculating amount of closes taking place within the bracket values. The lot with highest amount of closes will be considered a point of control. This mark is displayed in the middle point of a lot:
How to utilize TPOC & VPOC
Example #1: Trapped market participants
One or both points of control at one end of candle range (wick tail) and candle close at the other end serves as an indication of market participants trapped in an awkward position. When price runs away further from these trapped participants, they are eventually forced to cover and drive price even further to the opposite direction:
Example #2: Trend initiation
A large move that leaves TPOC behind while VPOC is supportive serves as an indication of a trend initiation. Essentially, this is one way to identify an event where price traded sideways most of the time and suddenly moved away with volume:
Example #3: POC supported trend
A trend is healthy when it's supported by a point of control. Ideally you want to see either time or volume supporting a trend:
Aggregated Delta (Buy/Sell) Volume - InFinito||||||||||||||||CREDITS||||||||||||||||
Modified & Updated script from MARKET VOLUME by Ricardo M Arjona @XeL_Arjona that Includes Aggregated Volume , Delta Volume , Volume by Side
Aggregation code originally from Crypt0rus
||||||||||||||||NOTES||||||||||||||||
- Calculated based on Aggregated Volume instead of by symbol volume . Using aggregated data makes it more accurate and allows to compare volume flow between different kinds of markets (Spot, Futures , Perpetuals, Futures+Perpetuals and All Volume ).
- As well, in order to make the data as accurate as possible, the data from each exchange aggregated is normalized to report always in terms of 1 BTC . In case this indicator is used for another symbol, the calculations can be adjusted manually to make it always report data in terms of 1 contract/coin.
- The indicator can be used for any coin/symbol to aggregate volume , but it has to be set up manually
- The indicator can be used with specific symbol data only by disabling the aggregation option, which allows for it to be used on any symbol
- Previously Included with "Aggr. CDV / Delta Volume" this functionality has been removed from the latter indicator for functionality and simplicity purposes.
||||||||||||||||FUNCTIONALITY||||||||||||||||
Aggregated Delta Volume: Based off Xel_Arjona's calculation, buy and sell volume is estimated each period. This indicators can display both Buy Volume and Sell Volume for each period.
By Default, this indicator displays Delta Volume by side, which is the difference between the estimated buy and sell volume.
By checking the Option "Show all volume by side", instead of the Delta volume, all Buy and Sell Volume will be displayed by side
Volume Variation Index IndicatorThis tool is a quantitative tip for analysts who study volumes or create volume based trading strategies.
Like all our projects, we start with a statistical logic to which we add coding logic.
This indicator can save a huge amount of time in calculating the variation of volume between sessions .
How it work
The indicator calculates the difference between the volume of the last closing bar and the volume of the previous closing bar. It shows the difference between the trading volumes.
The session in which the trading volume is up are represented in green.
Red session represent trading volume down.
We have added a third function.
Through the User Interface the trader can activate or deactivate the variation average.
The indicator is able to calculate the average of the volume changes by representing it with a blue line.
To activate the average, simply set it to ON in the User Interface.
By default, the indicator calculates the average of the last 10 periods, but you are free to set this parameter in the User Interface.
Data access
To access the data, simply move the cursor. When you move the cursor over the green bars, the increase data will be displayed in green. By hovering the cursor over the red bars you will see the decrease data in red. By hovering the cursor over the average will show you the average data in blue.
The data is displayed in the top left corner of the indicator dashboard.
If you found this indicator helpful, please like our script.
Cumulative Volume Delta Profile and Heatmap [BackQuant]Cumulative Volume Delta Profile and Heatmap
A multi-view CVD workstation that measures buying vs selling pressure, renders a price-aligned CVD profile with Point of Control, paints an optional heatmap of delta intensity, and detects classical CVD divergences using pivot logic. Built for reading who is in control, where participation clustered, and when effort is failing to produce result.
What is CVD
Cumulative Volume Delta accumulates the difference between aggressive buys and aggressive sells over time. When CVD rises, buyers are lifting the offer more than sellers are hitting the bid. When CVD falls, the opposite is true. Plotting CVD alongside price helps you judge whether price moves are supported by real participation or are running on fumes.
Core Features
Visual Analysis Components
CVD Columns - Plot of cumulative delta, colored by side, for quick read of participation bias.
CVD Profile - Price-aligned histogram of CVD accumulation using user-set bins. Shows where net initiative clustered.
Split Buy and Sell CVD - Optional two-sided profile that separates positive and negative CVD into distinct wings.
POC - Point of Control - The price level with the highest absolute CVD accumulation, labeled and line-marked.
Heatmap - Semi-transparent blocks behind price that encode CVD intensity across the last N bars.
Divergence Engine - Pivot-based detection of Bearish and Bullish CVD divergences with optional lines and labels.
Stats Panel - Top level metrics: Total CVD, Buy and Sell totals with percentages, Delta Ratio, and current POC price.
How it works
Delta source and sampling
You select an Anchor Timeframe that defines the higher time aggregation for reading the trend of CVD.
The script pulls lower timeframe volume delta and aggregates it to the anchor window. You can let it auto-select the lower timeframe or force a custom one.
CVD is then accumulated bar by bar to form a running total. This plot shows the direction and persistence of initiative.
Profile construction
The recent price range is split into Profile Granularity bins.
As price traverses a bin, the current delta contribution is added to that bin.
If Split Buy and Sell CVD is enabled, positive CVD goes to the right wing and negative CVD to the left wing.
Widths are scaled by each side’s maximum so you can compare distribution shape at a glance.
The Point of Control is the bin with the highest absolute CVD. This marks where initiative concentrated the most.
Heatmap
For each bin, the script computes intensity as absolute CVD relative to the maximum bin value.
Color is derived from the side in control in that bin and shaded by intensity.
Heatmap Length sets how far back the panels extend, highlighting recurring participation zones.
Divergence model
You define pivot sensitivity with Pivot Left and Right .
Bearish divergence triggers when price confirms a higher high while CVD fails to make a higher high within a configurable Delta Tolerance .
Bullish divergence triggers when price confirms a lower low while CVD fails to make a lower low.
On trigger, optional link lines and labels are drawn at the pivots for immediate context.
Key Settings
Delta Source
Anchor Timeframe - Higher TF for the CVD narrative.
Custom Lower TF and Lower Timeframe - Force the sampling TF if desired.
Pivot Logic
Pivot Left and Right - Bars to each side for swing confirmation.
Delta Tolerance - Small allowance to avoid near-miss false positives.
CVD Profile
Show CVD Profile - Toggle profile rendering.
Split Buy and Sell CVD - Two-sided profile for clearer side attribution.
Show Heatmap - Project intensity panels behind price.
Show POC and POC Color - Mark the dominant CVD node.
Profile Granularity - Number of bins across the visible price range.
Profile Offset and Profile Width - Position and scale the profile.
Profile Position - Right, Left, or Current bar alignment.
Visuals
Bullish Div Color and Bearish Div Color - Colors for divergence artifacts.
Show Divergence Lines and Labels - Visualize pivots and annotations.
Plot CVD - Column plot of total CVD.
Show Statistics and Position - Toggle and place the summary table.
Reading the display
CVD columns
Rising CVD confirms buyers are in control. Falling CVD confirms sellers.
Flat or choppy CVD during wide price moves hints at passive or exhausted participation.
CVD profile wings
Thick right wing near a price zone implies heavy buy initiative accumulated there.
Thick left wing implies heavy sell initiative.
POC marks the strongest initiative node. Expect reactions on first touch and rotations around this level when the tape is balanced.
Heatmap
Brighter blocks indicate stronger historical net initiative at that price.
Stacked bright bands form CVD high volume nodes. These often behave like magnets or shelves for future trade.
Divergences
Bearish - Price prints a higher high while CVD fails to do so. Effort is not producing result. Potential fade or pause.
Bullish - Price prints a lower low while CVD fails to do so. Capitulation lacks initiative. Potential bounce or reversal.
Stats panel
Total CVD - Net initiative over the window.
Buy and Sell volume with percentages - Side composition.
Delta Ratio - Buy over Sell. Values above 1 favor buyers, below 1 favor sellers.
POC Price - Current control node for plan and risk.
Workflows
Trend following
Choose an Anchor Timeframe that matches your holding period.
Trade in the direction of CVD slope while price holds above a bullish POC or below a bearish POC.
Use pullbacks to CVD nodes on your profile as entry locations.
Trend weakens when price makes new highs but CVD stalls, or new lows while CVD recovers.
Mean reversion
Look for divergences at or near prior CVD nodes, especially the POC.
Fade tests into thick wings when the side that dominated there now fails to push CVD further.
Target rotations back toward the POC or the opposite wing edge.
Liquidity and execution map
Treat strong wings and heatmap bands as probable passive interest zones.
Expect pauses, partial fills, or flips at these shelves.
Stops make sense beyond the far edge of the active wing supporting your idea.
Alerts included
CVD Bearish Divergence and CVD Bullish Divergence.
Price Cross Above POC and Price Cross Below POC.
Extreme Buy Imbalance and Extreme Sell Imbalance from Delta Ratio.
CVD Turn Bullish and CVD Turn Bearish when net CVD crosses zero.
Price Near POC proximity alert.
Best practices
Use a higher Anchor Timeframe to stabilize the CVD story and a sensible Profile Granularity so wings are readable without clutter.
Keep Split mode on when you want to separate initiative attribution. Turn it off when you prefer a single net profile.
Tune Pivot Left and Right by instrument to avoid overfitting. Larger values find swing divergences. Smaller values find micro fades.
If volume is thin or synthetic for the symbol, CVD will be less reliable. The script will warn if volume is zero.
Trading applications
Context - Confirm or question breakouts with CVD slope.
Location - Build entries at CVD nodes and POC.
Timing - Use divergence and POC crosses for triggers.
Risk - Place stops beyond the opposite wing or outside the POC shelf.
Important notes and limits
This is a price and volume based study. It does not access off-book or venue-level order flow.
CVD profiles are built from the data available on your chart and the chosen lower timeframe sampling.
Like all volume tools, readings can distort during roll periods, holidays, or feed anomalies. Validate on your instrument.
Technical notes
Delta is aggregated from a lower timeframe into an Anchor Timeframe narrative.
Profile bins update in real time. Splitting by side scales each wing independently so both are readable in the same panel.
Divergences are confirmed using standard pivot definitions with user-set tolerances.
All profile drawing uses fixed X offsets so panels and POC do not swim when you scroll.
Quick start
Anchor Timeframe = Daily for intraday context.
Split Buy and Sell CVD = On.
Profile Granularity = 100 to 200, Profile Position = Right, Width to taste.
Pivot Left and Right around 8 to 12 to start, then adapt.
Turn on Heatmap for a fast map of interest bands.
Bottom line
CVD tells you who is doing the lifting. The profile shows where they did it. Divergences tell you when effort stops paying. Put them together and you get a clear read on control, location, and timing for both trend and mean reversion.
Volume Delta Volume Signals by Claudio [hapharmonic]// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at mozilla.org
// © hapharmonic
//@version=6
FV = format.volume
FP = format.percent
indicator('Volume Delta Volume Signals by Claudio ', format = FV, max_bars_back = 4999, max_labels_count = 500)
//------------------------------------------
// Settings |
//------------------------------------------
bool usecandle = input.bool(true, title = 'Volume on Candles',display=display.none)
color C_Up = input.color(#12cef8, title = 'Volume Buy', inline = ' ', group = 'Style')
color C_Down = input.color(#fe3f00, title = 'Volume Sell', inline = ' ', group = 'Style')
// ✅ Nueva entrada para colores de señales
color buySignalColor = input.color(color.new(color.green, 0), "Buy Signal Color", group = "Signals")
color sellSignalColor = input.color(color.new(color.red, 0), "Sell Signal Color", group = "Signals")
string P_ = input.string(position.top_right,"Position",options = ,
group = "Style",display=display.none)
string sL = input.string(size.small , 'Size Label', options = , group = 'Style',display=display.none)
string sT = input.string(size.normal, 'Size Table', options = , group = 'Style',display=display.none)
bool Label = input.bool(false, inline = 'l')
History = input.bool(true, inline = 'l')
// Inputs for EMA lengths and volume confirmation
bool MAV = input.bool(true, title = 'EMA', group = 'EMA')
string volumeOption = input.string('Use Volume Confirmation', title = 'Volume Option', options = , group = 'EMA',display=display.none)
bool useVolumeConfirmation = volumeOption == 'none' ? false : true
int emaFastLength = input(12, title = 'Fast EMA Length', group = 'EMA',display=display.none)
int emaSlowLength = input(26, title = 'Slow EMA Length', group = 'EMA',display=display.none)
int volumeConfirmationLength = input(6, title = 'Volume Confirmation Length', group = 'EMA',display=display.none)
string alert_freq = input.string(alert.freq_once_per_bar_close, title="Alert Frequency",
options= ,group = "EMA",
tooltip="If you choose once_per_bar, you will receive immediate notifications (but this may cause interference or indicator repainting).
\n However, if you choose once_per_bar_close, it will wait for the candle to confirm the signal before notifying.",display=display.none)
//------------------------------------------
// UDT_identifier |
//------------------------------------------
type OHLCV
float O = open
float H = high
float L = low
float C = close
float V = volume
type VolumeData
float buyVol
float sellVol
float pcBuy
float pcSell
bool isBuyGreater
float higherVol
float lowerVol
color higherCol
color lowerCol
//------------------------------------------
// Calculate volumes and percentages |
//------------------------------------------
calcVolumes(OHLCV ohlcv) =>
var VolumeData data = VolumeData.new()
data.buyVol := ohlcv.V * (ohlcv.C - ohlcv.L) / (ohlcv.H - ohlcv.L)
data.sellVol := ohlcv.V - data.buyVol
data.pcBuy := data.buyVol / ohlcv.V * 100
data.pcSell := 100 - data.pcBuy
data.isBuyGreater := data.buyVol > data.sellVol
data.higherVol := data.isBuyGreater ? data.buyVol : data.sellVol
data.lowerVol := data.isBuyGreater ? data.sellVol : data.buyVol
data.higherCol := data.isBuyGreater ? C_Up : C_Down
data.lowerCol := data.isBuyGreater ? C_Down : C_Up
data
//------------------------------------------
// Get volume data |
//------------------------------------------
ohlcv = OHLCV.new()
volData = calcVolumes(ohlcv)
// Plot volumes and create labels
plot(ohlcv.V, color=color.new(volData.higherCol, 90), style=plot.style_columns, title='Total',display = display.all - display.status_line)
plot(ohlcv.V, color=volData.higherCol, style=plot.style_stepline_diamond, title='Total2', linewidth = 2,display = display.pane)
plot(volData.higherVol, color=volData.higherCol, style=plot.style_columns, title='Higher Volume', display = display.all - display.status_line)
plot(volData.lowerVol , color=volData.lowerCol , style=plot.style_columns, title='Lower Volume',display = display.all - display.status_line)
S(D,F)=>str.tostring(D,F)
volStr = S(math.sign(ta.change(ohlcv.C)) * ohlcv.V, FV)
buyVolStr = S(volData.buyVol , FV )
sellVolStr = S(volData.sellVol , FV )
// ✅ MODIFICACIÓN: Porcentaje sin decimales
buyPercentStr = str.tostring(math.round(volData.pcBuy)) + " %"
sellPercentStr = str.tostring(math.round(volData.pcSell)) + " %"
totalbuyPercentC_ = volData.buyVol / (volData.buyVol + volData.sellVol) * 100
sup = not na(ohlcv.V)
if sup
TC = text.align_center
CW = color.white
var table tb = table.new(P_, 6, 6, bgcolor = na, frame_width = 2, frame_color = chart.fg_color, border_width = 1, border_color = CW)
tb.cell(0, 0, text = 'Volume Candles', text_color = #FFBF00, bgcolor = #0E2841, text_halign = TC, text_valign = TC, text_size = sT)
tb.merge_cells(0, 0, 5, 0)
tb.cell(0, 1, text = 'Current Volume', text_color = CW, bgcolor = #0B3040, text_halign = TC, text_valign = TC, text_size = sT)
tb.merge_cells(0, 1, 1, 1)
tb.cell(0, 2, text = 'Buy', text_color = #000000, bgcolor = #92D050, text_halign = TC, text_valign = TC, text_size = sT)
tb.cell(1, 2, text = 'Sell', text_color = #000000, bgcolor = #FF0000, text_halign = TC, text_valign = TC, text_size = sT)
tb.cell(0, 3, text = buyVolStr, text_color = CW, bgcolor = #074F69, text_halign = TC, text_valign = TC, text_size = sT)
tb.cell(1, 3, text = sellVolStr, text_color = CW, bgcolor = #074F69, text_halign = TC, text_valign = TC, text_size = sT)
tb.cell(0, 5, text = 'Net: ' + volStr, text_color = CW, bgcolor = #074F69, text_halign = TC, text_valign = TC, text_size = sT)
tb.merge_cells(0, 5, 1, 5)
tb.cell(0, 4, text = buyPercentStr, text_color = CW, bgcolor = #074F69, text_halign = TC, text_valign = TC, text_size = sT)
tb.cell(1, 4, text = sellPercentStr, text_color = CW, bgcolor = #074F69, text_halign = TC, text_valign = TC, text_size = sT)
cellCount = 20
filledCells = 0
for r = 5 to 1 by 1
for c = 2 to 5 by 1
if filledCells < cellCount * (totalbuyPercentC_ / 100)
tb.cell(c, r, text = '', bgcolor = C_Up)
else
tb.cell(c, r, text = '', bgcolor = C_Down)
filledCells := filledCells + 1
filledCells
if Label
sp = ' '
l = label.new(bar_index, ohlcv.V,
text=str.format('Net: {0}\nBuy: {1} ({2})\nSell: {3} ({4})\n{5}/\\\n {5}l\n {5}l',
volStr, buyVolStr, buyPercentStr, sellVolStr, sellPercentStr, sp),
style=label.style_none, textcolor=volData.higherCol, size=sL, textalign=text.align_left)
if not History
(l ).delete()
//------------------------------------------
// Draw volume levels on the candlesticks |
//------------------------------------------
float base = na,float value = na
bool uc = usecandle and sup
if volData.isBuyGreater
base := math.min(ohlcv.O, ohlcv.C)
value := base + math.abs(ohlcv.O - ohlcv.C) * (volData.pcBuy / 100)
else
base := math.max(ohlcv.O, ohlcv.C)
value := base - math.abs(ohlcv.O - ohlcv.C) * (volData.pcSell / 100)
barcolor(sup ? color.new(na, na) : ohlcv.C < ohlcv.O ? color.red : color.green,display = usecandle? display.all:display.none)
UseC = uc ? volData.higherCol:color.new(na, na)
plotcandle(uc?base:na, uc?base:na, uc?value:na, uc?value:na,
title='Body', color=UseC, bordercolor=na, wickcolor=UseC,
display = usecandle ? display.all - display.status_line : display.none, force_overlay=true,editable=false)
plotcandle(uc?ohlcv.O:na, uc?ohlcv.H:na, uc?ohlcv.L:na, uc?ohlcv.C:na,
title='Fill', color=color.new(UseC,80), bordercolor=UseC, wickcolor=UseC,
display = usecandle ? display.all - display.status_line : display.none, force_overlay=true,editable=false)
//------------------------------------------------------------
// Plot the EMA and filter out the noise with volume control. |
//------------------------------------------------------------
float emaFast = ta.ema(ohlcv.C, emaFastLength)
float emaSlow = ta.ema(ohlcv.C, emaSlowLength)
bool signal = emaFast > emaSlow
color c_signal = signal ? C_Up : C_Down
float volumeMA = ta.sma(ohlcv.V, volumeConfirmationLength)
bool crossover = ta.crossover(emaFast, emaSlow)
bool crossunder = ta.crossunder(emaFast, emaSlow)
isVolumeConfirmed(source, length, ma) =>
math.sum(source > ma ? source : 0, length) >= math.sum(source < ma ? source : 0, length)
bool ISV = isVolumeConfirmed(ohlcv.V, volumeConfirmationLength, volumeMA)
bool crossoverConfirmed = crossover and (not useVolumeConfirmation or ISV)
bool crossunderConfirmed = crossunder and (not useVolumeConfirmation or ISV)
PF = MAV ? emaFast : na
PS = MAV ? emaSlow : na
p1 = plot(PF, color = c_signal, editable = false, force_overlay = true, display = display.pane)
plot(PF, color = color.new(c_signal, 80), linewidth = 10, editable = false, force_overlay = true, display = display.pane)
plot(PF, color = color.new(c_signal, 90), linewidth = 20, editable = false, force_overlay = true, display = display.pane)
plot(PF, color = color.new(c_signal, 95), linewidth = 30, editable = false, force_overlay = true, display = display.pane)
plot(PF, color = color.new(c_signal, 98), linewidth = 45, editable = false, force_overlay = true, display = display.pane)
p2 = plot(PS, color = c_signal, editable = false, force_overlay = true, display = display.pane)
plot(PS, color = color.new(c_signal, 80), linewidth = 10, editable = false, force_overlay = true, display = display.pane)
plot(PS, color = color.new(c_signal, 90), linewidth = 20, editable = false, force_overlay = true, display = display.pane)
plot(PS, color = color.new(c_signal, 95), linewidth = 30, editable = false, force_overlay = true, display = display.pane)
plot(PS, color = color.new(c_signal, 98), linewidth = 45, editable = false, force_overlay = true, display = display.pane)
fill(p1, p2, top_value=crossover ? emaFast : emaSlow,
bottom_value =crossover ? emaSlow : emaFast,
top_color =color.new(c_signal, 80),
bottom_color =color.new(c_signal, 95)
)
// ✅ Usar colores configurables para señales
plotshape(crossoverConfirmed and MAV, style=shape.triangleup , location=location.belowbar, color=buySignalColor , size=size.small, force_overlay=true,display =display.pane)
plotshape(crossunderConfirmed and MAV, style=shape.triangledown, location=location.abovebar, color=sellSignalColor, size=size.small, force_overlay=true,display =display.pane)
string msg = '---------\n'+"Buy volume ="+buyVolStr+"\nBuy Percent = "+buyPercentStr+"\nSell volume = "+sellVolStr+"\nSell Percent = "+sellPercentStr+"\nNet = "+volStr+'\n---------'
if crossoverConfirmed
alert("Price (" + str.tostring(close) + ") Crossed over MA\n" + msg, alert_freq)
if crossunderConfirmed
alert("Price (" + str.tostring(close) + ") Crossed under MA\n" + msg, alert_freq)
Heikin Ashi VolumeHeikin Ashi candles decrease market noise so that broader trends can be more easily visualized. In a typical chart utilizing Heikin Ashi candles, volume bars are colored in such a way that they also allow for the visualization of trends during a bullish/bearish move.
The Heikin Ashi Volume indicator allows the trader to continue to use the same volume bar coloring technique to visualize trends without having to utilize the Heikin Ashi candles, since a Heikin Ashi candle’s OHLC values are not true prices but instead based on calculations in order to provide the ‘denoising’ effect they are known for.
In addition to providing the Heikin Ashi Volume coloring effects, the Heikin Ashi Volume indicator also allows the user to set a volume threshold level where the bar colors will be darker unless volume is beyond that threshold, helping traders quickly determine if there is enough participation in the market at that time to justify taking risk in a trade when the market isn’t very active. The user has the option to show or hide the threshold line, change the colors of the bullish/bearish colors (for both above and below threshold volumes) and the option for the indicator to gradually brighten the bar colors are they approach the threshold instead of having a clear line of demarcation showing volume above or below the set threshold.
CVD Divergence & Volume ProfileThis Pine Script indicator, named "CVD Divergence & Volume Profile," is designed to identify potential trading opportunities by combining Cumulative Volume Delta (CVD) divergence with Volume Profile levels and an optional Simple Moving Average (SMA) trend filter. It plots signals directly on the price chart.
Here's a breakdown of what each component does and how to potentially trade with it:
1. Cumulative Volume Delta (CVD) Divergence
What it does: CVD measures the cumulative difference between buying and selling volume. A rising CVD indicates more buying pressure, while a falling CVD indicates more selling pressure. Divergence occurs when the price action contradicts the CVD's direction, suggesting a potential shift in momentum or trend reversal.
Bearish Divergence: The price makes a higher high, but the CVD makes a lower high (or fails to make a new high). This suggests that despite the price increasing, the underlying buying pressure is weakening.
Bullish Divergence: The price makes a lower low, but the CVD makes a higher low (or fails to make a new low). This suggests that despite the price decreasing, the underlying selling pressure is weakening.
Visualization:
Red triangle pointing down on the chart indicates a Bearish Divergence signal.
Green triangle pointing up on the chart indicates a Bullish Divergence signal.
2. Volume Profile Levels (VAH, VAL, POC)
What it does: The indicator calculates simplified Volume Profile levels over a user-defined vp_range (number of candles). These levels represent areas where significant trading activity has occurred:
VAH (Value Area High): The upper boundary of the "Value Area," where 70% of the volume traded.
VAL (Value Area Low): The lower boundary of the "Value Area," where 70% of the volume traded.
POC (Point of Control): The price level within the vp_range where the most volume was traded.
Significance: These levels often act as significant support and resistance zones.
Visualization:
Orange lines for VAH and VAL.
Yellow line for POC.
Zone Proximity (zone_thresh): The indicator only generates divergence signals if the current close price is within a specified percentage zone_thresh of either VAH, VAL, or POC. This filters signals to areas of high liquidity and potential turning points.
3. Trend Filter (SMA)
What it does: This is an optional filter (use_trend_filter) that uses a Simple Moving Average (sma_period, default 200).
Significance: It helps ensure that divergence signals are traded in alignment with the broader market trend, potentially increasing their reliability.
For long signals (bullish divergence), the price (close) must be above the SMA (indicating an uptrend).
For short signals (bearish divergence), the price (close) must be below the SMA (indicating a downtrend).
Visualization: A blue line on the chart representing the SMA.
How to Trade with It (Potential Strategies)
The indicator aims to provide high-probability entry points by combining multiple confirming factors. Here's how you might interpret and trade the signals:
Identify Divergence: Look for the triangle signals on your chart (red for bearish, green for bullish).
Confirm Proximity to Volume Profile Levels: The signal itself confirms that the price is near a significant Volume Profile level (VAH, VAL, or POC). These are areas where price often reacts.
Bullish Signal (Green Triangle): This suggests buying momentum is returning after a price decline, especially when the price is near VAL or POC, which might act as support.
Bearish Signal (Red Triangle): This suggests selling momentum is increasing after a price rally, especially when the price is near VAH or POC, which might act as resistance.
Check Trend Alignment (SMA Filter):
For a long trade: You would ideally want to see a green triangle (bullish divergence) while the price is above the blue SMA line. This indicates a bullish divergence confirming a potential bounce within an existing uptrend.
For a short trade: You would ideally want to see a red triangle (bearish divergence) while the price is below the blue SMA line. This indicates a bearish divergence confirming a potential rejection within an existing downtrend.
Entry and Exit Considerations:
Entry: Consider entering a trade on the candle where the signal appears, or on the subsequent candle for confirmation.
Stop Loss: For a long trade, a logical stop-loss could be placed below the lowest point of the divergence, or below the VAL/POC if the signal occurred near it. For a short trade, above the highest point of the divergence or VAH/POC.
Take Profit: Targets could be set at the opposite Volume Profile level, previous swing highs/lows, or using a fixed risk-reward ratio.
Example Trading Scenario:
Long Trade: You see a green triangle (bullish divergence) printed on the chart. You notice the price is currently at the VAL (orange line). You check the blue SMA line and confirm that the price is above it (uptrend). This confluence of factors (bullish divergence, support at VAL, and uptrend) provides a strong potential long entry signal. You might enter, place your stop loss just below VAL, and target VAH or the next resistance level.
Short Trade: You see a red triangle (bearish divergence). The price is at the VAH (orange line). The price is also below the blue SMA line (downtrend). This suggests a potential short entry. You might enter, place your stop loss just above VAH, and target VAL or the next support level.
Ragi's 24h volumeThis script is a TradingView Pine Script indicator that displays the 24-hour trading volume for a given asset. It provides both the native volume of the asset and, if the asset is not already listed on Binance, also displays the 24-hour volume from Binance (if applicable). Here's a breakdown of the key components:
Volume Calculation:
It sums the volume data over different time frames: 1-minute, 5-minute (for daily charts), or 60-minute intervals.
The volume is calculated based on the asset's volume type (either "quote" volume or a calculated value of close * volume).
For crypto assets, if the volume data is unavailable, it raises an error.
Binance Volume:
If the asset is not from Binance, the script fetches 24-hour volume data from Binance for that symbol, ensuring it is using the correct currency rate.
Display:
The indicator displays a table with the 24-hour volume in the chosen position on the chart (top, middle, or bottom).
The table displays the current exchange's volume, and if applicable, the Binance volume.
The volume is color-coded based on predefined thresholds:
Attention: Displays a warning color for volumes exceeding the attention level.
Warning: Shows an alert color for volumes above the warning threshold.
Normal: Displays in standard color when the volume is lower than the warning level.
The text and background color are customizable, and users can adjust the text size and position of the table.
User Inputs:
The script allows customization of table text size, position, background color, and volume thresholds for attention and warning.
In summary, this indicator is designed to track and display 24-hour volume on a chart, with additional volume information from Binance if necessary, and provides visual cues based on volume levels to help traders quickly assess trading activity.
(Optimized) Volume Based Colored Bars Volume Based Colored Bars (VCB)
This indicator analyzes the relationship between price action and volume to provide visual cues for traders. It colors the price bars based on whether the bar's volume is high, medium, or low relative to the moving average of volume. Additionally, it distinguishes between bullish (price closed higher than it opened) and bearish (price closed lower than it opened) bars, offering a quick and intuitive way to assess market sentiment and activity.
Key Features:
Volume Classification:
High Volume: Volume is greater than 1.5 times the moving average.
Medium Volume: Volume is between 0.5 and 1.5 times the moving average.
Low Volume: Volume is less than 0.5 times the moving average.
Price Action Analysis:
Bullish Bars: Bars where the closing price is higher than the opening price.
Bearish Bars: Bars where the closing price is lower than the opening price.
Bar Colors:
Bearish High Volume: Dark red.
Bearish Medium Volume: Red.
Bearish Low Volume: Orange.
Bullish High Volume: Dark green.
Bullish Medium Volume: Lime green.
Bullish Low Volume: Aquamarine.
This indicator helps traders quickly identify when price movements are supported by significant volume, offering potential insights into market strength or weakness. Ideal for both novice and experienced traders looking for an edge in their analysis.
Cumulative Volume Delta Histogram [TradingFinder] CVD Histogram🔵 Introduction
To fully understand Cumulative Volume Delta (CVD), it’s important to start by explaining Volume Delta. In trading, "Delta" refers to the difference between two values or the rate of change between two data points. Volume Delta represents the difference between buying and selling pressure for each candlestick on a chart, and this difference can vary across different time frames.
A positive delta indicates that buying volume exceeds selling volume, while a negative delta shows that selling pressure is stronger. When buying and selling volumes are equal, the volume delta equals zero.
The Cumulative Volume Delta (CVD) indicator tracks the cumulative difference between buying and selling volumes over time, helping traders analyze market dynamics and identify reliable trading signals through CVD divergences.
🔵 How to Use
Cumulative Volume Delta (CVD) is an essential technical analysis tool that aggregates delta values for each candlestick, creating a comprehensive indicator. This helps traders evaluate overall buying and selling pressure over market swings.
Unlike standard Volume Delta, which compares the delta on a candle-by-candle basis, CVD provides a broader view of buying and selling pressure during market trends. A downward-trending CVD suggests that selling pressure is dominant, which is typically a bearish signal.
Conversely, an upward-trending CVD indicates bullish sentiment, suggesting buyers are in control. This analysis becomes even more valuable when compared with price action and market structure, helping traders predict the direction of asset prices.
🟣 How to Use CVD in Trend Analysis and Market Reversals
Understanding how to detect trend changes using Cumulative Volume Delta is crucial for traders. Typically, CVD aligns with market structure, moving in the same direction as price trends.
However, divergences between CVD and price movements or signs of volume exhaustion can be powerful indicators of potential market reversals. Recognizing these patterns helps traders make more informed decisions and improve their trading strategies.
🟣 How to Spot Trend Exhaustion with CVD
CVD is particularly effective for identifying trend exhaustion in the market. For instance, if an asset's price hits a new low, but CVD doesn’t follow, this might indicate a lack of seller interest, signaling potential exhaustion and a possible reversal.
Similarly, if an asset reaches a new high but CVD fails to follow, it can suggest that buyers lack the strength to push the market higher, indicating a possible reversal to the downside.
🟣 How to Use CVD Divergence in Price Trend Analysis
Another effective use of CVD is identifying divergences in price trends. For example, if CVD breaks a previous high or low while the price remains stable, this divergence may indicate that buying or selling pressure is being absorbed.
For instance, if CVD rises sharply without a corresponding increase in asset prices, it may suggest that sellers are absorbing the buying pressure, which could lead to a strong sell-off. Conversely, if prices remain stable while CVD declines, it may indicate that buyers are absorbing selling pressure, likely leading to a price increase once the selling subsides.
🟣 CVD Display, Candlestick vs. Histogram – What’s the Difference?
CVD can be displayed in two different formats :
Candlestick Display : In this format, the data is shown as green and red candlesticks, each representing the difference in buying and selling pressure over a given time period. This display allows traders to visually analyze market pressure along with price changes.
Histogram Display : Here, the data is represented as vertical green and red bars, where each bar’s height corresponds to the volume delta. This format offers a clearer view of the strengths and weaknesses in market buying and selling pressure.
🟣 What are the Key Settings for CVD?
Cumulative Mode : CVD offers three modes: "Total," "Periodic," and "EMA." In "Total" mode, CVD accumulates the delta from the beginning to the end of the session. In "Periodic" mode, it accumulates volume periodically, resetting at specific intervals. In "EMA" mode, the CVD is smoothed using an Exponential Moving Average (EMA) to filter out short-term fluctuations.
Period : The "Period" setting allows you to define the number of bars or intervals for "Periodic" and "EMA" modes. A shorter period captures more short-term movements, while a longer period smooths out the fluctuations and provides a broader view of market trends.
Market Ultra Data : This feature integrates data from 26 major brokers into the volume calculations, providing more reliable volume data. It’s important to specify the type of market you are analyzing (Forex, crypto, etc.) as different brokers contribute to different markets. Enabling this setting ensures the highest accuracy in volume analysis.
🔵 Conclusion
Cumulative Volume Delta (CVD) is a powerful technical indicator that helps traders assess buying and selling pressure by aggregating the delta values of each candlestick. Whether displayed as candlesticks or histograms, CVD provides insights into market trends, helping traders make informed decisions.
CVD is particularly useful in identifying divergences and exhaustion in market trends. For example, if CVD does not align with price movements, it can signal a potential trend reversal. Traders use this tool to fine-tune their entry and exit points and better predict future market movements.
In summary, CVD is a versatile tool for analyzing volume data and understanding the balance of buying and selling pressure in the market, making it an invaluable asset in any trader’s toolkit
Cumulative Delta [TradingFinder] Volume + Periodic + EMA🔵 Introduction
To fully grasp the concept of Cumulative Volume Delta (CVD), it's essential first to understand Volume Delta. In trading and technical analysis, the term "Delta" typically refers to the difference between two values or the rate of change between two data points.
Volume Delta represents the difference between buying and selling pressure, calculated for each candlestick on a chart. This difference can vary across different timeframes.
A positive delta indicates that buying volume exceeds selling volume, while a negative delta shows that selling volume is greater. When buying and selling volumes are equal, the volume delta equals zero.
🟣 What is Cumulative Volume Delta (CVD)?
Cumulative Volume Delta (CVD) is a powerful tool in technical analysis that aggregates delta values for each candlestick, creating a comprehensive indicator that helps traders assess market trends.
Unlike the standard Volume Delta, which compares delta on a candle-by-candle basis, CVD provides insight into the overall buying and selling pressure during key market swings. A downward-trending CVD suggests that selling pressure is dominating, which is typically a bearish signal.
Conversely, an upward-trending CVD indicates bullish sentiment. This analysis becomes even more significant when comparing CVD with price action and market structure, helping traders to predict asset price directions.
By evaluating market highs and lows, one can determine the market trend. A consistent rise in these points indicates an uptrend, while a consistent fall suggests a downtrend.
🔵 How to Use
Understanding how to detect trend changes using Cumulative Volume Delta is crucial for traders. Typically, CVD aligns with market structure, moving in the same direction as price trends.
However, divergences between CVD and price trends or signs of exhaustion in volume can be powerful indicators of potential market reversals. Recognizing these patterns can help traders make informed decisions and improve their trading strategies.
🟣 Identifying Trend Exhaustion with Cumulative Volume Delta (CVD)
The Cumulative Volume Delta (CVD) indicator is especially effective in identifying weakening trends in the market. For instance, if gold's price hits a new low, but CVD does not follow suit, this may indicate a lack of seller interest despite the new low, signaling potential seller exhaustion.
Most traders interpret this as a possible reversal from a bearish to a bullish trend. Similarly, if gold reaches a new high but CVD fails to do the same, it can suggest that buyers lack the strength to push the market higher, indicating a possible trend reversal.
🟣 Utilizing Cumulative Volume Delta (CVD) Divergence in Price Trend Analysis
Another effective use of CVD is identifying divergences in price trends. For example, if CVD breaks a previous high or low while the price remains stable, this divergence often indicates that buying or selling pressure is being absorbed.
For instance, if CVD rises sharply without a corresponding increase in gold prices, it may suggest that sellers are absorbing the buying pressure, potentially leading to a strong sell-off. Conversely, if gold prices remain stable while CVD declines, it could indicate that buyers are absorbing selling pressure, likely leading to a price increase once selling subsides.
🔵 Setting
Cumulative Mode : It has three modes "Total", "Periodic" and "EMA". In "Total" mode, it collects the volume from the beginning to the end. In "Periodic" mode, it accumulates the volume periodically and in "EMA" mode, it calculates the moving average of the volume.
Period : You can set the period of " Periodic " and " EMA " modes.
Market Ultra Data : If you turn on this feature, 26 large brokers will be included in the calculation of the trading volume.
The advantage of this capability is to have more reliable volume data. You should be careful to specify the market you are in, FOREX brokers and Crypto brokers are different.
🔵 Conclusion
Cumulative Volume Delta (CVD) is a powerful analytical tool in financial markets that helps analysts and traders assess buying and selling pressure by aggregating and combining the volume delta for each candlestick.
CVD can indicate the strength or weakness of a market trend. When CVD moves upward, it signals that buying pressure is dominant and is considered a bullish signal; conversely, a downward movement in CVD indicates that selling pressure is stronger and is viewed as a bearish signal.
This indicator is particularly effective in identifying divergences and exhaustion in market trends. For example, if CVD does not align with price movements, it may suggest a potential trend reversal.
Traders use this information to make more informed trading decisions, especially when identifying entry and exit points in the market.
Overall, CVD is a tool that enables analysts to better understand market fluctuations and more accurately predict future market trends.
Volume Based RSI with ADXThe RSI indicator is a powerful tool that utilizes both volume and time to determine market trends. When there is a low volume of trades in a short period of time, but the trading activity is high, it is considered bullish or bearish. In the case of a bullish trend, the RSI indicator will display a green color, while a bearish trend will be represented by a red color. If there is no trading activity, the indicator will display a gray color. Additionally, if the ADX level meets the threshold level, the indicator will display a blue color. However, if the ADX level does not meet the threshold level, the indicator will revert back to displaying a gray color.
Volume Profile (Maps) [LuxAlgo]The Pine Script® developers have unleashed "maps"!
Volume Profile (Maps) displays volume, associated with price, above and below the latest price, by using maps
The largest and second-largest volume is highlighted.
🔶 USAGE
The proposed script can highlight more frequent closing prices/prices with the highest volume, potentially highlighting more liquid areas. The prices with the highest associated volume (in red and orange in the indicator) can eventually be used as support/resistance levels.
Voids within the volume profile can highlight large price displacements (volatile variations).
🔶 CONCEPTS
🔹 Maps
A map object is a collection that consists of key - value pairs
Each key is unique and can only appear once. When adding a new value with a key that the map already contains, that value replaces the old value associated with the key .
You can change the value of a particular key though, for example adding volume (value) at the same price (key), the latter technique is used in this script.
Volume is added to the map, associated with a particular price (default close, can be set at high, low, open,...)
When the map already contains the same price (key), the value (volume) is added to the existing volume at the associated price.
A map can contain maximum 50K values, which is more than enough to hold 20K bars (Basic 5K - Premium plan 20K), so the whole history can be put into a map.
🔹 Visible line/box limit
We can only display maximum 500 line.new() though.
The code locates the current (last) close, and displays volume values around this price, using lines, for example 250 lines above and 250 lines below current price.
If one side contains fewer values, the other side can show more lines, taking the maximum out of the 500 visible line limitation.
Example (max. 500 lines visible)
• 100 values below close
• 2000 values above close
-> 100 values will be displayed below close
-> 400 remaining -> 400 values will be displayed above close
Pushing the limits even further, when ' Amount of bars ' is set higher than 500, boxes - box.new() - will be used as well.
These have a limit of 500 as well, bringing the total limit to 1000.
Note that there are visual differences when boxes overlap against lines.
If this is confusing, please keep ' Amount of bars ' at max. 500 (then only lines will be used).
🔹 Rounding function
This publication contains 2 round functions, which can be used to widen the Volume Profile
Round
• "Round" set at zero -> nothing changes to the source number
• "Round" set below zero -> x digit(s) after the decimal point, starting from the right side, and rounded.
• "Round" set above zero -> x digit(s) before the decimal point, starting from the right side, and rounded.
Example: 123456.789
0->123456.789
1->123456.79
2->123456.8
3->123457
-1->123460
-2->123500
Step
Another option is custom steps.
After setting "Round" to "Step", choose the desired steps in price,
Examples
• 2 -> 1234.00, 1236.00, 1238.00, 1240.00
• 5 -> 1230.00, 1235.00, 1240.00, 1245.00
• 100 -> 1200.00, 1300.00, 1400.00, 1500.00
• 0.05 -> 1234.00, 1234.05, 1234.10, 1234.15
•••
🔶 FEATURES
🔹 Adjust position & width
🔹 Table
The table shows the details:
• Size originalMap : amount of elements in original map
• # higher: amount of elements, higher than last "close" (source)
• index "close" : index of last "close" (source), or # element, lower than source
• Size newMap : amount of elements in new map (used for display lines)
• # higher : amount of elements in newMap, higher than last "close" (source)
• # lower : amount of elements in newMap, lower than last "close" (source)
🔹 Volume * currency
Let's take as example BTCUSD, relative to USD, 10 volume at a price of 100 BTCUSD will be very different than 10 volume at a price of 30000 (1K vs. 300K)
If you want volume to be associated with USD, enable Volume * currency . Volume will then be multiplied by the price:
• 10 volume, 1 BTC = 100 -> 1000
• 10 volume, 1 BTC = 30K -> 300K
Disabled
Enabled
🔶 DETAILS
🔹 Put
When the map doesn't contain a price, it will be added, using map.put(id, key, value)
In our code:
map.put(originalMap, price, volume)
or
originalMap.put(price, volume)
A key (price) is now associated with a value (volume) -> key : value
Since all keys are unique, we don't have to know its position to extract the value, we just need to know the key -> map.get(id, key)
We use map.get() when a certain key already exists in the map, and we want to add volume with that value.
if originalMap.contains(price)
originalMap.put(price, originalMap.get(price) + volume)
-> At the last bar, all prices (source) are now associated with volume.
🔹 Copy & sort
Next, every key of the map is copied and sorted (array of keys), after which the index (idx) is retrieved of last (current) price.
copyK = originalMap.keys().copy()
copyK.sort()
idx = copyK.binary_search_leftmost(src)
Then left and right side of idx is investigated to show a maximum amount of lines at both sides of last price.
🔹 New map & display
The keys (from sorted array of copied keys) that will be displayed are put in a new map, with the associated volume values from the original map.
newMap = map.new()
🔹 Re-cap
• put in original amp (price key, volume value)
• copy & sort
• find index of last price
• fetch relevant keys left/right from that index
• put keys in new map and fetch volume associated with these keys (from original map)
Simple example (only show 5 lines)
bar 0, price = 2, volume = 23
bar 1, price = 4, volume = 3
bar 2, price = 8, volume = 21
bar 3, price = 6, volume = 7
bar 4, price = 9, volume = 13
bar 5, price = 5, volume = 85
bar 6, price = 3, volume = 13
bar 7, price = 1, volume = 4
bar 8, price = 7, volume = 9
Original map:
Copied keys array:
Sorted:
-> 5 keys around last price (7) are fetched (5, 6, 7, 8, 9)
-> keys are placed into new map + volume values from original map
Lastly, these values are displayed.
🔶 SETTINGS
Source : Set source of choice; default close , can be set as high , low , open , ...
Volume & currency : Enable to multiply volume with price (see Features )
Amount of bars : Set amount of bars which you want to include in the Volume Profile
Max lines : maximum 1000 (if you want to use only lines, and no boxes -> max. 500, see Concepts )
🔹 Round -> ' Round/Step '
Round -> see Concepts
Step -> see Concepts
🔹 Display Volume Profile
Offset: shifts the Volume Profile (max. 500 bars to the right of last bar, see Features )
Max width Volume Profile: largest volume will be x bars wide, the rest is displayed as a ratio against largest volume (see Features )
Show table : Show details (see Features )
🔶 LIMITATIONS
• Lines won't go further than first bar (coded).
• The Volume Profile can be placed maximum 500 bar to the right of last price.
• Maximum 500 lines/boxes can be displayed
Aggregated Volume Spot & Futures ⚉ OVERVIEW ⚉
The indicator presents a comprehensive approach to Aggregated Volume Data . Works on almost all CRYPTO Tickers!
The script also includes several input parameters that allow the user to control which exchanges and currencies are included in the aggregated data.
This script allows the user to choose from several data display modes, including volume, spot & perp, delta, cumulative delta, and others.
The user can also choose how volume is displayed (in assets, U.S. dollars or euros) and how it is calculated (sum, average, median, or dispersion).
WARNING Indicator is for CRYPTO ONLY.
______________________
⚉ SETTINGS ⚉
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
Mode — Choose Mode.
• Volume — This displays the Volume
• Volume (Colored) — Shows aggregated volume but applying different volume colors for different exchanges.
• Delta — This displays the difference between the number of sellers and buyers.
• Cumulative Delta — This displays the cumulative delta between sellers and buyers.
• Spot & Perp — Shows Spot and Futures volume at the same time.
• Delta (Spot - Perp) — Shows the difference between Spot and Futures Volume.
• Liquidations — Displays Potential Liquidations. (Calculated between the difference in volume between Futures and Spots)
• OBV — On Balance Volume.
• MFI — Money Flow Indicator.
• Data Type — Choose Single or Aggregated data.
• Single — Show only current Volume.
• Aggregated — Show Aggregated Volume.
Volume By — You can also select how the volume is displayed.
• COIN — Volume in Actives.
• USD — Volume in United Stated Dollar.
• EUR — Volume in European Union.
• RUB — Volume in Russian Ruble.
Calculate By — Choose how Aggregated Volume it is calculated.
• SUM — This displays the total volume from all sources.
• AVG — This displays the average price of the volume from all sources.
• MEDIAN — This displays the median volume from all sources.
• VARIANCE — This displays the variance of the volume from all sources.
* 🡅 Be Careful, Reacts to Every Mode.
Additional features
• Show MA — Show Movieng Average of Volume.
• MA Period — Period of MA.
• Lookback — Lookback period for 'Cumulative Delta' and for 'MFI'.
• Liquidation Filter — Filters out small or negative difference values.
• Show Table — Table shows the current volume of the last candle. Also in the Mode "Colored" shows the color of exchanges if they have volume.
________________
⚉ NOTES ⚉
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
I don't pretend to be the best choice for calculating CVD , Delta and Liquidations, the calculations are chosen to be optimal from what I have seen and know.
If you have any ideas what to add to my work to add more sources or make calculations cooler, suggest in DM .
Hull Volume WavesInspired by the works of David Weis, this indicator is an alternative to his classic Weis Volume Waves.
As the name implies, this indicator uses a Hull Moving Average to detect price swings, and calculates the cumulative volume for each of them, separating the up swings from the down swings.
The chosen length of the HMA determines the size of each swing, meaning lower lengths will detect microswings while higher lengths will only include the main swings.
The length of each swing also determines the color of the upward and downward waves, and you can choose 2 colors each to generate a bullish and bearish gradient.
Extreme values are highlighted in the background. The indicator will compare the current up wave to the last N up volumes, or the current down wave to the last N down volumes. The lookback length can be changed in the menu.
I hope you find it useful!
Colored Volume Bars standard deviation from meanThe colour bars:
Green: Price up - Volume > 2 x STD of last 21 bars
Blue: Price up - Volume > 1 x STD of last 21 bars
Maroon: Price down - Volume > 2 x STD of last 21 bars
Purple: Price down - Volume > 1 x STD of last 21 bars
Grey: not high volume bar
Green line: 2 bar sma
Red line: 8 period sma of the greenline
Bollinger band: 55 period sma of the 21 period sma with bands 1.618 deviation from the mean
Magic Volume - Projected [MW]Magic Volume – Projected
This lower-pane volume tool estimates the full-bar volume before the bar closes by measuring the current bar’s elapsed time and the rate of incoming volume. It then contrasts that “expected volume” against typical activity and recent momentum to spotlight potential burst conditions (breakout/acceleration), color-codes the live volume stream, and annotates when the projected surge is likely bullish or bearish based on bar structure and recent highs/lows.
Settings
Projected / Expected Volume
Moving Average: EMA length used for volume baseline comparisons. (Default: 14)
Minimum Volume: Hard floor the bar’s raw volume must exceed to qualify as notable. (Default: 10,000)
Consecutive Volume Above 14 EMA: Count required for “sustained” high-volume context. (Default: 3)
Stochastic Volume Burst
Stochastic Length: Window for the Stochastic calculation on volume. (Default: 8)
Smoothing: Smoothing applied to Stochastic volume and its signal. (Default: 3)
Stochastic Volume Breakout Threshold: Level above which Stochastic volume is considered a breakout. (Default: 20)
Volume Bar Increase Amount: Multiplier the current bar’s volume must exceed vs. prior bar to be considered a “burst.” (Default: 1.618)
Plotted Items
Expected Volume (columns): Magenta columns projecting the full-bar volume from intrabar rate. Turns lime when a high expected-volume condition aligns with bullish bar structure; turns red under analogous bearish conditions.
Actual Volume (columns): Live volume columns, color-coded by state:
• Blue = baseline;
• Orange = “burst” (volume rising fast above prior × factor and above baseline);
• Yellow = “burst at breakout” (burst + Stochastic volume breakout);
• Light Blue = Stochastic breakout only.
Volume EMA (line): Yellow EMA for baseline comparison (default 14).
Calculations
Compute elapsed time in the current bar (ms → seconds) and convert the current bar’s accumulated volume into a rate (volume per second).
Project full-bar Expected Volume = (volume so far / seconds elapsed) × bar-seconds.
Compute Volume EMA (default 14) for baseline; derive Stochastic(volume, length) and smoothed signal for momentum.
Define “Burst” conditions:
• Volume > prior volume × Volume Bar Increase Amount;
• Volume > Minimum Volume;
• Volume > Volume EMA;
• Stochastic(volume) rising and/or above threshold.
Classify “Burst at Breakout” when Burst aligns with Stochastic crossover above the Breakout Threshold.
Classify Bullish/Bearish Expected Volume: if Expected Volume is ≥ 1.618 × prior bar volume and prior volume > Volume EMA, then:
• Bullish if bar is green with a rising low;
• Bearish if bar is red with a falling high.
Color-map actual volume columns by state; overlay Expected Volume columns (magenta) and paint conditional overlays (lime/red) when directional context is detected.
How to Use
Spot the Surge Early
When Expected Volume spikes well above typical (and especially above ~1.618× the prior bar) before the bar closes, it often precedes a volatile move. Use this to prepare entries with tight, structure-based risk (e.g., just beyond the current bar’s wick) and asymmetric targets.
Confirm with Momentum
Yellow/orange volume columns indicate burst/breakout behavior in the live tape. When this aligns with a lime (bullish) or red (bearish) Expected Volume column, the probability of follow-through improves—particularly if aligned with prevailing trend or key levels.
Context Matters
Combine with your preferred S/R or structure tools (e.g., order blocks, channels, VWAP) to avoid chasing into obvious supply/demand. The projected surge can mark both continuations and sharp reversals depending on location and broader context.
Alerts
High Expected Volume – Bullish: When projected volume surges and the price action meets bullish conditions (green body with rising low).
High Expected Volume – Bearish: When projected volume surges and the price action meets bearish conditions (red body with falling high).
Other Usage Notes and Limitations
Projected volume depends on intrabar pace; abrupt pauses/flushes can change the projection quickly, especially on very small timeframes.
Minimum Volume and EMA baselines help filter thin markets; adjust upward on illiquid symbols to reduce noise.
A rising projection does not pick direction on its own—directional coloring (lime/red) requires price-action confirmation; otherwise treat magenta projections as “heads-up” only.
As with any single indicator, use within a broader plan (risk management, structure, confluence) to mitigate false positives and improve selectivity.
Inputs (Quick Reference)
Moving Average (int, default 14)
Stochastic Length (int, default 8)
Smoothing (int, default 3)
Stochastic Volume Breakout Threshold (int, default 20)
Volume Bar Increase Amount (float, default 1.618)
Minimum Volume (int, default 10,000)
Consecutive Volume Above 14 EMA (int, default 3)
Volume Profile + VAH, VAL, and POCWhat it is
A clean, on-chart volume profile that approximates your visible range using a configurable Bars Back window. It builds a horizontal histogram of volume by price, splits each price bin into Buy vs Sell volume, draws POC, and computes Value Area High/Low (VAH/VAL). A Stealth Mode toggle switches to a subtle grayscale palette for low-key charts.
Why this instead of the built-in VPVR?
Buy/Sell split per bin: See which prices were defended by buyers vs sellers, not just total volume.
Value Area from POC outward: Classic expansion method until the selected % of total volume (default 70%).
Sleek borders & Stealth Mode: Crisp bin outlines and a one-click professional colorway.
Deterministic & fast: No sessions or anchors needed—set your Bars Back and go.
How it works (under the hood)
Window selection – Pine can’t read your viewport, so we approximate it with Bars Back (user input).
Binning – The window’s price range is divided into N bins.
Volume allocation – For each bar in the window:
Distribute Across Hi–Lo (optional): Spread volume across all bins the bar overlaps, weighted by overlap; or
Single-price mode: Assign all volume to one bin using a representative price (hlc3).
Buy/Sell split (two methods):
Body Proportional (recommended): Split by relative up/down body size (|close−open|).
Up/Down Candle: 100% buy if close ≥ open, else 100% sell.
POC & VA: Point of Control is the bin with max total volume. VAH/VAL expands from POC toward the higher-volume neighbor until the selected % of total volume is included.
Reading the visuals
Horizontal bars (right side): Total volume per price bin.
Left sub-segment = Sell volume
Right sub-segment = Buy volume
POC line: Price level with peak total volume.
VAH / VAL (dashed): Upper and lower bounds of the selected Value Area.
Borders: Each bin has a clean outer outline so the profile looks tight and organized.
Stealth Mode: Grayscale palette that preserves contrast without loud colors.
Key inputs (organized for clarity)
Theme
Stealth Mode: Toggles the grayscale look.
Core
Price Bins: Vertical resolution of the profile.
Lookback (Bars): Approximates your visible range.
Style
Profile Width (bars): How far the histogram extends to the right.
Bin Border Width: Outline thickness.
Markers & Lines
Show POC, Show VAH/VAL, Value Area %, VA line width.
Advanced
Distribute Volume Across Hi–Lo: More accurate, heavier compute.
Buy/Sell Split Method: Body Proportional (realistic) or Up/Down (simple).
Tips & best practices
Start with Body Proportional + Distribute Across ON for intraday accuracy.
If the chart lags, reduce Price Bins or Bars Back, or switch off distribution.
For small windows, fewer bins often looks cleaner (e.g., 30–60).
Stealth Mode plays nicely with both dark and light chart themes.
Limitations & notes
Viewport: Pine can’t access the actual visible bars; Bars Back is a practical stand-in.
Buy/Sell split: This is an approximation from candle bodies, not true bid/ask delta.
Designed for overlay; profile renders to the right of the latest bar.
Aggressive Volume 📊 Indicator: Aggressive Volume – Simulated Buy/Sell Pressure
Aggressive Volume estimates delta volume using candle data to simulate the market’s internal buy/sell pressure. It helps visualize how aggressive buyers or sellers are moving the price without needing full order flow access.
⚙️ How It Works:
Calculates simulated delta volume based on candle direction and volume.
Bullish candles (close > open) suggest dominance by buyers.
Bearish candles (close < open) suggest dominance by sellers.
Delta is the difference between simulated buying and selling pressure.
🔍 Key Features:
Visual bars showing aggressive buyer vs seller dominance
Helps spot trend strength, momentum bursts, and potential reversals
Simple, effective, and compatible with any timeframe
Lightweight and ideal for scalping, day trading, and swing trading
💡 How to Use:
Look for strong positive delta during bullish trends for confirmation.
Watch for delta weakening or divergence as potential reversal signals.
Combine with trend indicators or price action for enhanced accuracy.
📊 Indicador: Volume Agressivo – Pressão de Compra/Venda Simulada
Volume Agressivo estima o delta de volume utilizando dados dos candles para simular a pressão interna de compra/venda do mercado. Ele ajuda a visualizar como os compradores ou vendedores agressivos estão movendo o preço, sem precisar de acesso completo ao fluxo de ordens.
⚙️ Como Funciona:
Calcula o delta de volume simulado com base na direção do candle e no volume.
Candles de alta (fechamento > abertura) indicam predominância de compradores.
Candles de baixa (fechamento < abertura) indicam predominância de vendedores.
O delta é a diferença entre a pressão de compra e venda simulada.
🔍 Principais Funcionalidades:
Barras visuais mostrando a dominância de compradores vs vendedores agressivos
Ajuda a identificar a força da tendência, explosões de momentum e possíveis reversões
Simples, eficaz e compatível com qualquer período de tempo
Leve e ideal para scalping, day trading e swing trading
💡 Como Usar:
Procure por delta positivo forte durante tendências de alta para confirmação.
Observe o delta enfraquecendo ou divergências como sinais de possível reversão.
Combine com indicadores de tendência ou price action para maior precisão.