Simple Coding Help - No Promise.

dell

Well-Known Member
Code:
B = Cross(EMA(C,5), EMA(C,20));
S = Cross(EMA(C,20),EMA(C,5) );
B = ExRem(B,S); 	
S = ExRem(S,B);
U = Flip(B,S);
D = Flip(S,B);
BS= U AND L < ValueWhen(B,C)-15;
SS= D AND H > ValueWhen(S,C)+15;
Buy   = B;			
Sell  = S OR BS;
Short = S;
Cover = B OR SS;

Buy=ExRem(Buy,Sell); 	
Sell=ExRem(Sell,Buy);
Short=ExRem(Short,Cover);
Cover=ExRem(Cover,Short);
Happy :)


senior's , where to use which value ?
1=
0=
-1=

we want that previous trigger bar high/low brokes and our filter let say 5 points also breaks than buy trigger . but many times i see that when filter+high cross buy is trigger but if bar close lower than our fiter+high condition than signal diss-appear . so how we should alter it that once the price cross the trigger signal will not change in any condition .....
also plz tell , the use of 1,-1,0 ............is use of 1 here indicate future looking ?
 

amitrandive

Well-Known Member
Dear All
How can I get the following values?
1)Highest High of the last 10 bars(HH10)
2)Highest high of the last 30 bars preceding HH10.
3)A buy signal at the next bar or above HH10.
 

amitrandive

Well-Known Member
You need to learn to code more intelligently/efficiently. Also why keeping code leftovers that are not used anywhere? It just makes code more unreadable.

Code:
_SECTION_BEGIN("Multi Pivots");
//Modified and added extended floor pivots  from ("Multi Pivots -StockManiacs") by fxarun;
// modified by trash

SetChartOptions( 0, chartShowDates | chartShowArrows | chartLogarithmic | chartWrapTitle );
Plot( C, "Close", IIf( C > Ref( C, -1 ), colorWhite , IIf( C < Ref( C, -1 ), colorSkyblue , colorYellow ) ), 64 );

RColor = ParamColor( "Resistance Color", colorOrange );//
SColor = ParamColor( "Support Color", colorBrightGreen );//
PColor = ParamColor( "Pivot Color", colorYellow );//
style = ParamStyle( "Style", 0, maskDefault );

T_F = ParamList( "Pivot T_F", "iDay|Hourly|2_Hrs|3_Hrs|4_Hrs|EOD|Weekly|Monthly" );

switch ( T_F )
{
	case "iDay":
		tmfrm = inDaily;
		delay = -1;
		break;
	case "Hourly":
		tmfrm = inHourly;
		delay = -1;
		break;
	case "2_Hrs":
		tmfrm = inHourly * 2;
		delay = -1;
		break;

	case "3_Hrs":
		tmfrm = inHourly * 3;
		delay = -1;
		break;

	case "4_Hrs":
		tmfrm = inHourly * 4;
		delay = -1;
		break;

	case "EOD":
		tmfrm = inDaily;
		delay = 0;
		break;

	case "Weekly":
		tmfrm = inWeekly;
		delay = -1;
		break;

	case "Monthly":
		tmfrm = inMonthly;
		delay = -1;
		break;

	default:
		break;
}

H_1 = TimeFrameGetPrice( "H", tmfrm, -delay );
L_1 = TimeFrameGetPrice( "L", tmfrm, -delay );
C_1 = TimeFrameGetPrice( "C", tmfrm, -delay );
O_1 = TimeFrameGetPrice( "O", tmfrm );


// To calculate the Pivot Levels
R = H_1 - L_1; // Range
_N(Pivot =ParamList("Pivot Type ", "Classical|Woodies|Fibonacci|WF|FloorPivots"));

switch ( Pivot )
{
	case "Classical":
		PP = ( H_1 + L_1 + C_1 ) / 3;
		r1 = ( 2 * PP ) - L_1 ;
		s1 = ( 2 * PP ) - H_1 ;
		r2 = PP - s1 + r1;
		s2 = PP - ( r1 - s1 ) ;
		r3 = 2 * ( PP - L_1 ) + H_1 ;
		s3 = L_1 - ( 2 * ( H_1 - PP ) );
		r4 = Null;
		s4 = Null;
		bc = Null;
		tc = Null;
		break;

	case "Woodies":
		PP = ( H_1 + L_1 + C_1 + O_1 ) / 4;
		r1 = ( 2 * PP ) - L_1;
		r2 = PP + R;
		r3 = H_1 + 2 * ( PP - L_1 );
		r4 = r3 + R;
		s1 = ( 2 * PP ) - H_1;
		s2 = PP - R;
		s3 = L_1 - 2 * ( H_1 - PP );
		s4 = S3 - R;
		bc = Null;
		tc = Null;
		break;

	case "Fibonacci":
		PP = ( H_1 + L_1 + C_1 ) / 3;
		r3 = PP + 1.000 * R;
		r2 = PP + 0.618 * R;
		r1 = PP + 0.382 * R;
		s1 = PP - 0.382 * R;
		s2 = PP - 0.618 * R;
		s3 = PP - 1.000 * R;
		r4 = Null;
		s4 = Null;
		bc = Null;
		tc = Null;
		break;

	case Pivot == "WF":
		PP = ( H_1 + L_1 + O_1 + O_1 ) / 4;
		s1 = PP - ( R * 0.38 );
		s2 = PP - ( R * 0.62 );
		s3 = PP - ( R * 1.272 );
		r1 = PP + ( R * 0.38 );
		r2 = PP + ( R * 0.62 );
		r3 = PP + ( R * 1.272 );
		r4 = Null;
		s4 = Null;
		bc = Null;
		tc = Null;
		break;

	case Pivot == "FloorPivots":
		PP = ( H_1 + L_1 + C_1 ) / 3;
		r1 = ( 2 * PP ) - L_1  ;
		s1 = ( 2 * PP ) - H_1;
		r2 = PP + R;
		s2 = PP - R;
		r3 = R1 + R;
		s3 = S1 - R;
		r4 = R3 + ( R2 - R1 );
		s4 = S3 - ( S1 - S2 );
		bc = ( H_1 + L_1 ) / 2;
		tc = ( PP - bc ) + PP;
		break;

	default:
		break;
}

// Plot Pivot Levels in the charts
Plot ( PP, "PP", Pcolor, style );
Plot ( r1, "R1", Rcolor, style );
Plot ( r2, "R2", Rcolor, style );
Plot ( r3, "R3", Rcolor, style );
Plot ( s1, "S1", Scolor, style );
Plot ( s2, "S2", Scolor, style );
Plot ( s3, "S3", Scolor, style );
Plot ( r4, "R4", Rcolor, style );
Plot ( s4, "S4", Scolor, style );
Plot ( tc, "TC", colorWhite, style );
Plot ( bc, "BC", colorWhite, style );
_SECTION_END();
Works well for all the other pivot types.
It shows the following error for WF and Floor Pivots.
Please advise.
 

amitrandive

Well-Known Member
Nehal ji
Pls solve my problem to find out pivot at 10 am not 11.30 pm of past day
It seems this code plots pivots considering the close time of the market.
For equity market which closes at 15:30 , the hourly pivot for the next day continues till 9:30 and the new line starts after 9:30.

Similarly for commodity market which closes at 23:30,the hourly pivot for the next day continues till 11:30 and the new line starts after 11:30.

Need to redefine the hourly start time in order to change the hourly plot time

Experts please advise on this.
 

Nehal_s143

Well-Known Member
Dear All
How can I get the following values?
1)Highest High of the last 10 bars(HH10)
2)Highest high of the last 30 bars preceding HH10.
3)A buy signal at the next bar or above HH10.
I have afl which shows highest high of last 7 days, check if this can be useful after modification

Code:
_SECTION_BEGIN("7D Pivot Range");
Plot( C, "Close", ParamColor("Color", colorLavender ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
snTDC=TimeFrameGetPrice( "C", inDaily, -1);
sndh1=TimeFrameGetPrice( "H", inDaily, -1);
sndh2=TimeFrameGetPrice( "H", inDaily, -2);
sndh3=TimeFrameGetPrice( "H", inDaily, -3);
sndh4=TimeFrameGetPrice( "H", inDaily, -4);
sndh5=TimeFrameGetPrice( "H", inDaily, -5);
sndh6=TimeFrameGetPrice( "H", inDaily, -6);
sndh7=TimeFrameGetPrice( "H", inDaily, -7);
sndh8=TimeFrameGetPrice( "H", inDaily, -7);
sndl1=TimeFrameGetPrice( "l", inDaily, -1);
sndl2=TimeFrameGetPrice( "l", inDaily, -2);
sndl3=TimeFrameGetPrice( "l", inDaily, -3);
sndl4=TimeFrameGetPrice( "l", inDaily, -4);
sndl5=TimeFrameGetPrice( "l", inDaily, -5);
sndl6=TimeFrameGetPrice( "l", inDaily, -6);
sndl7=TimeFrameGetPrice( "l", inDaily, -7);
sndl8=TimeFrameGetPrice( "l", inDaily, -7);

snMaxh1=Max(sndh1,sndh2);
snMaxh2=Max(sndh3,sndh4);
snMaxh3=Max(sndh5,sndh6);
snMaxh4=Max(sndh7,sndh8);

snMaxh=Max(Max(snMaxh1,snMaxh2), Max(snMaxh3,snMaxh4));


snMinl1=Min(sndl1,sndl2);
snMinl2=Min(sndl3,sndl4);
snMinl3=Min(sndl5,sndl6);
snMinl4=Min(sndl7,sndl8);

snMinl=Min(Min(snMinl1,snMinl2), Min(snMinl3,snMinl4));

snTDPP = (snMaxh + snMinl + snTDC)/3;
snPP2 = (snMaxh + snMinl)/2;
snDif  = abs(snTDPP-snPP2);
snPPU = snTDPP + snDif;
snPPL = snTDPP - snDif;

Plot (snTDPP,"",colorYellow,1);
Plot(snPPU, "",colorYellow,styleDashed);
Plot(snPPL, "",colorYellow,styleDashed);


Title = EncodeColor(colorWhite)+ "" + "" + Name() + " - " + EncodeColor(colorRed)+ Interval(2) + EncodeColor(colorWhite) +
" - " + Date() +" - "+"\n" +EncodeColor(colorBlue) +"Op-"+O+" "+"Hi-"+H+" "+"Lo-"+L+" "+
"Cl-"+C+" "+ "Vol= "+ WriteVal(V)+" 3dh= "+WriteVal(snMaxh)+" 3dL= "+WriteVal(snMinl);

_SECTION_END();
 

cellclinic

Well-Known Member
Thanks Kelvin for understanding & appreciating my excellent knowledge & for your help :p

Kindly check foirst code is giving these errors .





1st code suppose required you to search to the location to modified it.
Due to your excellent knowledge towards afl coding, here is :

PHP:
_SECTION_BEGIN("MarketProfile");
//------------------------------------------------------------------------------
//
//  Formula Name:    Market Profile 
//
// Use with 5/15min chart
// Originial - From AFL library
// Edited by - Milind / KAKA

//Market Profile 9/12/2009
SetChartOptions(0,chartShowArrows|chartShowDates);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));

PlotOHLC(O,H,L,C,"Price",IIf(C>O,colorGreen,colorRed),styleCandle);

EnMP2= ParamList("MarketProfile","Solid|Lines|Letters");
styleLines = ParamStyle("Style", styleLine, maskAll);

Type=ParamList("Type","Price Profile|Volume Profile");
Period= ParamList("Base","Hourly|Daily|Weekly|Monthly",1);


Den = Param("Density", 1, 0.25, 100, 0.25); // Resolution in terms of $
percent=Param("Value Area", 70, 1, 100, 1);
ViewTPOCount= ParamToggle("Show TPO Count", "No|Yes",1);
ViewPOC = ParamToggle("Show POC", "No|Yes",1);
ViewVALVAH = ParamToggle("Show VAL VAH Line", "No|Yes",1);
Viewfill = ParamToggle("Show VA Fill", "No|Yes",1);
Colorpoc=ParamColor("Color POC", colorYellow);
Colorfill=ParamColor("Color Fill", ColorRGB(20,40,60));


EnIB = ParamToggle("Show Initial Balance", "Yes|No");
IBBars = Param("Initial Balance Bars", 2, 0, 10, 1);

if(Period=="Daily")
{
	BarsInDay = BarsSince(Day() != Ref(Day(), -1));
	Bot = TimeFrameGetPrice("L", inDaily, 0);
	Top = TimeFrameGetPrice("H", inDaily, 0);
	Vol = TimeFrameGetPrice("V", inDaily, 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=="Weekly")
{
	BarsInDay = BarsSince(DayOfWeek() < Ref( DayOfWeek(), -1 ));
	Bot = TimeFrameGetPrice("L", inWeekly, 0);
	Top = TimeFrameGetPrice("H", inWeekly, 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);
}

CurTop = HHV(H,BarsInDay+1);
Curbot = LLV(L,BarsInDay+1);
Range = Highest(Top-Bot);
TodayRange = Top - Bot;

AveRange = Sum(Top-Bot,30)/30;
LAveRange = AveRange[BarCount-1];

// Initialization
baseX = 0;
baseY = floor(Bot[0]/Den)*Den;
relTodayRange = 0;
firstVisBar = Status("firstvisiblebar");
lastVisBar = Status("lastvisiblebar");

D=.0005;
total=0;
totaldn=0;
totalup=0;
shiftup=0;
shiftdn=0;
startr=0;

x=0;
//for (j=0; j <= 100; j++) x[j] = 0;

i0 = 0;
for (i=BarCount-1; i>0; i--) 
{
  x_s(i, 0); // should not need this
  if (BarsInDay[i] ==0 AND i<firstVisBar)
  { 
    i0 = i;
    break; 
  }  
}

i1 = BarCount-1;
for (i=i0; i<=i1; i++) 
{
  if (BarsInDay[i] == 0) 
  {
    baseX = i;
    baseY = floor(Bot[i]/Den)*Den;
    maxY = floor(Top[i]/Den)*Den;
    relTodayRange = (maxY-baseY)/Den;

    for (j=0; j <= relTodayRange; j++) 
      x[j] = 0;
    
  }
	
	range_x=lastVisBar-firstVisBar;
	spread = Param("X Space", 80, 1, 200, 1);
	tpl = Param("Time Per Letter (mins)", 30, 1, 360, 1);
	Intervalmin=Interval()/60;
	flt =Param("First Letter (Bars)", 1, 1, 60, 1);
	teb=ParamToggle("To Each Bar","No|Yes");
	Color=Param("Color Threshold",20,1,50,1);
	stopg=0;
	stopr=0;
	new=0;
	
	Voloumeunit=Vol[i]/LastValue(BarsInDay);


  if (EnMP2 == "Letters") 
  {
    for (j=0; j<= relTodayRange; j++) 
    {
      if (L[i] <= baseY+j*Den AND H[i] >= baseY+j*Den) 
      {
		PlotText(StrExtract(" A , B , C , D , E , F , G , H ,  I  , J , K , L , M , N , O , P , Q , R , S , T , U , V , W , X , Y , Z, a , b , c , d , e , f , g , h , i , j , k , L , m , n ,o , p , q , r , s , t , u , v , w , x , y , z ",
		IIf(BarsInDay[i]<flt,0,ceil(BarsInDay[i]/(tpl/Intervalmin))-0)), baseX+IIf(teb==1,BarsInDay[i],x[j]*(range_x/spread)), baseY+j*Den, 
		colorWhite,ColorHSB(10+((ceil(BarsInDay[i]/(tpl/Intervalmin)))*Color),160,140));
       x[j]++;

      }
    }
  }
  else 
  if (EnMP2 == "Lines" OR EnMP2 == "Solid") 
  {
    for (j=0; j<= relTodayRange; j++) 
    {
		if (L[i] <= baseY+j*Den AND H[i] >= baseY+j*Den) 
		{
			if(Type=="Price Profile")
				x[j]=x[j]+1;
			else 
			if(Type=="Volume Profile")
				x[j]=x[j]+round(V[i]/Voloumeunit);
 	    }
    }
  }  

  // Draw Initial Balance after 11am bar is complete
  if (BarsInDay[i] == IBBars+1 AND EnIB == 0) 
  {
    Line1 = LineArray(i-2, curtop[i-1],i+7, curtop[i-1],0,True);
    Plot(Line1,"",colorLightGrey,styleLine+styleDashed|styleNoRescale);
    Line1 = LineArray(i-2, curbot[i-1],i+7, curbot[i-1],0,True);
    Plot(Line1,"",colorLightGrey,styleLine+styleDashed|styleNoRescale);
  }

  // Examine x[j]
  if ((i < BarCount - 1 AND BarsInDay[i+1] == 0) OR i == BarCount-1) 
  {
    maxXj = 0;
	maxj = 1;  //bug
    for (j=0; j<= relTodayRange; j++) 
    {
      if (maxXj < x[j]) 
      {
		maxXj = x[j]; 
		maxj = j; 
		//StaticVarSet("Maxj",j); 
		new=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(Maxj-a>0 AND Maxj+a<relTodayRange)
			if(MaxXj+total[Maxj+a]-total[Maxj]+total[Maxj-1]-total[Maxj-(a+1)]>=Value_area) 
			{
				shiftup=a; 
				shiftdn=a; 
				break;
			}
			else if(Maxj-a<1 ) 
			{
				if(MaxXj+total[Maxj+a]-total[Maxj]+total[Maxj-1]>=Value_area)
				{
					shiftup=a; 
					shiftdn=maxj-1; 
					break;
				}		
			}
			else if(Maxj+a>relTodayRange ) 
			{
				if(MaxXj+total[relTodayRange]-total[Maxj]+total[Maxj-1]-total[Maxj-(a+1)] >=Value_area)
				{
					shiftup=relTodayRange-maxj; 
					shiftdn=a; 
					break;
				}		
			}
	 }

	Vah = LineArray(baseX, baseY+(maxj+shiftup)*Den, i, baseY+(maxj+shiftup)*Den,0,True);
	Val = LineArray(baseX, baseY+(maxj-shiftdn)*Den, i, baseY+(maxj-shiftdn)*Den,0,True);
	poc = LineArray(baseX, baseY+maxj*Den, i, baseY+maxj*Den,0,True);
	
	if(ViewVALVAH==1)
	{
		Plot(Vah,"",ParamColor("Color_VA",  colorLightBlue),styleLine|styleNoRescale);
		Plot(Val,"",ParamColor("Color_VA",  colorLightBlue),styleLine|styleNoRescale);}
		if(ViewPOC==1)
			Plot(poc,"",Colorpoc,styleLine|styleNoRescale);
			
		PlotText(""+(baseY+(maxj+shiftup)*Den),i-5,baseY+(maxj+shiftup)*Den,colorWhite);
		PlotText(""+(baseY+(maxj-shiftdn)*Den),i-5,baseY+(maxj-shiftdn)*Den,colorWhite);
		if(ViewTPOCount==1)
		{
		   
			PlotText(""+total[maxj-1],basex,bot[i]-(Top[i]-bot[i])*0.05,ParamColor("Color_VAL", colorLavender));
			PlotText(""+(total[relTodayRange]-total[maxj]),basex,Top[i],ParamColor("Color_VAH", colorLavender));}
			if(ViewPOC==1){PlotText(""+(baseY+maxj*Den),i-5,baseY+maxj*Den,Colorpoc);}
		}
	
		if (i < BarCount - 1 AND BarsInDay[i+1] == 0 OR i == BarCount-1) {
	
		for  (p = 1; p < relTodayRange+1; p++)
		{
			line = LineArray(baseX, baseY+p*Den, baseX+x[p], baseY+p*Den);
			line2 = LineArray(baseX, baseY+(p-1)*Den, baseX+x[p-1], baseY+(p-1)*Den);

			if (EnMP2 == "Solid")
				PlotOHLC( Line,  Line,  Line2, Line2, "",IIf(p>(maxj+shiftup),ParamColor("Color_VAH",  colorLavender),IIf(p<=(maxj+shiftup)AND p>(maxj-shiftdn),ParamColor("Color_VA", colorLightBlue),ParamColor("Color_VAL", colorLavender))) ,styleCloud|styleNoRescale|styleNoLabel);
			
			if (EnMP2 == "Lines") 
				Plot(line,"",IIf(p>(maxj+shiftup),ParamColor("Color_VAH", colorLavender),IIf(p<=(maxj+shiftup)AND p>(maxj-shiftdn),ParamColor("Color_VA", colorLightBlue),ParamColor("Color_VAL",  colorLavender))) , styleLines|styleNoLabel);	
		}
		
		if(Viewfill==1)
			PlotOHLC(Vah,Vah,Val,Val,"",Colorfill,styleCloud|styleNoRescale|styleNoLabel);
	} 
}


_SECTION_END();

2nd Code is to _TRACE("How many Plot()/PlotOHLC()") into the logwindow.
PHP:
_SECTION_BEGIN("MarketProfile");
//------------------------------------------------------------------------------
//
//  Formula Name:    Market Profile 
//
// Use with 5/15min chart
// Originial - From AFL library
// Edited by - Milind / KAKA

//Market Profile 10/12/2009


//------------------------------------------------------------------------------
// This is a modified version of afl date 09/19/2009 as listed above
// Contains a couple changes:
// 1) a more correct (but not complete) calculation of POC.
// 2) attempt to avoid the out of bound runtime error that
//    sometimes occurs. See below:
//
// Here are changes to emulate the arrays x[] and total[] so
// that the array size are not limited by Barcount.
// Now one probably should not get the out of bound error even
// if the density or ticksize is smaller. Of course, there will
// be more overhead in calculation.
// johncw 20091010
// Wrapper start
_N(VarKey = NumToStr(GetChartID(), 1.0, False) + "_");
_N(VarTotal = "V_T" + VarKey);
_N(VarX = "V_x" + VarKey);

nPlot=0;
nPlotOHLC=0;
function L_StaticVarSet(L_name, L_value)
{
	local L_name, L_value;
	StaticVarSet(L_name + VarKey, L_value); 
}

function L_StaticVarGet(L_name)
{
	local L_name;
	return(StaticVarGet(L_name + VarKey));
}

function x_g(L_idx)
{
	local L_idx;
	return VarGet(VarX + L_idx);
}

function x_s(L_idx, L_value)
{
	local L_idx, L_value;
	VarSet(VarX + L_idx, L_value);
}

function total_g(L_idx)
{
	local L_idx;
	return VarGet(VarTotal+L_idx);
}

function total_s(L_idx, L_value)
{
	local L_idx, L_value, L_name;
	VarSet(VarTotal+L_idx, L_value);
}
// Wrapper end
//------------------------------------------------------------------------------

SetChartOptions(0,chartShowArrows|chartShowDates);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));

PlotOHLC(O,H,L,C,"Price",IIf(C>O,colorGreen,colorRed),styleCandle); nPlotOHLC++;


EnMP2= ParamList("MarketProfile","Solid|Lines|Letters");
styleLines = ParamStyle("Style", styleLine, maskAll);

Type=ParamList("Type","Price Profile|Volume Profile");
Period= ParamList("Base","Hourly|Daily|Weekly|Monthly",0);

Den = Param("Density", 1, 0.25, 100, 0.25); // Resolution in terms of $
percent=Param("Value Area", 70, 1, 100, 1);
ViewTPOCount= ParamToggle("Show TPO Count", "No|Yes",1);
Viewvalues= ParamToggle("Show Values", "No|Yes",1);

ViewPREVIOUS = ParamToggle("Previous Values", "No|Yes",1);

ViewVALVAH = ParamToggle("Show VAL VAH Line", "No|Yes",1);
Viewfill = ParamToggle("Show VA Fill", "No|Yes",0);
Colorpoc=ParamColor("Color POC", colorYellow);
Colorfill=ParamColor("Color Fill", ColorRGB(20,40,60));


EnIB = ParamToggle("Show Initial Balance", "Yes|No");
IBBars = Param("Initial Balance Bars", 2, 0, 10, 1);

if(Period=="Daily"){
BarsInDay = BarsSince(Day() != Ref(Day(), -1));
Bot = TimeFrameGetPrice("L", inDaily, 0);
Top = TimeFrameGetPrice("H", inDaily, 0);
Vol = TimeFrameGetPrice("V", inDaily, 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=="Weekly"){
BarsInDay = BarsSince(DayOfWeek() < Ref( DayOfWeek(), -1 ));
Bot = TimeFrameGetPrice("L", inWeekly, 0);
Top = TimeFrameGetPrice("H", inWeekly, 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);
}

CurTop = HHV(H,BarsInDay+1);
Curbot = LLV(L,BarsInDay+1);
Range = Highest(Top-Bot);
TodayRange = Top - Bot;

AveRange = Sum(Top-Bot,30)/30;
LAveRange = AveRange[BarCount-1];

// Initialization
baseX = 0;
baseY = floor(Bot[0]/Den)*Den;
relTodayRange = 0;
firstVisBar = Status("firstvisiblebar");
lastVisBar = Status("lastvisiblebar");


_TRACE("firstVisBar = " + NumToStr(firstVisBar, 1.0)+  ", lastVisBar = " + NumToStr(lastVisBar, 1.0) );
D=.0005;
//total=0;
totaldn=0;
totalup=0;
shiftup=0;
shiftdn=0;
startr=0;

i0 = 0;
i0 = 0;
for (i=BarCount-1; i>0; i--) 
{
  x_s(i, 0); // should not need this
  if (BarsInDay[i] ==0 AND i<firstVisBar)
  { 
    i0 = i;
    break; 
  }  
}

i1 = BarCount-1;
for (i=i0; i<=i1; i++) {
  if (BarsInDay[i] == 0) {
    baseX = i;
    baseY = floor(Bot[i]/Den)*Den;
    maxY = floor(Top[i]/Den)*Den;
    relTodayRange = (maxY-baseY)/Den;

    for (j=0; j <= relTodayRange; j++) {
		x_s(j, 0);
		
    }
  }
	
	range_x=lastVisBar-firstVisBar;
	spread = Param("X Space", 80, 1, 200, 1);
	tpl = Param("Time Per Letter (mins)", 30, 1, 360, 1);
	Intervalmin=Interval()/60;
	flt =Param("First Letter (Bars)", 1, 1, 60, 1);
	teb=ParamToggle("To Each Bar","No|Yes");
	Color=Param("Color Threshold",20,1,50,1);
	stopg=0;
	stopr=0;
	new=0;
	
	Voloumeunit=Vol[i]/LastValue(BarsInDay);

 if (EnMP2 == "Letters") {
    for (j=0; j<= relTodayRange; j++) {
      if (L[i] <= baseY+j*Den AND H[i] >= baseY+j*Den) {
		PlotText(StrExtract(" A , B , C , D , E , F , G , H ,  I  , J , K , L , M , N , O , P , Q , R , S , T , U , V , W , X , Y , Z, a , b , c , d , e , f , g , h , i , j , k , L , m , n ,o , p , q , r , s , t , u , v , w , x , y , z ",
		IIf(BarsInDay[i]<flt,0,ceil(BarsInDay[i]/(tpl/Intervalmin))-0)), baseX+IIf(teb==1,BarsInDay[i],x_g(j)*(range_x/spread)), baseY+j*Den, 
		colorWhite,ColorHSB(10+((ceil(BarsInDay[i]/(tpl/Intervalmin)))*Color),160,140));
		x_s(j, x_g(j)+1);

      }
    }
  }
	
  else if (EnMP2 == "Lines" OR EnMP2 == "Solid") {
    for (j=0; j<= relTodayRange; j++) {
     if (L[i] <= baseY+j*Den AND H[i] >= baseY+j*Den) {
		if(Type=="Price Profile"){x_s(j, x_g(j)+1);}
		else if(Type=="Volume Profile"){x_s(j, x_g(j)+round(V[i]/Voloumeunit));}
 	
	   }
    }
  }  

  // Draw Initial Balance after 11am bar is complete
  if (BarsInDay[i] == IBBars+1 AND EnIB == 0) {
    LX=Line1 = LineArray(i-2, curtop[i-1],i+7, curtop[i-1],0,True);
    Plot(Line1,"",colorLightGrey,styleLine+styleDashed|styleNoRescale); nPlot++;
    LY=Line1 = LineArray(i-2, curbot[i-1],i+7, curbot[i-1],0,True);
    Plot(Line1,"",colorLightGrey,styleLine+styleDashed|styleNoRescale); nPlot++; 
    PlotOHLC(LX,LX,LY,LY,"",colorCustom13,styleCloud,styleNoLabel);     nPlotOHLC++;

  }

  // Examine x[j]
  if ((i < BarCount - 1 AND BarsInDay[i+1] == 0) OR i == BarCount-1) {
    maxXj = 0;
	maxj = 0;
	midrange = int(relTodayRange/2)+1;
    for (j=0; j<= relTodayRange; j++) {
      if (maxXj < x_g(j)) {
			maxXj = x_g(j); maxj = j; L_StaticVarSet("Maxj",j); new=j;
	  } else if ( MaxXj == x_g(j)) {
			if (abs(midrange-j)  < abs(midrange-L_StaticVarGet("Maxj"))) {
				maxXj = x_g(j); maxj = j; L_StaticVarSet("Maxj",j); new=j;
			}
	  }
    }
	total_s(0, 0);
	for ( n = 1; n <= relTodayRange; n++ ) {
		total_s(n, x_g(n) + total_g(n-1));
        }

	Value_area=(total_g(relTodayRange)*percent)/100;

	for ( a = 1; a <= relTodayRange; a++ )
	 {
		if(Maxj-a>0 AND Maxj+a<relTodayRange)
		{
			if(MaxXj+total_g(Maxj+a)-total_g(Maxj)+(total_g(maxj)-MaxXj)-total_g(Maxj-(a+1))>=Value_area) {shiftup=a; shiftdn=a; break;}
	 	}	
		else if(Maxj-a<1 ) 
		{
			if(MaxXj+total_g(Maxj+a)-total_g(Maxj)+(total_g(maxj)-MaxXj)>=Value_area){shiftup=a; shiftdn=maxj-1; break;}		
   		}
		else if(Maxj+a>relTodayRange ) 
		{
			if(MaxXj+total_g(relTodayRange)-total_g(Maxj)+(total_g(maxj)-MaxXj)-total_g(Maxj-(a+1)) >=Value_area){shiftup=relTodayRange-maxj; shiftdn=a; break;}		
   		}
	 }

	Vah = LineArray(baseX, baseY+(maxj+shiftup)*Den, i, baseY+(maxj+shiftup)*Den,0,True);
	Val = LineArray(baseX, baseY+(maxj-shiftdn)*Den, i, baseY+(maxj-shiftdn)*Den,0,True);
	Vah1 = LineArray(i, baseY+(maxj+shiftup)*Den, i+BarsInDay[i], baseY+(maxj+shiftup)*Den,0,True);
	Val1 = LineArray(i, baseY+(maxj-shiftdn)*Den, i+BarsInDay[i], baseY+(maxj-shiftdn)*Den,0,True);
	poc = LineArray(baseX, baseY+maxj*Den, i, baseY+maxj*Den,0,True);
	poc1 = LineArray(i, baseY+maxj*Den, i+BarsInDay[i], baseY+maxj*Den,0,True);


	clrVAH=ParamColor("Color_VA",  colorBlueGrey);
	clrVAL=ParamColor("Color_VA",  colorLightBlue);
	
	if(ViewVALVAH==1)
	{
		Plot(Vah,"",clrVah,styleLine|styleNoRescale);	nPlot++;
		Plot(Val,"",clrVal,styleLine|styleNoRescale);   nPlot++;
		Plot(poc,"",Colorpoc,styleLine|styleNoRescale); nPlot++;
		
		_TRACE("ViewVALVAH: nPlot = "+NumToStr(nPlot, 0)+ ", nPlotOHLC = " + NumToStr(nPlotOHLC, 0)+ ", So Total Plots = "+ NumToStr(nPlot+nPlotOHLC, 0));
	}
	if(ViewPREVIOUS==1)
	{
		Plot(Vah1,"",clrVah,styleDashed|styleNoRescale);  nPlot++;
		Plot(Val1,"",clrVal,styleDashed|styleNoRescale);  nPlot++;
		Plot(poc1,"",Colorpoc,styleDashed|styleNoRescale); nPlot++;
		_TRACE("ViewPREVIOUS: nPlot = "+NumToStr(nPlot, 0)+ "& nPlotOHLC = " + NumToStr(nPlotOHLC, 0)+ ", So Total Plots = "+ NumToStr(nPlot+nPlotOHLC, 0));
	}

    	

	if(Viewvalues==1)
	{
	PlotText(""+(baseY+maxj*Den),i-5,baseY+maxj*Den,Colorpoc);
	PlotText(""+(baseY+(maxj+shiftup)*Den),i-5,baseY+(maxj+shiftup)*Den,colorWhite);
	PlotText(""+(baseY+(maxj-shiftdn)*Den),i-5,baseY+(maxj-shiftdn)*Den,colorWhite);
	if(ViewTPOCount==1){PlotText(""+(total_g(maxj)-MaxXj)+" / "+(total_g(maxj-shiftdn-1)),basex,bot[i]-(Top[i]-bot[i])*0.05,ParamColor("Color_Below_VA",  colorGrey40));
	PlotText(""+(total_g(relTodayRange)-total_g(maxj))+" / "+(total_g(relTodayRange)-total_g(maxj+shiftup)),basex,Top[i],ParamColor("Color_Above_VA", colorGrey40));
	}



	}
	
  }
	
	if (i < BarCount - 1 AND BarsInDay[i+1] == 0 OR i == BarCount-1) {
	
	  for  (p = 1; p < relTodayRange+1; p++){
	  line = LineArray(baseX, baseY+p*Den, baseX+x_g(p), baseY+p*Den);
	  line2 = LineArray(baseX, baseY+(p-1)*Den, baseX+x_g(p-1), baseY+(p-1)*Den);

      if (EnMP2 == "Solid")
	  {
	  PlotOHLC( Line,  Line,  Line2, Line2, "",
		IIf(p>(maxj+shiftup),ParamColor("Color_Above_VA",   colorGrey40),
		IIf(p<=(maxj+shiftup)AND p>(maxj-shiftdn),ParamColor("Color_VA", colorBlueGrey),ParamColor("Color_Below_VA",  colorGrey40))) ,
			styleCloud|styleNoRescale|styleNoLabel);   nPlotOHLC++;
		
	  
	  }
	  if (EnMP2 == "Lines") 
	  {
		Plot(line,"",IIf(p>(maxj+shiftup),ParamColor("Color_Above_VA",  colorGrey40),
			IIf(p<=(maxj+shiftup)AND p>(maxj-shiftdn),ParamColor("Color_VA", colorBlueGrey),ParamColor("Color_Below_VA",   colorGrey40))) , styleLines|styleNoLabel); nPlot++;
     
     }
 	
   }
	 if(Viewfill==1)
	 {
	  PlotOHLC(Vah,Vah,Val,Val,"",Colorfill,styleCloud|styleNoRescale|styleNoLabel);   nPlotOHLC++;
	  }

 } 
}


_SECTION_END();

_SECTION_BEGIN("VOLUME_Hight of Volume Bars Control");


PlotVOL = ParamToggle( "plot Volume?","No| Yes",0);

VolColor = (C>O OR (C==O AND
(H-C)<=(C-L) ))*ParamColor( "VUpColor" ,colorBlueGrey) +

(C<O OR (C==O AND
(H-C)>(C-L)) )*ParamColor( "VDnColor" ,colorPink) ;

VolScale = Param("1/Vol. Height (TimeBar chart)(fraction of window) 5=1/5=20%",10, 2, 100, 1.0) ; // Timebars

if (PlotVOL >0) 

{

Vheight = VolScale;

Plot(Prec(Volume ,0),"V",VolColor,
styleNoTitle| styleOwnScale| styleNoLabel| styleThick| ParamStyle( "VStyle", styleHistogram,maskHistogram| styleNoLabel) ,Vheight ); }
//Plot(MA(Volume,50),"",colorLightBlue,styleLine);
_SECTION_END();
& 2nd code looks like this ...

 

KelvinHand

Well-Known Member
Thanks Kelvin for understanding & appreciating my excellent knowledge & for your help :p

Kindly check foirst code is giving these errors .







& 2nd code looks like this ...


Can you please do a bit of hand on to remark OR Delete away x_s(0); shown in picture.
This x_s(0) was copied from the 2nd code.

For outof range issue, can you refer to page 191, Post#1930 again, find in your 1st code where the maxj=0, and change it to maxj=1;

Code:
maxj = 1;  //was 0
The only issue is the hourly option will give you over 500 plot/plotohlc errors


With the 2nd code confirm the excess plots issue, the only way i can think off is to convert all these plot of horizontal lines into GFX Plot
that can actually cater for hourly (or for all). But if hourly is not essential then can be ignore of the modification.

I will not be doing this task while busy on other thing.
 
Last edited:

Similar threads