Volume Profile and Market Profile a new wave of market picture

Status
Not open for further replies.

XRAY27

Well-Known Member
To understand the market perfectly yesterday's Market Profile is very important, especially if you are a day trader, it gives a referral point..just refer the books i recommended adding time factor makes any trading system much more robust !!!

pausing for a while , i'm busy with other works , after few days i will update few more setups ..any ways at night i will answer any queries on the subject discussed so far..Please just don't ask me daily report/s..i showed the way you work on it !!!
 
Last edited:
try this afl
draws the values on todays chart

upload pic

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();
 

wisp

Well-Known Member
try this afl
draws the values on todays chart

upload pic

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();
Hi Ambarish,
Is there anyway to get this to work for the lower versions. Thanks
 

vijayanscbe

Well-Known Member
Try below codes.

Code:
_SECTION_BEGIN("Market Profile");
PlotOHLC(O,H,L,C,"Price",IIf(C>O,colorGreen,colorRed),styleCandle);
function Lastthursday()
{
Daysinmonth=IIf(Month()==1 OR Month()==3 OR Month()==5 OR Month()==7 OR Month()==8 OR Month()==10 OR Month()==12,31,30);
Daysinmonthfeb=IIf(Year()%4 == 0 AND Year()%100!=0,29,28);
Daysinmonthfinal=IIf(Month()==2,Daysinmonthfeb,Daysinmonth);
returnvalue=IIf(Daysinmonthfinal-Day()<7 AND DayOfWeek()==4,1,IIf(Daysinmonthfinal-Day()<8 AND DayOfWeek()==3 AND Ref(DayOfWeek(),1)!=4,1,0));
return returnvalue;
}

FirstVisibleBar = Status( "FirstVisibleBar" );
Lastvisiblebar = Status( "LastVisibleBar" );

totalVisible=Lastvisiblebar-FirstVisibleBar;
//if(totalVisible<1500){

//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|Last thursday|Yearly",1);
x_scale=Param("Horizontal_scale", 2, 0, 10, 0.1);
EnMP2= ParamStyle("Style",styleLine|styleNoLabel,maskAll) ;
styleLines=styleDots;
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);

if(Period=="Hourly"){
BarsInDay = BarsSince(Hour() != Ref(Hour(), -1));Bot = TimeFrameGetPrice("L", inHourly, 0);Top = TimeFrameGetPrice("H", inHourly, 0);Vol = TimeFrameGetPrice("V", inHourly, 0);
}
if(Period=="Daily" ){//OR Interval()==3600
BarsInDay = BarsSince(Day() != Ref(Day(), -1) ) ;Bot = TimeFrameGetPrice("L", inDaily, 0);Top = TimeFrameGetPrice("H", inDaily, 0);Vol = TimeFrameGetPrice("V", inDaily, 0);
}
if(Period=="Weekly" OR Interval()==24 * 3600 ){
BarsInDay = BarsSince(DayOfWeek() < Ref( DayOfWeek(), -1 ));Bot = ValueWhen(Ref(BarsInDay,1)==1 OR BarIndex()>BarCount-2 ,LLV(L,BarsInDay),0);Top =ValueWhen(Ref(BarsInDay,1)==1 OR BarIndex()>BarCount-2,HHV(H,BarsInDay),0);Vol = TimeFrameGetPrice("V", inWeekly, 0);
}
if(Period=="Monthly" ){
BarsInDay = BarsSince(Month() != Ref(Month(), -1));Bot = TimeFrameGetPrice("L", inMonthly, 0);Top = TimeFrameGetPrice("H", inMonthly, 0);Vol = TimeFrameGetPrice("V", inMonthly, 0);
}
if(Period=="Lastthursday" ){
BarsInDay = BarsSince(Lastthursday()==1 AND Ref(Lastthursday(), -1)==0);Bot = ValueWhen(Ref(BarsInDay,1)==1 OR BarIndex()>BarCount-2 ,LLV(L,BarsInDay),0);Top =ValueWhen(Ref(BarsInDay,1)==1 OR BarIndex()>BarCount-2,HHV(H,BarsInDay),0);Vol = ValueWhen(Ref(BarsInDay,1)==1 OR BarIndex()>BarCount-2 ,Sum(V,BarsInDay),0);

}
if(Period=="Yearly" ){
BarsInDay = BarsSince(Year() != Ref(Year(), -1));Bot = TimeFrameGetPrice("L", inYearly, 0);Top = TimeFrameGetPrice("H", inYearly, 0);Vol = TimeFrameGetPrice("V", inYearly, 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<500,1,IIf(round( totalVisible)<1000,2));


multiplier=IIf(round(totalVisible)/300<1,1,round(totalVisible)/300);


if(ViewVlines==1)
{
Plot(BarsInDay==0, "", ParamColor("Base Line Color",colorDarkGrey), styleHistogram | styleOwnScale | styleLine | styleNoLabel);
}


relTodayRange = 0;
x=0;
basey=0;
basex=0;
newday=0;
total=0;
shiftup=0;
shiftdn=0;
Line=Null;
Voloumeunit=0;


for ( i = IIf(FirstVisibleBar-100>1,FirstVisibleBar-100,FirstVisibleBar); i <Lastvisiblebar AND i<BarCount-1 ; i++ )
{
if(BarsInDay[i]==0)
{t=BarsInDay[i-1];




Col=ParamColor("IB Color",colorWhite);
IBstyle=ParamStyle("IB style",styleLine,maskAll);
if(EnIB==1)
{
IBH=HHV(H,IBBars);
IBL=LLV(L,IBBars);
Line1 = LineArray(basex, IBH[basex+IBBars-1],i, IBH[basex+IBBars-1]);
Plot(Line1,"",Col,IBstyle);
Line2 = LineArray(basex, IBL[basex+IBBars-1],i, IBL[basex+IBBars-1]);
Plot(Line2,"",Col,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=a; 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;}
}
}


if(ViewVpoc==1)
{
Virginpoc=basey+pocj*den;
newi=0;
for( j = i+1; j <= (BarCount - 1) ; j++ )
if( L[j] < Virginpoc AND H[j]>Virginpoc )
{newi=j;break;}
else{newi=BarCount;}
Plot(LineArray(basex[i],basey+pocj*den,newi,basey+pocj*den),"",ParamColor ("Virgin Poc Color",colorBlue),styleLine|styleNoRescale);
}

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);


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);

Plot(pocline,"",ParamColor("Color_POC_Line",colorYellow),styleLine|styleNoRescale|styleNoLabel);

if(ViewYvalues==1)
{
Plot(Vahn,"",ParamColor("YVAH",colorWhite),styleDashed|styleNoRescale);
Plot(Valn,"",ParamColor("YVAL",colorWhite),styleDashed|styleNoRescale);
Plot(pocn,"",ParamColor("YPOC",colorYellow),styleDashed|styleNoRescale);

}
//PlotOHLC(Vahn,Vahn,Valn,Valn,"",colorPink,styleClo ud|styleOwnScale);


if(ViewTPO==1)
{
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==1)
{
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)
{
if(P>0){
line = LineArray(baseX, baseY+(p)*Den, baseX+x[p], baseY+(p)*Den);
}
Plot(line,"",IIf(p>(pocj+shiftup),ParamColor("Colo r_Above_VA", colorGrey40),IIf(p<=(pocj+shiftup)AND p>=(pocj-shiftdn),ParamColor("Color_VA", colorBlueGrey),ParamColor("Color_Below_VA", colorGrey40))) , EnMP2);
}




///////////////////

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[j])+x_scale;}
else if(Type=="Volume Profile"){x[j]=x[j]+round(V[i]/Voloumeunit)+1;}

}
}
}

Col=ParamColor("IB Color",colorWhite);
IBstyle=ParamStyle("IB style",styleLine,maskAll);
if(EnIB==1)
{
IBH=HHV(H,IBBars);
IBL=LLV(L,IBBars);
Line1 = LineArray(basex, IBH[basex+IBBars-1],i, IBH[basex+IBBars-1]);
Plot(Line1,"",Col,IBstyle);
Line2 = LineArray(basex, IBL[basex+IBBars-1],i, IBL[basex+IBBars-1]);
Plot(Line2,"",Col,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=a; 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==1)
{
PlotText(""+(total[relTodayRange]-total[pocj]),basex[i],top[i],colorLightGrey);
PlotText(""+(total[pocj-1]+x_scale),basex[i],basey-den,colorLightGrey);
}

if(Viewvalues==1)
{
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)
{
line = LineArray(baseX, baseY+p*Den, baseX+x[p], baseY+p*Den);

Plot(line,"",IIf(p>(pocj+shiftup),ParamColor("Colo r_Above_VA", colorGrey40),IIf(p<=(pocj+shiftup)AND p>=(pocj-shiftdn),ParamColor("Color_VA", colorBlueGrey),ParamColor("Color_Below_VA",colorGrey40))),EnMP2);
Plot(pocline,"",ParamColor("Color_POC_Line",colorYellow),styleLine|styleNoRescale|styleNoLabel);

}

_SECTION_END();

//================================================== =============================

Code:
_SECTION_BEGIN("MPLite");
PlotOHLC(O,H,L,C,"Price",IIf(C>O,colorGreen,colorRed),styleCandle);
function Lastthursday()
{
 Daysinmonth=IIf(Month()==1 OR Month()==3 OR Month()==5 OR Month()==7 OR Month()==8 OR Month()==10 OR Month()==12,31,30);
 Daysinmonthfeb=IIf(Year()%4 == 0 AND Year()%100!=0,29,28);
 Daysinmonthfinal=IIf(Month()==2,Daysinmonthfeb,Daysinmonth);
 returnvalue=IIf(Daysinmonthfinal-Day()<7 AND DayOfWeek()==4,1,IIf(Daysinmonthfinal-Day()<8 AND DayOfWeek()==3 AND Ref(DayOfWeek(),1)!=4 AND Day()!=Daysinmonthfinal ,1,0));
 return returnvalue;
}

FirstVisibleBar = Status( "FirstVisibleBar" );
Lastvisiblebar = Status( "LastVisibleBar" );

totalVisible=Lastvisiblebar-FirstVisibleBar;
//if(totalVisible<1500){

//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);
styleLines=styleDots;
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);

if(Period=="Hourly"){
BarsInDay = BarsSince(Hour() != Ref(Hour(), -1));Bot = TimeFrameGetPrice("L", inHourly, 0);Top = TimeFrameGetPrice("H", inHourly, 0);Vol = TimeFrameGetPrice("V", inHourly, 0);
}
if(Period=="Daily" ){//OR Interval()==3600
BarsInDay = BarsSince(Day() != Ref(Day(), -1) ) ;Bot = TimeFrameGetPrice("L", inDaily, 0);Top = TimeFrameGetPrice("H", inDaily, 0);Vol = TimeFrameGetPrice("V", inDaily, 0);
}
if(Period=="Weekly" OR Interval()==24 * 3600 ){ 
BarsInDay = BarsSince(DayOfWeek() < Ref( DayOfWeek(), -1 ));bot1=ValueWhen(BarsInDay==0,L,1);Bot2 = ValueWhen(Ref(BarsInDay,1)==1 OR BarIndex()>BarCount-2 ,LLV(L,BarsInDay),0);bot=Min(bot1,bot2);top1=ValueWhen(BarsInDay==0,H,1);Top2 =ValueWhen(Ref(BarsInDay,1)==1 OR BarIndex()>BarCount-2,HHV(H,BarsInDay),0);top=Max(top1,top2);Vol = TimeFrameGetPrice("V", inWeekly, 0);
}
if(Period=="Monthly"  ){
BarsInDay = BarsSince(Month() != Ref(Month(), -1));Bot = TimeFrameGetPrice("L", inMonthly, 0);Top = TimeFrameGetPrice("H", inMonthly, 0);Vol = TimeFrameGetPrice("V", inMonthly, 0);
}
if(Period=="Lastthursday"  ){
BarsInDay = BarsSince(Lastthursday()==0 AND Ref(Lastthursday(), -1)==1);bot1=ValueWhen(BarsInDay==0,L,1);Bot2 = ValueWhen(Ref(BarsInDay,1)==1 OR BarIndex()>BarCount-2 ,LLV(L,BarsInDay),0);bot=Min(bot1,bot2);top1=ValueWhen(BarsInDay==0,H,1);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);

}
if(Period=="Yearly"  ){
BarsInDay = BarsSince(Year() != Ref(Year(), -1));Bot = TimeFrameGetPrice("L", inYearly, 0);Top = TimeFrameGetPrice("H", inYearly, 0);Vol = TimeFrameGetPrice("V", inYearly, 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==1)
{
Plot(BarsInDay==0, "", ParamColor("Base Line Color",colorDarkGrey), styleHistogram | styleOwnScale | styleLine | styleNoLabel);
}

relTodayRange = 0;
x=0;
basey=0;
basex=0;
newday=0;
total=0;
shiftup=0;
shiftdn=0;
Line=Null;
Voloumeunit=0;


for (  i = IIf(FirstVisibleBar-100>1,FirstVisibleBar-100,FirstVisibleBar); i <Lastvisiblebar AND i<BarCount-1 ; i++  )
{
	if(BarsInDay[i]==0)
	{t=BarsInDay[i-1];

Col=ParamColor("IB Color",colorWhite);
IBstyle=ParamStyle("IB style",styleLine,maskAll);
if(EnIB==1)
{
IBH=HHV(H,IBBars);
IBL=LLV(L,IBBars);
Line1 = LineArray(basex, IBH[basex+IBBars-1],i, IBH[basex+IBBars-1]);
Plot(Line1,"",Col,IBstyle);
Line2 = LineArray(basex, IBL[basex+IBBars-1],i, IBL[basex+IBBars-1]);
Plot(Line2,"",Col,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=a; 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;}		
   	}
}


if(ViewVpoc==1)
{
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],basey+pocj*den,newi,basey+pocj*den),"",ParamColor("Virgin Poc Color",colorYellow),styleLine|styleNoRescale);
}

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);


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);

Plot(pocline,"",ParamColor("Color_POC_Line",colorYellow),styleLine|styleNoRescale|styleNoLabel);

if(ViewYvalues==1)
{
Plot(Vahn,"",ParamColor("YVAH",colorWhite),styleDashed|styleNoRescale);
Plot(Valn,"",ParamColor("YVAL",colorWhite),styleDashed|styleNoRescale);
Plot(pocn,"",ParamColor("YPOC",colorYellow),styleDashed|styleNoRescale);

}


if(ViewTPO==1)
{
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==1)
{
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)
{
	if(P>0){
	line = LineArray(baseX, baseY+(p)*Den, baseX+x[p], baseY+(p)*Den);
	}
	Plot(line,"",IIf(p>(pocj+shiftup),ParamColor("Color_Above_VA",  colorGrey40),IIf(p<=(pocj+shiftup)AND p>=(pocj-shiftdn),ParamColor("Color_VA", colorBlueGrey),ParamColor("Color_Below_VA",   colorGrey40))) , EnMP2);
}


///////////////////

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[j])+x_scale;}
			else if(Type=="Volume Profile"){x[j]=x[j]+round(V[i]/Voloumeunit)+1;}

		}
	}
}

Col=ParamColor("IB Color",colorWhite);
IBstyle=ParamStyle("IB style",styleLine,maskAll);
if(EnIB==1)
{
IBH=HHV(H,IBBars);
IBL=LLV(L,IBBars);
Line1 = LineArray(basex, IBH[basex+IBBars-1],i, IBH[basex+IBBars-1]);
Plot(Line1,"",Col,IBstyle);
Line2 = LineArray(basex, IBL[basex+IBBars-1],i, IBL[basex+IBBars-1]);
Plot(Line2,"",Col,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=a; 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==1)
{
PlotText(""+(total[relTodayRange]-total[pocj]),basex[i],top[i],colorLightGrey);
PlotText(""+(total[pocj-1]+x_scale),basex[i],basey-den,colorLightGrey);
}

if(Viewvalues==1)
{
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)
{
	line = LineArray(baseX, baseY+p*Den, baseX+x[p], baseY+p*Den);

	Plot(line,"",IIf(p>(pocj+shiftup),ParamColor("Color_Above_VA",  colorGrey40),IIf(p<=(pocj+shiftup)AND p>=(pocj-shiftdn),ParamColor("Color_VA", colorBlueGrey),ParamColor("Color_Below_VA",colorGrey40))),EnMP2);
	Plot(pocline,"",ParamColor("Color_POC_Line",colorYellow),styleLine|styleNoRescale|styleNoLabel);

}

_SECTION_END();
 

XRAY27

Well-Known Member
Two calculation/s are not same !!!

Just check the image above is what i have shared and below is amit's afl...TPO totally different !!!

 

wisp

Well-Known Member
Try below codes.

Code:
_SECTION_BEGIN("Market Profile");
PlotOHLC(O,H,L,C,"Price",IIf(C>O,colorGreen,colorRed),styleCandle);
function Lastthursday()
{
Daysinmonth=IIf(Month()==1 OR Month()==3 OR Month()==5 OR Month()==7 OR Month()==8 OR Month()==10 OR Month()==12,31,30);
Daysinmonthfeb=IIf(Year()%4 == 0 AND Year()%100!=0,29,28);
Daysinmonthfinal=IIf(Month()==2,Daysinmonthfeb,Daysinmonth);
returnvalue=IIf(Daysinmonthfinal-Day()<7 AND DayOfWeek()==4,1,IIf(Daysinmonthfinal-Day()<8 AND DayOfWeek()==3 AND Ref(DayOfWeek(),1)!=4,1,0));
return returnvalue;
}

FirstVisibleBar = Status( "FirstVisibleBar" );
Lastvisiblebar = Status( "LastVisibleBar" );

totalVisible=Lastvisiblebar-FirstVisibleBar;
//if(totalVisible<1500){

//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|Last thursday|Yearly",1);
x_scale=Param("Horizontal_scale", 2, 0, 10, 0.1);
EnMP2= ParamStyle("Style",styleLine|styleNoLabel,maskAll) ;
styleLines=styleDots;
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);

if(Period=="Hourly"){
BarsInDay = BarsSince(Hour() != Ref(Hour(), -1));Bot = TimeFrameGetPrice("L", inHourly, 0);Top = TimeFrameGetPrice("H", inHourly, 0);Vol = TimeFrameGetPrice("V", inHourly, 0);
}
if(Period=="Daily" ){//OR Interval()==3600
BarsInDay = BarsSince(Day() != Ref(Day(), -1) ) ;Bot = TimeFrameGetPrice("L", inDaily, 0);Top = TimeFrameGetPrice("H", inDaily, 0);Vol = TimeFrameGetPrice("V", inDaily, 0);
}
if(Period=="Weekly" OR Interval()==24 * 3600 ){
BarsInDay = BarsSince(DayOfWeek() < Ref( DayOfWeek(), -1 ));Bot = ValueWhen(Ref(BarsInDay,1)==1 OR BarIndex()>BarCount-2 ,LLV(L,BarsInDay),0);Top =ValueWhen(Ref(BarsInDay,1)==1 OR BarIndex()>BarCount-2,HHV(H,BarsInDay),0);Vol = TimeFrameGetPrice("V", inWeekly, 0);
}
if(Period=="Monthly" ){
BarsInDay = BarsSince(Month() != Ref(Month(), -1));Bot = TimeFrameGetPrice("L", inMonthly, 0);Top = TimeFrameGetPrice("H", inMonthly, 0);Vol = TimeFrameGetPrice("V", inMonthly, 0);
}
if(Period=="Lastthursday" ){
BarsInDay = BarsSince(Lastthursday()==1 AND Ref(Lastthursday(), -1)==0);Bot = ValueWhen(Ref(BarsInDay,1)==1 OR BarIndex()>BarCount-2 ,LLV(L,BarsInDay),0);Top =ValueWhen(Ref(BarsInDay,1)==1 OR BarIndex()>BarCount-2,HHV(H,BarsInDay),0);Vol = ValueWhen(Ref(BarsInDay,1)==1 OR BarIndex()>BarCount-2 ,Sum(V,BarsInDay),0);

}
if(Period=="Yearly" ){
BarsInDay = BarsSince(Year() != Ref(Year(), -1));Bot = TimeFrameGetPrice("L", inYearly, 0);Top = TimeFrameGetPrice("H", inYearly, 0);Vol = TimeFrameGetPrice("V", inYearly, 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<500,1,IIf(round( totalVisible)<1000,2));


multiplier=IIf(round(totalVisible)/300<1,1,round(totalVisible)/300);


if(ViewVlines==1)
{
Plot(BarsInDay==0, "", ParamColor("Base Line Color",colorDarkGrey), styleHistogram | styleOwnScale | styleLine | styleNoLabel);
}


relTodayRange = 0;
x=0;
basey=0;
basex=0;
newday=0;
total=0;
shiftup=0;
shiftdn=0;
Line=Null;
Voloumeunit=0;


for ( i = IIf(FirstVisibleBar-100>1,FirstVisibleBar-100,FirstVisibleBar); i <Lastvisiblebar AND i<BarCount-1 ; i++ )
{
if(BarsInDay[i]==0)
{t=BarsInDay[i-1];




Col=ParamColor("IB Color",colorWhite);
IBstyle=ParamStyle("IB style",styleLine,maskAll);
if(EnIB==1)
{
IBH=HHV(H,IBBars);
IBL=LLV(L,IBBars);
Line1 = LineArray(basex, IBH[basex+IBBars-1],i, IBH[basex+IBBars-1]);
Plot(Line1,"",Col,IBstyle);
Line2 = LineArray(basex, IBL[basex+IBBars-1],i, IBL[basex+IBBars-1]);
Plot(Line2,"",Col,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=a; 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;}
}
}


if(ViewVpoc==1)
{
Virginpoc=basey+pocj*den;
newi=0;
for( j = i+1; j <= (BarCount - 1) ; j++ )
if( L[j] < Virginpoc AND H[j]>Virginpoc )
{newi=j;break;}
else{newi=BarCount;}
Plot(LineArray(basex[i],basey+pocj*den,newi,basey+pocj*den),"",ParamColor ("Virgin Poc Color",colorBlue),styleLine|styleNoRescale);
}

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);


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);

Plot(pocline,"",ParamColor("Color_POC_Line",colorYellow),styleLine|styleNoRescale|styleNoLabel);

if(ViewYvalues==1)
{
Plot(Vahn,"",ParamColor("YVAH",colorWhite),styleDashed|styleNoRescale);
Plot(Valn,"",ParamColor("YVAL",colorWhite),styleDashed|styleNoRescale);
Plot(pocn,"",ParamColor("YPOC",colorYellow),styleDashed|styleNoRescale);

}
//PlotOHLC(Vahn,Vahn,Valn,Valn,"",colorPink,styleClo ud|styleOwnScale);


if(ViewTPO==1)
{
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==1)
{
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)
{
if(P>0){
line = LineArray(baseX, baseY+(p)*Den, baseX+x[p], baseY+(p)*Den);
}
Plot(line,"",IIf(p>(pocj+shiftup),ParamColor("Colo r_Above_VA", colorGrey40),IIf(p<=(pocj+shiftup)AND p>=(pocj-shiftdn),ParamColor("Color_VA", colorBlueGrey),ParamColor("Color_Below_VA", colorGrey40))) , EnMP2);
}




///////////////////

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[j])+x_scale;}
else if(Type=="Volume Profile"){x[j]=x[j]+round(V[i]/Voloumeunit)+1;}

}
}
}

Col=ParamColor("IB Color",colorWhite);
IBstyle=ParamStyle("IB style",styleLine,maskAll);
if(EnIB==1)
{
IBH=HHV(H,IBBars);
IBL=LLV(L,IBBars);
Line1 = LineArray(basex, IBH[basex+IBBars-1],i, IBH[basex+IBBars-1]);
Plot(Line1,"",Col,IBstyle);
Line2 = LineArray(basex, IBL[basex+IBBars-1],i, IBL[basex+IBBars-1]);
Plot(Line2,"",Col,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=a; 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==1)
{
PlotText(""+(total[relTodayRange]-total[pocj]),basex[i],top[i],colorLightGrey);
PlotText(""+(total[pocj-1]+x_scale),basex[i],basey-den,colorLightGrey);
}

if(Viewvalues==1)
{
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)
{
line = LineArray(baseX, baseY+p*Den, baseX+x[p], baseY+p*Den);

Plot(line,"",IIf(p>(pocj+shiftup),ParamColor("Colo r_Above_VA", colorGrey40),IIf(p<=(pocj+shiftup)AND p>=(pocj-shiftdn),ParamColor("Color_VA", colorBlueGrey),ParamColor("Color_Below_VA",colorGrey40))),EnMP2);
Plot(pocline,"",ParamColor("Color_POC_Line",colorYellow),styleLine|styleNoRescale|styleNoLabel);

}

_SECTION_END();

//================================================== =============================

Code:
_SECTION_BEGIN("MPLite");
PlotOHLC(O,H,L,C,"Price",IIf(C>O,colorGreen,colorRed),styleCandle);
function Lastthursday()
{
 Daysinmonth=IIf(Month()==1 OR Month()==3 OR Month()==5 OR Month()==7 OR Month()==8 OR Month()==10 OR Month()==12,31,30);
 Daysinmonthfeb=IIf(Year()%4 == 0 AND Year()%100!=0,29,28);
 Daysinmonthfinal=IIf(Month()==2,Daysinmonthfeb,Daysinmonth);
 returnvalue=IIf(Daysinmonthfinal-Day()<7 AND DayOfWeek()==4,1,IIf(Daysinmonthfinal-Day()<8 AND DayOfWeek()==3 AND Ref(DayOfWeek(),1)!=4 AND Day()!=Daysinmonthfinal ,1,0));
 return returnvalue;
}

FirstVisibleBar = Status( "FirstVisibleBar" );
Lastvisiblebar = Status( "LastVisibleBar" );

totalVisible=Lastvisiblebar-FirstVisibleBar;
//if(totalVisible<1500){

//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);
styleLines=styleDots;
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);

if(Period=="Hourly"){
BarsInDay = BarsSince(Hour() != Ref(Hour(), -1));Bot = TimeFrameGetPrice("L", inHourly, 0);Top = TimeFrameGetPrice("H", inHourly, 0);Vol = TimeFrameGetPrice("V", inHourly, 0);
}
if(Period=="Daily" ){//OR Interval()==3600
BarsInDay = BarsSince(Day() != Ref(Day(), -1) ) ;Bot = TimeFrameGetPrice("L", inDaily, 0);Top = TimeFrameGetPrice("H", inDaily, 0);Vol = TimeFrameGetPrice("V", inDaily, 0);
}
if(Period=="Weekly" OR Interval()==24 * 3600 ){ 
BarsInDay = BarsSince(DayOfWeek() < Ref( DayOfWeek(), -1 ));bot1=ValueWhen(BarsInDay==0,L,1);Bot2 = ValueWhen(Ref(BarsInDay,1)==1 OR BarIndex()>BarCount-2 ,LLV(L,BarsInDay),0);bot=Min(bot1,bot2);top1=ValueWhen(BarsInDay==0,H,1);Top2 =ValueWhen(Ref(BarsInDay,1)==1 OR BarIndex()>BarCount-2,HHV(H,BarsInDay),0);top=Max(top1,top2);Vol = TimeFrameGetPrice("V", inWeekly, 0);
}
if(Period=="Monthly"  ){
BarsInDay = BarsSince(Month() != Ref(Month(), -1));Bot = TimeFrameGetPrice("L", inMonthly, 0);Top = TimeFrameGetPrice("H", inMonthly, 0);Vol = TimeFrameGetPrice("V", inMonthly, 0);
}
if(Period=="Lastthursday"  ){
BarsInDay = BarsSince(Lastthursday()==0 AND Ref(Lastthursday(), -1)==1);bot1=ValueWhen(BarsInDay==0,L,1);Bot2 = ValueWhen(Ref(BarsInDay,1)==1 OR BarIndex()>BarCount-2 ,LLV(L,BarsInDay),0);bot=Min(bot1,bot2);top1=ValueWhen(BarsInDay==0,H,1);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);

}
if(Period=="Yearly"  ){
BarsInDay = BarsSince(Year() != Ref(Year(), -1));Bot = TimeFrameGetPrice("L", inYearly, 0);Top = TimeFrameGetPrice("H", inYearly, 0);Vol = TimeFrameGetPrice("V", inYearly, 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==1)
{
Plot(BarsInDay==0, "", ParamColor("Base Line Color",colorDarkGrey), styleHistogram | styleOwnScale | styleLine | styleNoLabel);
}

relTodayRange = 0;
x=0;
basey=0;
basex=0;
newday=0;
total=0;
shiftup=0;
shiftdn=0;
Line=Null;
Voloumeunit=0;


for (  i = IIf(FirstVisibleBar-100>1,FirstVisibleBar-100,FirstVisibleBar); i <Lastvisiblebar AND i<BarCount-1 ; i++  )
{
	if(BarsInDay[i]==0)
	{t=BarsInDay[i-1];

Col=ParamColor("IB Color",colorWhite);
IBstyle=ParamStyle("IB style",styleLine,maskAll);
if(EnIB==1)
{
IBH=HHV(H,IBBars);
IBL=LLV(L,IBBars);
Line1 = LineArray(basex, IBH[basex+IBBars-1],i, IBH[basex+IBBars-1]);
Plot(Line1,"",Col,IBstyle);
Line2 = LineArray(basex, IBL[basex+IBBars-1],i, IBL[basex+IBBars-1]);
Plot(Line2,"",Col,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=a; 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;}		
   	}
}


if(ViewVpoc==1)
{
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],basey+pocj*den,newi,basey+pocj*den),"",ParamColor("Virgin Poc Color",colorYellow),styleLine|styleNoRescale);
}

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);


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);

Plot(pocline,"",ParamColor("Color_POC_Line",colorYellow),styleLine|styleNoRescale|styleNoLabel);

if(ViewYvalues==1)
{
Plot(Vahn,"",ParamColor("YVAH",colorWhite),styleDashed|styleNoRescale);
Plot(Valn,"",ParamColor("YVAL",colorWhite),styleDashed|styleNoRescale);
Plot(pocn,"",ParamColor("YPOC",colorYellow),styleDashed|styleNoRescale);

}


if(ViewTPO==1)
{
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==1)
{
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)
{
	if(P>0){
	line = LineArray(baseX, baseY+(p)*Den, baseX+x[p], baseY+(p)*Den);
	}
	Plot(line,"",IIf(p>(pocj+shiftup),ParamColor("Color_Above_VA",  colorGrey40),IIf(p<=(pocj+shiftup)AND p>=(pocj-shiftdn),ParamColor("Color_VA", colorBlueGrey),ParamColor("Color_Below_VA",   colorGrey40))) , EnMP2);
}


///////////////////

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[j])+x_scale;}
			else if(Type=="Volume Profile"){x[j]=x[j]+round(V[i]/Voloumeunit)+1;}

		}
	}
}

Col=ParamColor("IB Color",colorWhite);
IBstyle=ParamStyle("IB style",styleLine,maskAll);
if(EnIB==1)
{
IBH=HHV(H,IBBars);
IBL=LLV(L,IBBars);
Line1 = LineArray(basex, IBH[basex+IBBars-1],i, IBH[basex+IBBars-1]);
Plot(Line1,"",Col,IBstyle);
Line2 = LineArray(basex, IBL[basex+IBBars-1],i, IBL[basex+IBBars-1]);
Plot(Line2,"",Col,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=a; 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==1)
{
PlotText(""+(total[relTodayRange]-total[pocj]),basex[i],top[i],colorLightGrey);
PlotText(""+(total[pocj-1]+x_scale),basex[i],basey-den,colorLightGrey);
}

if(Viewvalues==1)
{
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)
{
	line = LineArray(baseX, baseY+p*Den, baseX+x[p], baseY+p*Den);

	Plot(line,"",IIf(p>(pocj+shiftup),ParamColor("Color_Above_VA",  colorGrey40),IIf(p<=(pocj+shiftup)AND p>=(pocj-shiftdn),ParamColor("Color_VA", colorBlueGrey),ParamColor("Color_Below_VA",colorGrey40))),EnMP2);
	Plot(pocline,"",ParamColor("Color_POC_Line",colorYellow),styleLine|styleNoRescale|styleNoLabel);

}

_SECTION_END();
it works but the numbers are different as xray bro has said, but it works!! thanks a lot bro.
 

Vipul_84

Well-Known Member
Yes reading all the posts as suggested.
My one query is how many types of days we can have in MP? I guess 4 days : Balanced day which is tight day with perfect bell shape distribution, "P" type imbalanced day, "b" type imbalanced day & "B" type double distribution day.

So can these 4 types summarise MP day type for any given day? Or is there any different type of classification?

yes is the answer !!!

Anyways start from first post and learn the terminology first and then go through previous post and make a report for next plan of action !!!

Post #71 and 79

Bottom line :We are Just adding TIME COMPONENT to our existing system
 
Status
Not open for further replies.

Similar threads