Volume Profile [Makit0]


Volume Profile is suitable for day and swing trading on stock and futures markets, is a volume based indicator that gives you 6 key values for each session: POC, VAH, VAL, profile HIGH, LOW and MID levels. This project was born on the idea of plotting the RTH sessions Value Areas for /ES in an automated way, but you can select between 3 different sessions: RTH , GLOBEX and FULL sessions.
Some basic concepts:
- Volume Profile calculates the total volume for the session at each price level and give us market generated information about what price and range of prices are the most traded (where the value is)
- Value Area (VA): range of prices where 70% of the session volume is traded
- Value Area High (VAH): highest price within VA
- Value Area Low (VAL): lowest price within VA
- Point of Control (POC): the most traded price of the session (with the most volume )
- Session HIGH, LOW and MID levels are also important

There are a huge amount of things to know of Market Profile and Auction Theory like types of days, types of openings, relationships between value areas and openings... for those interested Jim Dalton's work is the way to come
I'm in my 2nd trading year and my goal for this year is learning to daytrade the futures markets thru the lens of Market Profile

For info on Volume Profile: TV Volume Profile wiki page at
For info on Market Profile and Market Auction Theory: Jim Dalton's book Mind over markets (this is a MUST)

BE AWARE: this indicator is based on the current chart's time interval and it only plots on 1, 2, 3, 5, 10, 15 and 30 minutes charts.
This is the correlation table TV uses in the Volume Profile Session Volume indicator (from the wiki above)
Chart Indicator
1 - 5 1
6 - 15 5
16 - 30 10
31 - 60 15
61 - 120 30
121 - 1D 60
This indicator doesn't follow that correlation, it doesn't get the volume data from a lower timeframe, it gets the data from the current chart resolution.

- 6 key values for each session: POC (solid yellow), VAH (solid red), VAL (solid green), profile HIGH (dashed silver ), LOW (dashed silver ) and MID (dotted silver ) levels
- 3 sessions to choose for: RTH , GLOBEX and FULL
- select the numbers of sessions to plot by adding 12 hours periods back in time
- show/hide POC
- show/hide VAH & VAL
- show/hide session HIGH, LOW & MID levels
- highlight the periods of time out of the session ( silver )
- extend the plotted lines all the way to the right, be careful this can turn the chart unreadable if there are a lot of sessions and lines plotted

- Session: select between RTH (8:30 to 15:15 CT ), GLOBEX (17:00 to 8:30 CT ) and FULL (17:00 to 15:15 CT ) sessions. RTH by default
- Last 12 hour periods to show: select the deph of the study by adding periods, for example, 60 periods are 30 natural days and around 22 trading days. 1 period by default
- Show POC (Point of Control): show/hide POC line. true by default
- Show VA (Value Area High & Low): show/hide VAH & VAL lines. true by default
- Show Range (Session High, Low & Mid): show/hide session HIGH, LOW & MID lines. true by default
- Highlight out of session: show/hide a silver shadow over the non session periods. true by default
- Extension: Extend all the plotted lines to the right. false by default

- By default this indicator plots all the levels for the last RTH session within the last 12 hours, if there is no plot try to adjust the 12 hours periods until the seesion and the periods match
- For Globex/Full sessions just select what you want from the dropdown menu and adjust the periods to plot the values
- Show or hide the levels you want with the 3 groups: POC line, VA lines and Session Range lines
- The highlight and extension options are for a better visibility of the levels as POC or VAH/VAL

@watsonexchange for all the help, ideas and insights on this and the last two indicators (Market Delta & Market Internals) I'm working on my way to a 'clean chart' but for me it's not an easy path
@PineCoders for all the amazing stuff they do and all the help and tools they provide, in special the Script-Stopwatch at that was key in lowering this indicator's execution time
All the TV and Pine community, open source and shared knowledge are indeed the best way to help each other

IF YOU REALLY LIKE THIS WORK, please send me a comment or a private message and TELL ME WHAT you trade, HOW you trade it and your FAVOURITE SETUP for pulling out money from the market in a consistent basis, I'm learning to trade (this is my 2nd year) and I need all the help I can get

- fixed the starting of globex and full sessions on sunday
- added Kolkata cash session
Release Notes: UPDATED VERSION: v0.5.3beta
- allow calculation only once per bar at barstate.isconfirmed
- fixed POC and VA calculations
- added version to short title
Release Notes: UPDATED VERSION: *v0.5.4beta
- fixed VA calculations at range extremes
Open-source script

In true TradingView spirit, the author of this script has published it open-source, so traders can understand and verify it. Cheers to the author! You may use it for free, but reuse of this code in a publication is governed by House Rules. You can favorite it to use it on a chart.

Want to use this script on a chart?


+1 Reply
nothing gets added on my chart... its blank
+13 Reply
makit0 rahulsharma198605
@rahulsharma198605, If you read the description and the comments you'll discover two things: first you need a ticker with volume data, second you need to adjust the 'last periods to show' parameter. Give it a try and send me a pic of your chart.
All the 6 levels plotted are really helpful and the idea to choose to plot only the one we like is just great.

Some help needed:
1. How can we plot another line, lowest traded price? Just the opposite of POC, most traded price.
2. How can we plot yesterday's line today? As the levels will help in taking trading decisions. A little more info:
2.1 I would NOT like to see today's lines at all
2.2 Only yesterday's lines should be plotted in today session and so is the case when we look back (Just like Pivot Point Standard)

Again, great work here and thank you!
+3 Reply
makit0 Niftyanalysis_Bhoomi
@Niftyanalysis_Bhoomi, Thanks for your words! I'm glad this can be useful for you! :D
In regard of the Low Volume Node levels, I'm including it in the TODO list, some time ago I thought about that too, to identify the LVNs for possible S/R but how do you do it? Only the Lowest VN inside the VA, or the Lowest VN of the full range discounting the top and bottom 20% or 25% of the range? If you don't put a limit on the zone for sure it will get as Lowest VN one of the extreme of the range... I would like your insights on this, here or for DM what you like more :D
And about the second point, it's on the TODO list too: "Check option to hide current session", some times I would like to hide the current session to be able to see clearly the previuos levels when the open is inside previous range.
I'm in my second year, learning and trying, and very glad of being useful :D
Thank you very much to you and all the people for your support!

Fantastic !! Thanks a lot for sharing this script.

Between can we plot value lines using the prior day values for the following day,so it will be helpful towards understanding future price movement.

Again many thanks for sharing your knowledge.Take care!!
Fantabulous! Thanks a ton for sharing this.
+1 Reply
Awesome script! Any chance you can make it so that we can choose to plot static lines of previous day on today's chart and also pick a different timeframe like the weekly?
Hi, i was wondering. Does this repaint?

makit0 arnoldalanis1
@arnoldalanis1, Hi! First the short answer: NO, IT DOES NOT REPAINT. Why? Because of the 'barstate.isconfirmed' in the conditional of line 192, this makes the script only execute once per bar on the last update, so it does not update at each realtime tick update. Now the long answer: Repaint is not good nor bad, repaint it's not a characteristic of a script like the bluetooth on a piece of tech, seems that ''Every script is better without repaint' it's the new version of 'Every trinket is better with bluetooth' and nothing it's further from reality. Repaint only means that the output of a script updates at every tick of the realtime bar, this is an option a coder has to define the behavior of the piece of code that is writing, repaint is a tool, a decision you make of using the realtime values as they come or wait for the realtime bar to settle. So how do you know that this script does not repaint? If you look carefully you'll see that the lines only move on the transitions between bars, this is when the last bars closes the script updates the levels, and when the new bar opens the script maintain those levels unchanged until this new bar, now the current last bar, closes. While the realtime bar is moving the lines are static, on the last update of the realtime bar the lines update as well.
If you wanna understant repainting I encourage you to search the term in here:
Thanks and good luck!
+1 Reply
Home Stock Screener Forex Screener Crypto Screener Economic Calendar How It Works Chart Features Pricing Refer a friend House Rules Help Center Website & Broker Solutions Widgets Charting Solutions Lightweight Charting Library Blog & News Twitter
Profile Profile Settings Account and Billing Referred friends Coins My Support Tickets Help Center Private Messages Chat Sign Out