Dear @swalsh,
Thank you for your help.
I'm seeking how to code an exploration that shows the price range of each horizontal bar (PriceVolDistribution) that you shows in the chart. Lets say the time range is 3 months.

Also i've add the code as you suggested:
/*
Author: Anderson Wilson, Beppe, Steve Walsh
based on PriceVolDistribution demo written by Tomasz Janeczko
Volume-by-Price is an indicator that shows the amount of volume for a particular price range,
The Volume-by-Price bars are horizontal and shown on the left side of the chart to correspond
with these price ranges. Bar colors indicate Bull (SeaGreen) / Bear (Custom16) / Total (Grey40) volume
Use double click to define range.
*/
SetChartOptions( 0, chartShowArrows | chartShowDates );
GraphXSpace = 15;
//
Plot( C, "", colorAqua, styleCandle );
Title = GetFnData( "Alias" ) + " - " + StrFormat( "{{FULLNAME}} - {{INTERVAL}}: {{DATE}}, VAP Absolute Values, Open %g, Hi %g, Lo %g, Close %g (%.1f%%), Vol(mil) %.2f (%.0f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ), V / 1000000, SelectedValue( ROC( V, 1 ) ) );
//
bi = BarIndex();
fvb = BeginValue( bi );
lvb = EndValue( bi );
if( fvb == 0 && lvb == LastValue( bi ) )
{
fvb = FirstVisibleValue( bi );
lvb = LastVisibleValue( bi );
}
fvb = Max( 0, fvb );
lvb = Max( 0, lvb );
bins = Param( "Bins", 10, 3, 100, 1 );
pRecHeight = Param( "Rectangle Height", 0.90, 0.10, 1, 0.05 );
BullBearZone = ( High - Low ) / 3;
bullbar = C > ( High - BullBearZone );
bearbar = C < ( Low + BullBearZone );
// mx = [row 0][col 0]
// price levels in first column [0][0] and relative volume at that level in second column [0][1]
// https://www.amibroker.com/guide/afl/pricevoldistribution.html
mx = PriceVolDistribution( H, L, V, bins, True, fvb, lvb );
mx1 = PriceVolDistribution( H, L, IIf( bullbar, V, 0 ), bins, True, fvb, lvb );
mx2 = PriceVolDistribution( H, L, IIf( bearbar, V, 0 ), bins, True, fvb, lvb );
bins = MxGetSize( mx, 0 );
bins1 = MxGetSize( mx1, 0 );
bins2 = MxGetSize( mx2, 0 );
GfxSetOverlayMode( 1 );
GfxSetCoordsMode( 1 );
if( bins > 1 && bins == bins1 && bins == bins2 )
{
MaxVolume = mx[ 0 ][ 1 ];
// find max volume
for( i = 1; i < bins; i++ )
{
if( mx[ i ][ 1 ] > MaxVolume )
MaxVolume = mx[ i ][ 1 ]; // Volume for that bin 1...
//printf( "mx=%g", MaxVolume / 100000 );
}
// rectangle height
RecHeight = ( mx[ 1 ][ 0 ] - mx[ 0 ][ 0 ] ) / 2 * pRecHeight;
GfxSelectFont( "Arial", 7 ); // Change the text size here
for( i = 0; i < bins; i++ )
{
// mx1 = Bull
price = mx1[ i ][ 0 ]; // price level
absVolume = mx1[ i ][ 1 ];
VolAcum = absVolume;
relvolume = absVolume / MaxVolume;
relbar = relvolume * ( lvb - fvb + 1 );
// upper left corner of the rectangle.
x1 = fvb;
y1 = price + RecHeight;
// lower right corner of the rectangle.
x2 = fvb + relbar;
y2 = price - RecHeight;
bullColor = ColorBlend( colorSeaGreen, GetChartBkColor(), 0.2 );
GfxFillSolidRect( x1, y1, x2, y2, bullColor );
GfxSetBkColor( bullColor );
GfxSetTextColor( colorBrightGreen );
GfxTextOut( NumToStr( round( relvolume * 100 ), 2.0 ) + "%", x1, y1 );
// mx2 = Bear
absVolume = mx2[ i ][ 1 ];
VolAcum += absVolume;
relvolume = absVolume / MaxVolume;
relbar2 = relvolume * ( lvb - fvb + 1 );
x1 = x2;
x2 = x1 + relbar2;
bearColor = ColorBlend( colorCustom16, GetChartBkColor(), 0.2 );
GfxFillSolidRect( x1, y1, x2, y2, bearColor );
GfxSetBkColor( bearColor );
GfxSetTextColor( colorRed );
GfxTextOut( NumToStr( round( relvolume * 100 ), 2.0 ) + "%", x1, y1 );
// mx = All Bars
absVolume = mx[ i ][ 1 ];
relvolume = ( absVolume - VolAcum ) / MaxVolume;
relbar3 = relvolume * ( lvb - fvb + 1 );
x1 = x2;
x2 = x1 + relbar3;
midColor = ColorBlend( colorGrey40, GetChartBkColor(), 0.2 );
GfxFillSolidRect( x1, y1, x2, y2, midColor );
GfxSetBkColor( midColor );
GfxSetTextColor( colorBlack );
GfxTextOut( NumToStr( round( relvolume * 100 ), 2.0 ) + "%", x1, y1 );
}
}
Filter=1;
AddColumn( H-L, "Range", 1.2 );
AddColumn( IIF( bullbar, 1, 0 ), "Top", 1.2 );
AddColumn( IIF( bearbar, 1, 0 ), "Bottom", 1.2 );
AddColumn( IIF( NOT bearbar AND NOT bullbar, 1, 2 ), "Middle", 1.2 );
I don't know why but it keeps resulting error notice in the exploration

Appreciate your help, thank you