Volume Profile and Market Profile a new wave of market picture

Status
Not open for further replies.

XRAY27

Well-Known Member
#81
Xray ,

Daily examples are gr8. We are back into the jungle. (8650-8680 range).
Every thing is the hard work of great gurus ( J. Peter Steidlmayer and Dalton...)

i'm humble follower !!!! ;) ...just shared with forum..

Thanks to ST da and other for there support
 
Last edited:

wisp

Well-Known Member
#82
Every thing is the hard work of great gurus ( J. Peter Steidlmayer and Dalton...)

i'm humble follower !!!! ;) ...just shared with forum..

Thanks for ST da and other for there support
XRAY bro!!!

You have taught so beautifully and your today's assessment was spot on!!! awesome!! :clapping::clapping::clap::clap::clap:
 

Vipul_84

Well-Known Member
#83
How we read today's price action?
Market opened in yesterday's range and broke below VAL & PDL. Now 8630 is unfair buy for long term trader. So going Long at NF 8630 SL 8600 (I dont know how to keep SL) :thumb:
 

XRAY27

Well-Known Member
#84
How we read today's price action?
Market opened in yesterday's range and broke below VAL & PDL. Now 8630 is unfair buy for long term trader. So going Long at NF 8630 SL 8600 (I dont know how to keep SL) :thumb:
Vipul !!!

i have made my point clear 8610 is weekly point of VAL !!! which almost reached 8610.75.with Weekly NPOC @ 8595...so OTF traders may enter at this area so better keep @ 8590 !!! if you already entered !!!

DON'T TRADE WITH ANTICIPATION ,TAKE CONFIRMATION OF PA
 

rpsvinod

Well-Known Member
#85


Pls share ur views, how to read this level? This image taken @ Today 10.30 AM

Note : As a beginner wanna read this chart by parallel reading of ur contents.:confused:

Now CMP @Crude Mini - 2830

RPS. VINOD
 

Vipul_84

Well-Known Member
#86
Yes, revised to 8595, Thanks XRAY!

So in this case Virgin POC that too weekly was nearby. In other cases, how we keep SL?

Vipul !!!

i have made my point clear 8610 is weekly point of VAL !!! which almost reached 8610.75.with Weekly NPOC @ 8595...so OTF traders may enter at this area so better keep @ 8590 !!! if you already entered !!!

DON'T TRADE WITH ANTICIPATION ,TAKE CONFIRMATION OF PA
 

amitrandive

Well-Known Member
#88
For all those who are having issue with the current MP AFL posted by Xray,there is a lighter version available for that on the net.

Pasting it here for use.

Works for Amibroker version 5.8 onwards.

Source:http://goo.gl/CsycJ4

Code:
_SECTION_BEGIN( "MPLite" );
// - there was a plot limit call introduced after 5.41.0 beta
//   i.e. "•Warning 502: Calling Plot()/PlotOHLC over 500 times is displayed in indicator in runtime to prevent abuse"
// - uses GFX for major calls of plot only if AB version newer than 5.40 - this only delays reaching the plot limit
// http://www.***********.com/amibroker/2961-market-profile-amibroker-new-13.html
 
Version (5.80);
PS_SOLID=0;
PS_DASH=1;
PS_DOT=2;
PS_DASHDOT=3;
PS_DASHDOTDOT=4;
PS_NULL=5;
PS_INSIDEFRAME=6;
 
function Lastthursday()
{
 Daysinmonth=
    IIf(Month()==2, IIf(Year()%4==0 AND Year()%100!=0,29,28), 
    IIf(Month()==4 OR Month()==6 OR Month()==9 OR Month()==11,30,31));
  
 return IIf(Daysinmonth-Day()<7 AND DayOfWeek()==4,1,
        IIf(Daysinmonth-Day()<8 AND DayOfWeek()==3 AND Ref(DayOfWeek(),1)!=4 AND Day()!=Daysinmonth,1,0));
  
}
 
 
procedure GfxPlotLine( ix0, iy0, ix1, iy1, iColor, iWidth, iStyle)
{
    GfxSetBkMode(1);
    GfxSelectPen( iColor, iWidth, iStyle );
    GfxMoveTo( ix0, iy0 );
    GfxLineTo( ix1, iy1 );
}
 
 
PlotOHLC( O, H, L, C, "Price", IIf( C > O, colorGreen, colorRed ), styleCandle );
 
FirstVisibleBar = Status( "FirstVisibleBar" );
Lastvisiblebar = Status( "LastVisibleBar" );
 
totalVisible = Lastvisiblebar - FirstVisibleBar;
 
 
//Den = Param("Density", 1, 0.1, 10, 0.1);
percent = Param( "Value Area", 70, 1, 100, 1 );
Type = ParamList( "Type", "Price Profile|Volume Profile" );
Period = ParamList( "Base", "Hourly|Daily|Weekly|Monthly|Lastthursday|Yearly", 1 );
x_scale = Param( "Horizontal_scale", 2, 0, 10, 0.1 );
EnMP2 = ParamStyle( "Style", styleLine | styleNoLabel, maskAll );
 
EnIB = ParamToggle( "Show Initial Balance",  "No|Yes", 0 );
IBBars = Param( "Initial Balance Bars", 2, 1, 10, 1 );
ViewYvalues = ParamToggle( "Show Yesterdays Values", "No|Yes", 1 );
ViewVlines = ParamToggle( "Show Vertical Base Lines", "No|Yes", 1 );
Viewvalues = ParamToggle( "Show Values", "No|Yes", 0 );
ViewVpoc = ParamToggle( "Show Virgin POC", "No|Yes", 1 );
ViewTPO = ParamToggle( "Show TPO Count", "No|Yes", 0 );
 
Color_Above_VA = ParamColor( "Color_Above_VA",  colorGrey40 );
Color_VA = ParamColor( "Color_VA", colorBlueGrey );
Color_Below_VA = ParamColor( "Color_Below_VA", colorGrey40 );
Color_POC_line = ParamColor( "Color_POC_Line", colorYellow );
 
color_YVAH = ParamColor( "YVAH", colorWhite );
color_YVAL = ParamColor( "YVAL", colorWhite );
color_YPOC = ParamColor( "YPOC", colorYellow );
 
IBColor = ParamColor( "IB Color", colorWhite );
IBstyle = ParamStyle( "IB style", styleLine, maskAll );
Color_Virgin_POC = ParamColor( "Virgin Poc Color", colorYellow );
Color_Base_Line = ParamColor( "Base Line Color", colorDarkGrey );
 
switch (Period)
  {
 
    case "Yearly":    
        BarsInDay = BarsSince(Year() != Ref(Year(), -1));
        tf = inMonthly;
        break;
 
    case "Monthly":    
        BarsInDay = BarsSince(Month() != Ref(Month(), -1));
        tf = inMonthly;
        break;
     
     
    case "Weekly":
        BarsInDay = BarsSince(DayOfWeek() < Ref( DayOfWeek(), -1 ));
        tf = inWeekly;
        break;
     
    case "Hourly":
        BarsInDay = BarsSince(Hour() != Ref(Hour(), -1));
        tf = inHourly;
        break;
     
    case "Daily":
        BarsInDay = BarsSince(Day() != Ref(Day(), -1));
        tf = inDaily;
        break;
     
  }
   
 
  if(Period=="Lastthursday"  )
  {
    BarsInDay = BarsSince(Lastthursday()==0 AND Ref(Lastthursday(), -1)==1);
    bot1=ValueWhen(BarsInDay==0,L);
    Bot2 = ValueWhen(Ref(BarsInDay)==1 OR BarIndex()>BarCount-2 ,LLV(L,BarsInDay),0);
    bot=Min(bot1,bot2);
    top1=ValueWhen(BarsInDay==0,H);
    Top2 =ValueWhen(Ref(BarsInDay,1)==1 OR BarIndex()>BarCount-2,HHV(H,BarsInDay),0);
    top=Max(top1,top2);
    Vol = ValueWhen(Ref(BarsInDay,1)==1 OR BarIndex()>BarCount-2 ,Sum(V,BarsInDay),0);
  }
  else
  {
    Bot = TimeFrameGetPrice("L", tf, 0);
    Top = TimeFrameGetPrice("H", tf, 0);
    Vol = TimeFrameGetPrice("V", tf, 0);  
  } 
 
CurTop = HHV( H, BarsInDay + 1 );
Curbot = LLV( L, BarsInDay + 1 );
 
Range =  Top - Bot;
coverage = LastValue( Ref( ATR( 10 ), -1 ) );
 
den = ( coverage / 10 );
//den=1;
 
multiplier = IIf( round( totalVisible ) / 300 < 1, 1, round( totalVisible ) / 300 );
 
if ( ViewVlines)
    Plot( BarsInDay == 0, "", Color_Base_Line, styleHistogram | styleOwnScale | styleLine | styleNoLabel );
 
 
relTodayRange = 0;
 
x = 0;
basey = 0;
basex = 0;
newday = 0;
total = 0;
shiftup = 0;
shiftdn = 0;
//Line = Null;
Voloumeunit = 0;
 
 
 GfxSetOverlayMode( 1 ); 
 GfxSetCoordsMode( 1 ); // bar/price mode (instead of pixel) 
 
for (  i = IIf( FirstVisibleBar - 100 > 1, FirstVisibleBar - 100, FirstVisibleBar ); i < Lastvisiblebar AND i < BarCount - 1 ; i++  )
{
    if ( BarsInDay[i] == 0 )
    {
        t = BarsInDay[i-1];
 
 
        if ( EnIB )
        {
            IBH = HHV( H, IBBars );
            IBL = LLV( L, IBBars );
            /*
            Line1 = LineArray( basex, IBH[basex+IBBars-1], i, IBH[basex+IBBars-1] );
            Plot( Line1, "", IBColor, IBstyle );
            Line2 = LineArray( basex, IBL[basex+IBBars-1], i, IBL[basex+IBBars-1] );
            Plot( Line2, "", IBcolor, IBstyle );
            */
            GfxPlotLine(basex, hY=IBH[basex+IBBars-1], i, hY,
                        IBColor, 1, PS_SOLID);    
            GfxPlotLine(basex, hY=IBL[basex+IBBars-1], i, hY,
                        IBColor, 1, PS_SOLID);                
             
        }
 
        //////////////////////////////////
        poc = 0;
        pocj = 0;
        midrange = int( relTodayRange / 2 ) + 1;
 
        for ( j = 1; j <= relTodayRange + 1 ; j++ )
        {
            if ( poc < x[j] )
            {
                poc = x[j];
                pocj = j;
            }
            else
                if ( poc == x[j] )
                {
                    if ( abs( midrange - j ) < abs( midrange - pocj ) )
                    {
                        poc = x[j];
                        pocj = j;
                    }
                }
 
        }
 
        for ( n = 1; n <= relTodayRange; n++ )
            total[n] = x[n] + total[n-1];
 
        Value_area = ( total[relTodayRange] * percent ) / 100;
 
        for ( a = 1; a <= relTodayRange; a++ )
        {
            if ( pocj - a > 0 AND pocj + a < relTodayRange )
            {
                if ( poc + total[pocj+a] - total[pocj] + ( total[pocj] - poc ) - total[pocj-( a+1 )] >= Value_area )
                {
                    shiftup = shiftdn = a;
                    break;
                }
            }
            else
                if ( pocj - a < 1 )
                {
                    if ( poc + total[pocj+a] - total[pocj] + ( total[pocj] - poc ) >= Value_area )
                    {
                        shiftup = a;
                        shiftdn = pocj;
                        break;
                    }
                }
                else
                    if ( pocj + a > relTodayRange )
                    {
                        if ( poc + total[relTodayRange] - total[pocj] + ( total[pocj] - poc ) - total[pocj-( a+1 )] >= Value_area )
                        {
                            shiftup = floor( relTodayRange ) - pocj;
                            shiftdn = a + 1;
                            break;
                        }
                    }
        }
 
 
        //Vah = LineArray( baseX[i], baseY + ( pocj + shiftup ) * den, i, baseY + ( pocj + shiftup ) * den );
        //Val = LineArray( baseX[i], baseY + ( pocj - shiftdn ) * den, i, baseY + ( pocj - shiftdn ) * den );
        //pocline = LineArray( basex, basey + pocj * den, basex[i] + poc, basey + pocj * den );
         
         
         
        if ( ViewVpoc)
        {
            Virginpoc = basey + pocj * den;
            newi = Null;
 
            for ( j = i; j <= ( BarCount - 1 ) ; j++ )
                if ( L[j] < Virginpoc AND H[j] > Virginpoc )
                {
                    newi = j;
                    break;
                }
                else
                    newi = BarCount;
 
            Plot( LineArray( basex[i], hY=basey + pocj*den, newi, hY), "", Color_Virgin_POC, styleNoRescale );
             
             
        }
 
         
 
        if ( ViewYvalues)
        {
           //Vahn = LineArray( i, baseY + ( pocj + shiftup ) * den, i + t, baseY + ( pocj + shiftup ) * den );
           //pocn = LineArray( i, baseY + ( pocj ) * den, i + t, baseY + ( pocj ) * den );
           //Valn = LineArray( i, baseY + ( pocj - shiftdn ) * den, i + t, baseY + ( pocj - shiftdn ) * den );
 
            GfxPlotLine( i, baseY + ( pocj + shiftup ) * den, i + t, baseY + ( pocj + shiftup ) * den, 
                 color_YVAH, 0, PS_DOT);
                  
            GfxPlotLine( i, baseY + ( pocj ) * den, i + t, baseY + ( pocj ) * den, 
                 color_YPOC, 0, PS_DOT);     
                  
            GfxPlotLine(i, baseY + ( pocj - shiftdn ) * den, i + t, baseY + ( pocj - shiftdn ) * den, 
                 color_YVAL, 0, PS_DOT);
                      
            //Plot( Vahn, "", color_YVAH, styleDashed | styleNoRescale );
            //Plot( Valn, "", color_YVAL, styleDashed | styleNoRescale );
            //Plot( pocn, "", color_YPOC, styleDashed | styleNoRescale );
             
             
        }
 
 
        if ( ViewTPO )
        {
            nnn = HHV( H, BarsInDay );
            PlotText( "" + ( total[relTodayRange] - total[pocj] ), basex[i], nnn[i], colorLightGrey );
            PlotText( "" + ( total[pocj-1] ), basex[i], basey - den, colorLightGrey );
        }
 
        if ( Viewvalues)
        {
            PlotText( "" + ( ( basey + pocj*den ) ), baseX[i], basey + pocj*den, colorWhite, colorDarkGrey );
            PlotText( "" + ( ( baseY + ( pocj + shiftup )*den ) ), baseX[i], baseY + ( pocj + shiftup )*den, colorWhite, colorDarkGrey );
            PlotText( "" + ( ( baseY + ( pocj - shiftdn )*den ) ), baseX[i], baseY + ( pocj - shiftdn )*den, colorWhite, colorDarkGrey );
        }
 
        //-- Plot Market Profile
        for ( p = 0; p <= relTodayRange + 1; p = p + multiplier )
        {
            GfxPlotLine( baseX, hY=baseY + p * Den, baseX + x[p], hY, 
                            IIf( p >  ( pocj + shiftup ), Color_Above_VA, 
                            IIf( p <= ( pocj + shiftup ) AND p >= ( pocj - shiftdn ), Color_VA, 
                              Color_Below_VA )), 1, PS_SOLID);
                               
        }
         
        //-- Plot PoC
        GfxPlotLine( baseX, hY = basey + pocj * den, basex[i] + poc, hY, 
                     Color_POC_Line, 1, PS_SOLID);                  
         
                           
         
                      
///////////////////
        basex = 0;
        x = 0;
        Basex = i;
        baseY = Bot[i];
        relTodayRange = Range[i] / Den;
        Voloumeunit = Vol[i] / LastValue( BarsInDay );
 
    }
 
    for ( j = 0; j <= relTodayRange ; j++ )
    {
        if ( L[i] <= Bot[i] + j*Den AND H[i] >= Bot[i] + j*Den  )
        {
 
            if ( Type == "Price Profile" )
            {
                x[j] += x_scale;
            }
            else
                if ( Type == "Volume Profile" )
                {
                    x[j] += round( V[i] / Voloumeunit ) + 1;
                }
 
        }
    }
}
 
 
if ( EnIB )
{
    IBH = HHV( H, IBBars );
    IBL = LLV( L, IBBars );
    Line1 = LineArray( basex, IBH[basex+IBBars-1], i, IBH[basex+IBBars-1] );
    Plot( Line1, "", IBColor, IBstyle );
    Line2 = LineArray( basex, IBL[basex+IBBars-1], i, IBL[basex+IBBars-1] );
    Plot( Line2, "", IBColor, IBstyle );
}
 
//////////////////////////////////
poc = 0;
pocj = 0;
midrange = int( relTodayRange / 2 ) + 1;
 
for ( j = 1; j <= relTodayRange + 1 ; j++ )
{
    if ( poc < x[j] )
    {
        poc = x[j];
        pocj = j;
    }
    else
        if ( poc == x[j] )
        {
            if ( abs( midrange - j ) < abs( midrange - pocj ) )
            {
                poc = x[j];
                pocj = j;
            }
        }
 
}
 
for ( n = 1; n <= relTodayRange; n++ )
    total[n] = x[n] + total[n-1];
 
Value_area = ( total[relTodayRange] * percent ) / 100;
 
 
for ( a = 1; a <= relTodayRange; a++ )
{
    if ( pocj - a > 0 AND pocj + a < relTodayRange )
    {
        if ( poc + total[pocj+a] - total[pocj] + ( total[pocj] - poc ) - total[pocj-( a+1 )] >= Value_area )
        {
            shiftup = shiftdn = a;
            break;
        }
    }
    else
        if ( pocj - a < 1 )
        {
            if ( poc + total[pocj+a] - total[pocj] + ( total[pocj] - poc ) >= Value_area )
            {
                shiftup = a;
                shiftdn = pocj;
                break;
            }
        }
        else
            if ( pocj + a > relTodayRange )
            {
                if ( poc + total[relTodayRange] - total[pocj] + ( total[pocj] - poc ) - total[pocj-( a+1 )] >= Value_area )
                {
                    shiftup = floor( relTodayRange ) - pocj;
                    shiftdn = a + 1;
                    break;
                }
            }
}
 
Vah = LineArray( baseX[i], baseY + ( pocj + shiftup ) * den, i, baseY + ( pocj + shiftup ) * den );
Val = LineArray( baseX[i], baseY + ( pocj - shiftdn ) * den, i, baseY + ( pocj - shiftdn ) * den );
pocline = LineArray( basex, basey + pocj * den, basex[i] + poc, basey + pocj * den );
 
if ( ViewTPO)
{
    PlotText( "" + ( total[relTodayRange] - total[pocj] ), basex[i], top[i], colorLightGrey );
    PlotText( "" + ( total[pocj-1] + x_scale ), basex[i], basey - den, colorLightGrey );
}
 
if ( Viewvalues )
{
    PlotText( "" + ( ( basey + pocj*den ) ), baseX[i], basey + pocj*den, colorWhite, colorDarkGrey );
    PlotText( "" + ( ( baseY + ( pocj + shiftup )*den ) ), baseX[i], baseY + ( pocj + shiftup )*den, colorWhite, colorDarkGrey );
    PlotText( "" + ( ( baseY + ( pocj - shiftdn )*den ) ), baseX[i], baseY + ( pocj - shiftdn )*den, colorWhite, colorDarkGrey );
}
 
 
 
for ( p = 0; p <= relTodayRange + 1; p = p + multiplier )
{
        GfxPlotLine( baseX,        hY=baseY + p * Den, 
                     baseX + x[p], hY, 
                     IIf( p > ( pocj + shiftup ), Color_Above_VA, 
                     IIf( p <= ( pocj + shiftup ) AND p >= ( pocj - shiftdn ), Color_VA, Color_Below_VA )), 1, PS_SOLID);
}
 
 
 
Plot( pocline, "", Color_POC_Line, styleNoRescale | styleNoLabel );
 
_SECTION_END();
 
Last edited:

XRAY27

Well-Known Member
#89
DON'T TRADE WITH ANTICIPATION ,TAKE CONFIRMATION OF PA

ye statement samaza hi nahi :(
What is your basis for this trade !!! just because it reached VAL !!! i follow HH HL ...in HTF for any buying now only signal for this is previous day POC which is my DP for today !!!
 

XRAY27

Well-Known Member
#90
For all those who are having issue with the current MP AFL posted by Xray,there is a lighter version available for that on the net.

Pasting it here for use.

Source:http://goo.gl/CsycJ4

Code:
_SECTION_BEGIN( "MPLite" );
// - there was a plot limit call introduced after 5.41.0 beta
//   i.e. "•Warning 502: Calling Plot()/PlotOHLC over 500 times is displayed in indicator in runtime to prevent abuse"
// - uses GFX for major calls of plot only if AB version newer than 5.40 - this only delays reaching the plot limit
// http://www.***********.com/amibroker/2961-market-profile-amibroker-new-13.html
 
Version (5.80);
PS_SOLID=0;
PS_DASH=1;
PS_DOT=2;
PS_DASHDOT=3;
PS_DASHDOTDOT=4;
PS_NULL=5;
PS_INSIDEFRAME=6;
 
function Lastthursday()
{
 Daysinmonth=
    IIf(Month()==2, IIf(Year()%4==0 AND Year()%100!=0,29,28), 
    IIf(Month()==4 OR Month()==6 OR Month()==9 OR Month()==11,30,31));
  
 return IIf(Daysinmonth-Day()<7 AND DayOfWeek()==4,1,
        IIf(Daysinmonth-Day()<8 AND DayOfWeek()==3 AND Ref(DayOfWeek(),1)!=4 AND Day()!=Daysinmonth,1,0));
  
}
 
 
procedure GfxPlotLine( ix0, iy0, ix1, iy1, iColor, iWidth, iStyle)
{
    GfxSetBkMode(1);
    GfxSelectPen( iColor, iWidth, iStyle );
    GfxMoveTo( ix0, iy0 );
    GfxLineTo( ix1, iy1 );
}
 
 
PlotOHLC( O, H, L, C, "Price", IIf( C > O, colorGreen, colorRed ), styleCandle );
 
FirstVisibleBar = Status( "FirstVisibleBar" );
Lastvisiblebar = Status( "LastVisibleBar" );
 
totalVisible = Lastvisiblebar - FirstVisibleBar;
 
 
//Den = Param("Density", 1, 0.1, 10, 0.1);
percent = Param( "Value Area", 70, 1, 100, 1 );
Type = ParamList( "Type", "Price Profile|Volume Profile" );
Period = ParamList( "Base", "Hourly|Daily|Weekly|Monthly|Lastthursday|Yearly", 1 );
x_scale = Param( "Horizontal_scale", 2, 0, 10, 0.1 );
EnMP2 = ParamStyle( "Style", styleLine | styleNoLabel, maskAll );
 
EnIB = ParamToggle( "Show Initial Balance",  "No|Yes", 0 );
IBBars = Param( "Initial Balance Bars", 2, 1, 10, 1 );
ViewYvalues = ParamToggle( "Show Yesterdays Values", "No|Yes", 1 );
ViewVlines = ParamToggle( "Show Vertical Base Lines", "No|Yes", 1 );
Viewvalues = ParamToggle( "Show Values", "No|Yes", 0 );
ViewVpoc = ParamToggle( "Show Virgin POC", "No|Yes", 1 );
ViewTPO = ParamToggle( "Show TPO Count", "No|Yes", 0 );
 
Color_Above_VA = ParamColor( "Color_Above_VA",  colorGrey40 );
Color_VA = ParamColor( "Color_VA", colorBlueGrey );
Color_Below_VA = ParamColor( "Color_Below_VA", colorGrey40 );
Color_POC_line = ParamColor( "Color_POC_Line", colorYellow );
 
color_YVAH = ParamColor( "YVAH", colorWhite );
color_YVAL = ParamColor( "YVAL", colorWhite );
color_YPOC = ParamColor( "YPOC", colorYellow );
 
IBColor = ParamColor( "IB Color", colorWhite );
IBstyle = ParamStyle( "IB style", styleLine, maskAll );
Color_Virgin_POC = ParamColor( "Virgin Poc Color", colorYellow );
Color_Base_Line = ParamColor( "Base Line Color", colorDarkGrey );
 
switch (Period)
  {
 
    case "Yearly":    
        BarsInDay = BarsSince(Year() != Ref(Year(), -1));
        tf = inMonthly;
        break;
 
    case "Monthly":    
        BarsInDay = BarsSince(Month() != Ref(Month(), -1));
        tf = inMonthly;
        break;
     
     
    case "Weekly":
        BarsInDay = BarsSince(DayOfWeek() < Ref( DayOfWeek(), -1 ));
        tf = inWeekly;
        break;
     
    case "Hourly":
        BarsInDay = BarsSince(Hour() != Ref(Hour(), -1));
        tf = inHourly;
        break;
     
    case "Daily":
        BarsInDay = BarsSince(Day() != Ref(Day(), -1));
        tf = inDaily;
        break;
     
  }
   
 
  if(Period=="Lastthursday"  )
  {
    BarsInDay = BarsSince(Lastthursday()==0 AND Ref(Lastthursday(), -1)==1);
    bot1=ValueWhen(BarsInDay==0,L);
    Bot2 = ValueWhen(Ref(BarsInDay)==1 OR BarIndex()>BarCount-2 ,LLV(L,BarsInDay),0);
    bot=Min(bot1,bot2);
    top1=ValueWhen(BarsInDay==0,H);
    Top2 =ValueWhen(Ref(BarsInDay,1)==1 OR BarIndex()>BarCount-2,HHV(H,BarsInDay),0);
    top=Max(top1,top2);
    Vol = ValueWhen(Ref(BarsInDay,1)==1 OR BarIndex()>BarCount-2 ,Sum(V,BarsInDay),0);
  }
  else
  {
    Bot = TimeFrameGetPrice("L", tf, 0);
    Top = TimeFrameGetPrice("H", tf, 0);
    Vol = TimeFrameGetPrice("V", tf, 0);  
  } 
 
CurTop = HHV( H, BarsInDay + 1 );
Curbot = LLV( L, BarsInDay + 1 );
 
Range =  Top - Bot;
coverage = LastValue( Ref( ATR( 10 ), -1 ) );
 
den = ( coverage / 10 );
//den=1;
 
multiplier = IIf( round( totalVisible ) / 300 < 1, 1, round( totalVisible ) / 300 );
 
if ( ViewVlines)
    Plot( BarsInDay == 0, "", Color_Base_Line, styleHistogram | styleOwnScale | styleLine | styleNoLabel );
 
 
relTodayRange = 0;
 
x = 0;
basey = 0;
basex = 0;
newday = 0;
total = 0;
shiftup = 0;
shiftdn = 0;
//Line = Null;
Voloumeunit = 0;
 
 
 GfxSetOverlayMode( 1 ); 
 GfxSetCoordsMode( 1 ); // bar/price mode (instead of pixel) 
 
for (  i = IIf( FirstVisibleBar - 100 > 1, FirstVisibleBar - 100, FirstVisibleBar ); i < Lastvisiblebar AND i < BarCount - 1 ; i++  )
{
    if ( BarsInDay[i] == 0 )
    {
        t = BarsInDay[i-1];
 
 
        if ( EnIB )
        {
            IBH = HHV( H, IBBars );
            IBL = LLV( L, IBBars );
            /*
            Line1 = LineArray( basex, IBH[basex+IBBars-1], i, IBH[basex+IBBars-1] );
            Plot( Line1, "", IBColor, IBstyle );
            Line2 = LineArray( basex, IBL[basex+IBBars-1], i, IBL[basex+IBBars-1] );
            Plot( Line2, "", IBcolor, IBstyle );
            */
            GfxPlotLine(basex, hY=IBH[basex+IBBars-1], i, hY,
                        IBColor, 1, PS_SOLID);    
            GfxPlotLine(basex, hY=IBL[basex+IBBars-1], i, hY,
                        IBColor, 1, PS_SOLID);                
             
        }
 
        //////////////////////////////////
        poc = 0;
        pocj = 0;
        midrange = int( relTodayRange / 2 ) + 1;
 
        for ( j = 1; j <= relTodayRange + 1 ; j++ )
        {
            if ( poc < x[j] )
            {
                poc = x[j];
                pocj = j;
            }
            else
                if ( poc == x[j] )
                {
                    if ( abs( midrange - j ) < abs( midrange - pocj ) )
                    {
                        poc = x[j];
                        pocj = j;
                    }
                }
 
        }
 
        for ( n = 1; n <= relTodayRange; n++ )
            total[n] = x[n] + total[n-1];
 
        Value_area = ( total[relTodayRange] * percent ) / 100;
 
        for ( a = 1; a <= relTodayRange; a++ )
        {
            if ( pocj - a > 0 AND pocj + a < relTodayRange )
            {
                if ( poc + total[pocj+a] - total[pocj] + ( total[pocj] - poc ) - total[pocj-( a+1 )] >= Value_area )
                {
                    shiftup = shiftdn = a;
                    break;
                }
            }
            else
                if ( pocj - a < 1 )
                {
                    if ( poc + total[pocj+a] - total[pocj] + ( total[pocj] - poc ) >= Value_area )
                    {
                        shiftup = a;
                        shiftdn = pocj;
                        break;
                    }
                }
                else
                    if ( pocj + a > relTodayRange )
                    {
                        if ( poc + total[relTodayRange] - total[pocj] + ( total[pocj] - poc ) - total[pocj-( a+1 )] >= Value_area )
                        {
                            shiftup = floor( relTodayRange ) - pocj;
                            shiftdn = a + 1;
                            break;
                        }
                    }
        }
 
 
        //Vah = LineArray( baseX[i], baseY + ( pocj + shiftup ) * den, i, baseY + ( pocj + shiftup ) * den );
        //Val = LineArray( baseX[i], baseY + ( pocj - shiftdn ) * den, i, baseY + ( pocj - shiftdn ) * den );
        //pocline = LineArray( basex, basey + pocj * den, basex[i] + poc, basey + pocj * den );
         
         
         
        if ( ViewVpoc)
        {
            Virginpoc = basey + pocj * den;
            newi = Null;
 
            for ( j = i; j <= ( BarCount - 1 ) ; j++ )
                if ( L[j] < Virginpoc AND H[j] > Virginpoc )
                {
                    newi = j;
                    break;
                }
                else
                    newi = BarCount;
 
            Plot( LineArray( basex[i], hY=basey + pocj*den, newi, hY), "", Color_Virgin_POC, styleNoRescale );
             
             
        }
 
         
 
        if ( ViewYvalues)
        {
           //Vahn = LineArray( i, baseY + ( pocj + shiftup ) * den, i + t, baseY + ( pocj + shiftup ) * den );
           //pocn = LineArray( i, baseY + ( pocj ) * den, i + t, baseY + ( pocj ) * den );
           //Valn = LineArray( i, baseY + ( pocj - shiftdn ) * den, i + t, baseY + ( pocj - shiftdn ) * den );
 
            GfxPlotLine( i, baseY + ( pocj + shiftup ) * den, i + t, baseY + ( pocj + shiftup ) * den, 
                 color_YVAH, 0, PS_DOT);
                  
            GfxPlotLine( i, baseY + ( pocj ) * den, i + t, baseY + ( pocj ) * den, 
                 color_YPOC, 0, PS_DOT);     
                  
            GfxPlotLine(i, baseY + ( pocj - shiftdn ) * den, i + t, baseY + ( pocj - shiftdn ) * den, 
                 color_YVAL, 0, PS_DOT);
                      
            //Plot( Vahn, "", color_YVAH, styleDashed | styleNoRescale );
            //Plot( Valn, "", color_YVAL, styleDashed | styleNoRescale );
            //Plot( pocn, "", color_YPOC, styleDashed | styleNoRescale );
             
             
        }
 
 
        if ( ViewTPO )
        {
            nnn = HHV( H, BarsInDay );
            PlotText( "" + ( total[relTodayRange] - total[pocj] ), basex[i], nnn[i], colorLightGrey );
            PlotText( "" + ( total[pocj-1] ), basex[i], basey - den, colorLightGrey );
        }
 
        if ( Viewvalues)
        {
            PlotText( "" + ( ( basey + pocj*den ) ), baseX[i], basey + pocj*den, colorWhite, colorDarkGrey );
            PlotText( "" + ( ( baseY + ( pocj + shiftup )*den ) ), baseX[i], baseY + ( pocj + shiftup )*den, colorWhite, colorDarkGrey );
            PlotText( "" + ( ( baseY + ( pocj - shiftdn )*den ) ), baseX[i], baseY + ( pocj - shiftdn )*den, colorWhite, colorDarkGrey );
        }
 
        //-- Plot Market Profile
        for ( p = 0; p <= relTodayRange + 1; p = p + multiplier )
        {
            GfxPlotLine( baseX, hY=baseY + p * Den, baseX + x[p], hY, 
                            IIf( p >  ( pocj + shiftup ), Color_Above_VA, 
                            IIf( p <= ( pocj + shiftup ) AND p >= ( pocj - shiftdn ), Color_VA, 
                              Color_Below_VA )), 1, PS_SOLID);
                               
        }
         
        //-- Plot PoC
        GfxPlotLine( baseX, hY = basey + pocj * den, basex[i] + poc, hY, 
                     Color_POC_Line, 1, PS_SOLID);                  
         
                           
         
                      
///////////////////
        basex = 0;
        x = 0;
        Basex = i;
        baseY = Bot[i];
        relTodayRange = Range[i] / Den;
        Voloumeunit = Vol[i] / LastValue( BarsInDay );
 
    }
 
    for ( j = 0; j <= relTodayRange ; j++ )
    {
        if ( L[i] <= Bot[i] + j*Den AND H[i] >= Bot[i] + j*Den  )
        {
 
            if ( Type == "Price Profile" )
            {
                x[j] += x_scale;
            }
            else
                if ( Type == "Volume Profile" )
                {
                    x[j] += round( V[i] / Voloumeunit ) + 1;
                }
 
        }
    }
}
 
 
if ( EnIB )
{
    IBH = HHV( H, IBBars );
    IBL = LLV( L, IBBars );
    Line1 = LineArray( basex, IBH[basex+IBBars-1], i, IBH[basex+IBBars-1] );
    Plot( Line1, "", IBColor, IBstyle );
    Line2 = LineArray( basex, IBL[basex+IBBars-1], i, IBL[basex+IBBars-1] );
    Plot( Line2, "", IBColor, IBstyle );
}
 
//////////////////////////////////
poc = 0;
pocj = 0;
midrange = int( relTodayRange / 2 ) + 1;
 
for ( j = 1; j <= relTodayRange + 1 ; j++ )
{
    if ( poc < x[j] )
    {
        poc = x[j];
        pocj = j;
    }
    else
        if ( poc == x[j] )
        {
            if ( abs( midrange - j ) < abs( midrange - pocj ) )
            {
                poc = x[j];
                pocj = j;
            }
        }
 
}
 
for ( n = 1; n <= relTodayRange; n++ )
    total[n] = x[n] + total[n-1];
 
Value_area = ( total[relTodayRange] * percent ) / 100;
 
 
for ( a = 1; a <= relTodayRange; a++ )
{
    if ( pocj - a > 0 AND pocj + a < relTodayRange )
    {
        if ( poc + total[pocj+a] - total[pocj] + ( total[pocj] - poc ) - total[pocj-( a+1 )] >= Value_area )
        {
            shiftup = shiftdn = a;
            break;
        }
    }
    else
        if ( pocj - a < 1 )
        {
            if ( poc + total[pocj+a] - total[pocj] + ( total[pocj] - poc ) >= Value_area )
            {
                shiftup = a;
                shiftdn = pocj;
                break;
            }
        }
        else
            if ( pocj + a > relTodayRange )
            {
                if ( poc + total[relTodayRange] - total[pocj] + ( total[pocj] - poc ) - total[pocj-( a+1 )] >= Value_area )
                {
                    shiftup = floor( relTodayRange ) - pocj;
                    shiftdn = a + 1;
                    break;
                }
            }
}
 
Vah = LineArray( baseX[i], baseY + ( pocj + shiftup ) * den, i, baseY + ( pocj + shiftup ) * den );
Val = LineArray( baseX[i], baseY + ( pocj - shiftdn ) * den, i, baseY + ( pocj - shiftdn ) * den );
pocline = LineArray( basex, basey + pocj * den, basex[i] + poc, basey + pocj * den );
 
if ( ViewTPO)
{
    PlotText( "" + ( total[relTodayRange] - total[pocj] ), basex[i], top[i], colorLightGrey );
    PlotText( "" + ( total[pocj-1] + x_scale ), basex[i], basey - den, colorLightGrey );
}
 
if ( Viewvalues )
{
    PlotText( "" + ( ( basey + pocj*den ) ), baseX[i], basey + pocj*den, colorWhite, colorDarkGrey );
    PlotText( "" + ( ( baseY + ( pocj + shiftup )*den ) ), baseX[i], baseY + ( pocj + shiftup )*den, colorWhite, colorDarkGrey );
    PlotText( "" + ( ( baseY + ( pocj - shiftdn )*den ) ), baseX[i], baseY + ( pocj - shiftdn )*den, colorWhite, colorDarkGrey );
}
 
 
 
for ( p = 0; p <= relTodayRange + 1; p = p + multiplier )
{
        GfxPlotLine( baseX,        hY=baseY + p * Den, 
                     baseX + x[p], hY, 
                     IIf( p > ( pocj + shiftup ), Color_Above_VA, 
                     IIf( p <= ( pocj + shiftup ) AND p >= ( pocj - shiftdn ), Color_VA, Color_Below_VA )), 1, PS_SOLID);
}
 
 
 
Plot( pocline, "", Color_POC_Line, styleNoRescale | styleNoLabel );
 
_SECTION_END();
Thanks amit for this version !!!

can you drawlines of previous day (VAH,VAL,POC) in todays price chart then it will remove manual drawing of this !!!
 
Status
Not open for further replies.

Similar threads