[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Help with .ela



PureBytes Links

Trading Reference Links

Here's a neat Market Profile .ela that stopped working for some strange 
reason. Worked fine until a couple of days ago on both TS4 and TS2000i... 
but now... everything is jumbled. You have to set the scale to "screen" or 
entire data series when using it (unless some ela wizard can correct it, 
too).

input:compress(1),len(30),letter1(1),txtcolr(7),opncol(6),closcol(6),lastcol(6),VAprcnt(.70),Valcol(5),
Valsize(3),Stime(Sess1StartTime);

vars:lett("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"),t1(0),vsize(0),cpt(0),dl(0),
lcount(1),fp(0),daynum(0),d0(0),mid(0),dlo(0),pc(0),pc2(0),skp(0),labl(0),vala(0),vap(0),cp(0),t0(0),nuflag(0),
hh(0),ll(0),x(0),et(0), 
clet(""),curtxt(""),th(0),tl(0),tpstr("00"),tot(0),va(0),d2p(0),oldclet(""),
barhi(0),barlo(0),mintick(0),xpts(0),price(0),up(0),dn(0),oldup(0),olddn(0),flag(0),flag2(0) 
;

array:pri[1000](0),tpo[1000](0),pristr[1000]("");


nuflag=0;
if t0 <= Sess1EndTime and t > Sess1EndTime and Sess2StartTime <> 0 then 
nuflag=1;
if d <> d0 and Sess2StartTime = Sess2EndTime then nuflag=1;
if t0=sess1endtime then nuflag=1;
if  currentbar=1  or nuflag=1   then begin
	if currentbar=1 then begin
		if VAprcnt < 0 or VAprcnt >= 1 then vap=0 else vap=VAprcnt;
		vsize=mod(valsize+7,7);
		if vsize < 2  then value88=5 else value88=vsize;
		mintick = 1 point * minmove * compress;
		xpts=500*mintick;
	end;
	lcount=letter1; if lcount < 0 or lcount > 52 then lcount=1;
	if currentbar > 1 then begin
		if valcol <> 0 and flag2=0 then begin
			mid=0;value23=0;
			cpt=tl;cp=tl + (th-tl)/2; {center of dist.}
			for x = tl to th begin
				if pristr[x] <> "" then begin
					pristr[x]=nutpstr(tpo[x],pristr[x],pri[x]);
					value23=value23 + tpo[x]; {total tpo count}
					if tpo[x]=mid and x <= cp then cpt=x;
					if tpo[x]=mid and x>cp and(x-cp) < AbsValue(cp-cpt) then cpt=x;
					if tpo[x] > mid then begin
						cpt=x;
						mid = tpo[x];
					end;
				end;
			end;
			va=value23 * vap;
			labl= text_new(d2p,t1,dl-mintick,NumToStr(value23,0)+" TPO's");
			TEXT_SETSTYLE(labl,0,2);
			TEXT_SETCOLOR(labl,valcol);
			if va > 0 then begin
				value61=value19;
				value19=cpt;
				x=mid;up=value19+1;dn=value19-1;
				while x < va begin
					if tpo[up] =  tpo[dn] then begin
						x=x+tpo[up];
						up=up+1;
						if x < va then begin
							x=x+tpo[dn];
							dn=dn-1;
						end;
					end else begin
						if tpo[up] > tpo[dn] then begin
							x=x+tpo[up];
							up=up+1;
						end else begin
							x=x+tpo[dn];
							dn=dn-1;
						end;
					end;
				end;
				up= fp+((up-1-500)*mintick);
				dn=fp+((dn+1-500)*mintick);
				vala=TL_New(D2p,t1,up,D2p,t1,dn);
				TL_SetColor(vala,valcol);
				TL_SetSize(vala,vsize);
				value62=fp+((value19-500)*mintick);
				value60=TL_New(D2p,t1,value62+mintick/15,D2p,t1,value62-mintick/15);
				TL_SetColor(value60,valcol);
				TL_SetSize(value60,value88);
			end;
		end;
		pc2=0;
		for value4=tl to th begin
			price=fp+((value4-500)*mintick) ;
			if price <= pc  then pc2=value4;
		end;
		if pc2=0 then pc2=barlo;
		curtxt=pristr[pc2];
		if RightStr(curtxt,1) <> "<" then begin
			 text_setstring(pri[pc2],curtxt+" <");
			Text_SetColor(pri[pc2],closcol);
		end;
	end;
	t1=t;
	d2p=d;
	labl=0;vala=0;
	for value1=tl to th begin
		pristr[value1]="";
		tpo[value1]=0;
	end;
	clet=curletstr(stime,len,letter1);
	oldclet=clet;
	dlo=l;
	fp=o;
	tpo[500]=1;
	th=500;tl=500;
	flag=0;
	pri[500]= text_new(d,t1,o,"   >"+clet);
	pristr[500]="   >"+clet;
	TEXT_SETSTYLE(pri[500],0,2);
	TEXT_SETCOLOR(pri[500],opncol);
	hh=o;ll=o;mid=1;tot=1;value22=currentbar;
	dl=l;
	if d= JulianToDate(LastCalcJDate) then flag2=1;
end;
if t <> t0 then clet=curletstr(stime,len,letter1) ;{this does not work - 
always is true}
t0=t;d0=d;pc=c;
barhi=intportion((xpts+h-fp+(mintick/10))/mintick);
barlo=ceiling((xpts+l-fp-(mintick/10))/mintick);
if barhi > th then th=barhi;
if barlo < tl then tl=barlo;
if l < dl then dl=l;
IF datacompression=0 and  currentbar  > value22 then begin
	lcount=lcount+1;
	if lcount=53 then lcount=1;
	clet=midstr(lett,lcount,1) ;
	hh=o;ll=o;flag=flag+1;
end;
value22=currentbar;
IF datacompression = 1 and oldclet <> clet  then begin
	hh=o;ll=o;flag=flag+1;
end;
{skp=0;
if  h > hh or l < ll  then begin
	skp=1;}
	for value4=barlo to barhi begin
		price=fp+((value4-500)*mintick);
		curtxt=pristr[value4];
		if curtxt = ""   then begin
			tpo[value4]=1;
			pri[value4]= text_new(d2p,t1,price,"    "+clet);
			pristr[value4]="    "+clet;
			TEXT_SETSTYLE(pri[value4],0,2);
			TEXT_SETCOLOR(pri[value4],txtcolr);
		end else begin
			if RightStr(curtxt,1) <> clet then begin
				text_setstring(pri[value4],curtxt+clet);
				pristr[value4]=curtxt+clet;
				tpo[value4]=tpo[value4]+1;
			end;
		end;
	end;
	if h>hh then hh=h;
	if l < ll then ll = l;
{end;}
if valcol <> 0 {and skp =1} and {d= JulianToDate(LastCalcJDate)} 
lastbaronchart  then begin
mid=0;value16=0;value23=0;
cpt=tl;cp=tl + (th-tl)/2; {center of dist.}
for x = tl to th begin
	if pristr[x] <> "" then begin
		pristr[x]=nutpstr(tpo[x],pristr[x],pri[x]);
		value23=value23 + tpo[x]; {total tpo count}
		if tpo[x]=mid and x <= cp then cpt=x;
		if tpo[x]=mid and x>cp and(x-cp) < AbsValue(cp-cpt) then cpt=x;
		if tpo[x] > mid then begin
			cpt=x;
			mid = tpo[x];
		end;
	end;
end;
va=value23 * vap;
if l < dlo  then begin
	dlo=l;
	price=fp+((tl-501)*mintick);
	if labl <> 0 then Text_SetLocation(labl,d2p,t1,price);
end;
if labl =0 then begin
	price=fp+((tl-501)*mintick);
	labl= text_new(d2p,t1,price,"-");
	TEXT_SETSTYLE(labl,0,2);
	TEXT_SETCOLOR(labl,valcol);
end;
Text_SetString(labl,NumToStr(value23,0)+" TPO's");
if va <> 0 then begin
value61=value19;
value19=cpt;
x=mid;up=value19+1;dn=value19-1;
while x < va begin
	if tpo[up] =  tpo[dn] then begin
		x=x+tpo[up];
		up=up+1;
		if x < va then begin
			x=x+tpo[dn];
			dn=dn-1;
		end;
	end else begin
		if tpo[up] > tpo[dn] then begin
			x=x+tpo[up];
			up=up+1;
		end else begin
			x=x+tpo[dn];
			dn=dn-1;
		end;
	end;
end;
oldup=up;
olddn=dn;
up= fp+((up-1-500)*mintick);
dn=fp+((dn+1-500)*mintick);
if flag=1 then value63=t;
if up > dn and flag > 1  then begin
	if vala = 0 then begin
		vala=TL_New(D2p,t1,up,D2p,t1,dn);
		TL_SetColor(vala,valcol);
		TL_SetSize(vala,vsize);
		value62=fp+((value19-500)*mintick);
		value60=TL_New(D2p,t1,value62+mintick/15,D2p,t1,value62-mintick/15);
		TL_SetColor(value60,valcol);
		TL_SetSize(value60,value88);
	end else begin
		if oldup <> up then TL_SetBegin(vala,D2p,t1,up);
		if olddn <> dn then TL_SetEnd(vala,D2p,t1,dn);
	end;
end;
if value61 <> value19 and flag > 1  then begin
	value62=fp+((value19-500)*mintick);
	TL_SetBegin(value60,D2p,t1,value62+mintick/15);
	TL_SetEnd(value60,D2p,t1,value62-mintick/15);
end;
end;
end;

if lastcol > 0 and lastcol < 17  then begin
if value10 = 0 and currentbar=3 then begin
	value10=tl_new(value50,value51,c,d,t,c);
	tl_setcolor(value10,lastcol);
	tl_setsize(value10,0);
	TL_SetExtLeft(value10,true);
end else if currentbar > 3 and LastBarOnChart   then begin
	{tl_setbegin(value10,value52,value53,c);}
	tl_setend(value10,d,t,c);
	tl_setbegin(value10,value52,value53,c);
end;
value52=value50;value53=value51;
value50=d;value51=t;
end;

plot1(l-mintick,"dummy");

plot2(vala,"dummy");