# Color Bars

The lessons laid the foundation for a program's structure, variables, operators, expressions, procedures, and functions.  Now let's turn our efforts to creating useful scripts.

Cut the following script from this page and paste it in the ESPL Script Editor.  Click on the RUN button to compile and run the script.  Hopefully, nothing happens.  That means the script did not contain a compile error.  Now display any chart and click on the ESPL RUN button on the Chart Controls toolbar.  The following ESPL panel shows.  Click button 42 in the Color Bars column.  This will execute the script with the ESPL variable set to a value of 42.

The bars on the chart will be painted shades of red and green.

What does this script do?  It performs seven tests that indicate upward or downward strength by comparing a bar with its neighbor on the left.  This strength is then converted into a shade of red or green with the strongest upward strength being a bright red and the strongest downward strength being a bright green.

procedure ColorBar42;
var
i,j: integer;
c: longint;
iRed,iGreen: integer;
begin
for i:=BarBeginLeft to BarEnd do begin
j:=pred(i); {j will be the index for the neighboring bar}
iRed:=0; iGreen:=0;

if Open(i)>Last(j) then inc(iRed);
if Open(i)>High(j) then inc(iRed);
if High(i)>High(j) then inc(iRed);
if Low(i)>Low(j) then inc(iRed);
if Low(i)>High(j) then inc(iRed);
if Last(i)>Last(j) then inc(iRed);
if Last(i)>Open(i) then inc(iRed);

if Open(i)<=Last(j) then inc(iGreen);
if Open(i)<=Low(j) then inc(iGreen);
if High(i)<=High(j) then inc(iGreen);
if Low(i)<=Low(j) then inc(iGreen);
if High(i)<=Low(j) then inc(iGreen);
if Last(i)<=Last(j) then inc(iGreen);
if Last(i)<=Open(i) then inc(iGreen);

j:=iRed-iGreen;
if j<-5 then c:=clLime
else if (j=-5) or (j=-4) then c:=clGreen
else if j<0 then c:=clDkGreen
else if j=0 then c:=clDkGray
else if j>5 then c:=clRed
else if (j=5) or (j=4) then c:=clDkRed
else c:=clMaroon;

SetBar(eColor,i,c);
end;
end;

{----- MAIN PROGRAM -----}
begin
if ESPL=42 then ColorBar42;
end;