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