Resistances and supports based on simplified Volume Profile

This study tries to highlight support and resistances
as they are defined by
TradingLatino TradingView user
His definition is based on volume peaks
on the official TradingView Volume Profile
indicator that seem rather big on size.

As a bonus it also serves as a rather simple volume profile indicator.
As you can see it only show last blocks volume profile .

It's aimed at BTCUSDT pair and 4h timeframe.

HOW IT WORKS - Recent Profile Block
It gathers volume from the last 100 Bars
in order to draw the recent profile block

Volume that intersects with current level range
being studied is added to its value.

Additionally the current level price is modified
so that it matches the level price where most
of the volume has concentrated

So you get a pretty accurate way of the volume
while at the same time the level are not stuck
to arbitrary level prices.

HOW IT WORKS - Resistances and Supports
It calculates the level which its price it's
nearer (from below) to the current price level

Resistance is found steping up (from current prive level)
level by level
till you find a level which its value
is higher than the previous level value.

Support is found steping down (from current prive level)
level by level
till you find a level which its value
is higher than the previous level value.

That way you ignore rather small
resistances and support values.

Finally the resistances and supports are drawn next to the recent profile block
so that you can look at them with ease.

If you hover over the label you can double check if you are looking at
current price, resistance or support levels.

Bars in recent profile block : How many previous period volumes are used to calculate the recent profile block
Row width multiplier : Adjust how big the recent profile block seems to be
Resistances prices number of decimal digits : How many digits is shown at the resistance and support level prices.

Please be aware that depending on your security and timeframe you might need to modify the
'Bars in recent profile block' setting so that the study does not timeout.

If your strategy calculates take profit
limits on higher resistances based
on volume you could use this indicator
resistance detector

This is my first volume indicator.
I suppose that each trader
has his own approach on defining
resistances and supports.

I'm interested on knowing if the default way
this resistances and supports are calculated
matches what other traders would have
highlighted manually on the chart.

I have only used this identifier in BTCUSDT 4h timeframe.
I'm interested to know what needs to be tweaked
in other securities and timeframes.

This study let's you choose the number of decimals the label will use.

I have reused and adapted some code from
'Poor man's volume profile' study
which it's from TradingView IldarAkhmetgaleev user.

I also wanted to thank him for helping me understanding his study.
Notas de prensa:
  • Now the label positions match the label prices written on them as anyone would expect.
  • There's also a new 'Avoid label price overlaps' mode for those users that want to use an alternate mode that makes sure labels do not overlap even if it means that the label position won't match the label price. This mode forces the labels to be printed at the top, middle and bottom of the recent block profile.
Notas de prensa:
  • Now by default the Volume Profile is calculated using 1 day data
  • New option to switch between custom number of bars and 1 day
  • New setting: Volume Profile resolution (1 day, 1 hour, ...)
  • Added Volume Point of Control (VPoC) level
  • Slight change of colours
Notas de prensa: Overall changes:
  • Now when two labels share the same level the VPoC is shown.
  • Label tooltips now show also the price so that it's easier to check prices when the labels overlap.
  • Presentation has been improved and many settings added to tweak it.

New settings:

  • Improve label price overlaps horizontally {True}
  • Volume Profile width (in bars) {15}: Volume Profile can be make larger or smaller in width thanks to this option.
  • Volume Profile offset (in bars) {5}: Volume Profile can be shown more to the left or to the right if the defaults do not suit you.
  • Volume Profile lines width (in pixels) {2}.
  • Volume Profile labels size {small}.
  • Volume Profile offset between labels (in bars) {2}. How many bars between labels to minimize horizontal overlaps. It will only be taken into account if 'Improve label price overlaps horizontally' is set to True.
  • Show tick difference from current price {False}. BETA. Feedback needed.
Notas de prensa:
  • Graph was updated to focus on this indicator only.
Notas de prensa: v20201024 update:
  • Fixed VPoC calculation
Script de código abierto

Siguiendo el verdadero espíritu de TradingView, el autor de este script lo ha publicado en código abierto, para que los traders puedan entenderlo y verificarlo. ¡Un hurra por el autor! Puede utilizarlo de forma gratuita, aunque si vuelve a utilizar este código en una publicación, debe cumplir con las Normas internas. Puede marcarlo como favorito para usarlo en un gráfico.

¿Quiere utilizar este script en un gráfico?


I have been doing more tests of the 1 hour timeframe indicator, with XMRUSDT, DOTUSDT works very well. Achieve research on the indicator you get better results to enter short when all lines are above the yellow line (control volume) and to trade long when the lines are below the yellow line (All of the above as investigated by the indicator). What if I can't find is an exit point from the trade or take profit, as the lines repaint someone if you can guide me.
+3 Responder
ruckard Leorey9710021
So the VPoC is working as a magnet for you. That's interesting.
Do you keep the default '1 day' Volume Profile timeframe on the indicator settings?

Yes, the lines repaint so that the indicator is always updated.

Maybe you should take a look at my other study: "Historic VPoCs and pseudo VPVR" where you should make sure to change the 'VPVR Number of bars' settings from the default 100 to 24.
This would paint you the VPVR Volume Profile for 1 day ( 24 bars of 1 hour equals 1 day) as the profile you are using right now.

Then you can maybe use the Historic VPoC lines (also based on 1 day) to know when to exit.

Maybe you can try it and leave a message there and tell us if it helped you.
+1 Responder
@ruckard, Well at the moment I have not made any changes in volume profile timeframe, I have worked in 1 day. What if I have an inconvenience is when to take profit or exit point from the trade. Volume profile offset changes it to 2 bars. I will study and follow your suggestions in changing volume profitle from 1 day to 24 bars.
If you have suggestions on take profit or exit of the trade I would appreciate it. Thank you
Nice work.
I will adjust the code for MES Micro e-mini Futures. This will be for the 5 min chart and bar value will be based on ticks. Each tick is $1.25. I will adjust and add to the script until it works.
+1 Responder
ruckard forestcall
@forestcall, Thank you.
As you are mentioning ticks be aware that this study assumes a 24h/7d market.
So no explicit support for weekend gaps.

Feel free to share your work via pm to see if I can merge it into the original study.
ruckard forestcall
@forestcall, What about dividing the suggested level price by syminfo.mintick, floor it so that it's an integer and then multiply it times the syminfo.mintick ?
It seems pretty straight-forward to me.

Unless you want each bar level height to be the same as the syminfo.mintick value, that's another beast.
forestcall ruckard
@ruckard, To be honest, I'm confused on how to count ticks. I found a cool article where the author discusses.
I seem to be having a problem on the Doge/USDT chart. The price line of the indicator doesn't actually show the current price. It shows a level below the current price( the actual price is at 0.25 and the indicator reads it as 0.245) and as a consequence I would guess that all the other lines are indicating wrong values. Please see the screenshot below.
ruckard Dogutza
@Dogutza, The indicator works as expected.
This is how the price is calculated: current_price = (open + close) / 2 .
Not sure why I chose that calculation.

You can change that line to current_price = close and see if it suits your needs.