I'm trying to plot yesterday Value Area High and Value Area Low .But Its showing empty value .Its working only last day on chart .How to plot all days I have attached my code please look on it .
_SECTION_BEGIN("Price");
SetChartOptions(0,chartShowArrows|chartShowDates);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
Plot( C, "Close", ParamColor("Color", colorDefault ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
_SECTION_END();
//***************************************
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;
Yes_Vah = 0;
Yes_poc = 0;
Yes_Val = 0;
prevah = 0;
preval = 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 );
}
//////////////////////////////////
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;
}
}
}
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;
}
if ( ViewYvalues)// Yesterday Vah Val
{
Yes_Vah = LineArray( i, baseY + ( pocj + shiftup ) * den, i + t, baseY + ( pocj + shiftup ) * den );
Yes_poc = LineArray( i, baseY + ( pocj ) * den, i + t, baseY + ( pocj ) * den );
Yes_Val = 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 - shiftdn ) * den, i + t, baseY + ( pocj - shiftdn ) * den,
color_YVAL, 0, PS_DOT);
prevah = Yes_Vah;
preval = Yes_Val;
}
if ( ViewTPO )
{
nnn = HHV( H, BarsInDay );
}
///////////////////
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] );
Line2 = LineArray( basex, IBL[basex+IBBars-1], i, IBL[basex+IBBars-1] );
}
//////////////////////////////////
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 );
Plot( Yes_Vah, "", colorBlue, styleDashed | styleNoRescale );
Plot( Yes_Val, "", colorRed, styleDashed | styleNoRescale );
//*************************************************************************************
DT=DateNum();
TM=TimeNum();
d = Day() ;
for( i = 1; i < BarCount; i++ )
{
if( d[i] != d[i-1] )
{
_TRACE("TEST"+" "+DT[i]+" "+Vah[i]+" "+Val[i]+" "+prevah[i]+" "+preval[i]);
}
}