i've seen a couple on their forum.... but they dont show the POC, VAL, VAH though... or do they? can someone help
k i think i see it: https://www.tradestation.com/Discussions/Topic.aspx?Topic_ID=57275&Page=1& so the VAH is just hte high of that vertical bar? and VAL is just the low of it? what about POC? eventhough it doesn't show the POC... but basically we can just get that by looking at the area where the letters extends furthest to the right, correct? if so, what if there are 2 areas that are equal ?
IT says I do not have access to this forum -- even after I logged in. Can someone with the code post it here please?
Here is the TPO Pro5.0B indicator for Tradestation. Compress is the size of the box relative to the symbol. For instance, compress(5) on a stock would be 5 ticks, or cents, on the ES.D it would be 5 ticks or 1.25 points. I use compress(2) on ES.D which is two ticks or .5 points. This works on Range, Tick charts. Problem with it is the current day's overlay overlaps current days bars so its best viewed with the symbol hidden which I don't like. TS has Activity Bar indicators which give a nice presentation but no ability to to overlay the bars plus the scaling on the Activity Bar studies is screwy. Nothing perfect out there for Tradestation users yet. John PS, the emotioncon disapears when inserted in a new indicator and after verification. [LegacyColorValue = true]; input:compress(5),len(30),letter1(1),txtcolr(15),opncol(6),closcol(6),lastcol(6),VAprcnt(.7),Valcol(15), Valsize(1),Stime(Sess1StartTime),passwrd("dxlgkgk79ds8sncdk"); 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) ; arrayri[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 vap=VAprcnt; x=currentdate; if x < 991001 and x > 250101 and passwrd ="bngjdfjru57er" then value98=1; if x < 991231 and x > 250101 and passwrd ="dxlgkgk79ds8sncdk" then value98=1; if BlockNumber <> 32474 then value98=1; value97= 1/value98; 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 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; x=mid;up=cpt;dn=cpt; while x < va begin value19=tpo[up+1]+tpo[up+2]; value20=tpo[dn-1]+tpo[dn-2]; if value19 >= value20 then begin if x+tpo[up+1] >= va then begin x=x+tpo[up+1]; up=up+1; end else begin x=x+value19; up=up+2; end; end else begin if x+tpo[dn-1] >= va then begin x=x+tpo[dn-1]; dn=dn-1; end else begin x=x+value20; dn=dn-2; end; end; end; if up > th then up=th; if dn < tl then dn=tl; up= fp+((up-500)*mintick); dn=fp+((dn-500)*mintick); value62=fp+((cpt-500)*mintick); labl= text_new(d2p,t1,dl-mintick,"VA:"+mp_str32(dn)+" "+mp_str32(up)); TEXT_SETSTYLE(labl,0,2); TEXT_SETCOLOR(labl,valcol); vala=TL_New(D2p,t1,up,D2p,t1,dn); TL_SetColor(vala,valcol); TL_SetSize(vala,vsize); value60=TL_New(D2p,t1,value62+mintick/15,D2p,t1,value62-mintick/15); TL_SetColor(value60,valcol); TL_SetSize(value60,value88); 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; clet=curletstr(stime,len,letter1) ; 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; 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; {------------------------------------------------------------------------------------------} if valcol <> 0 and 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; if va <> 0 then begin value61=value18; x=mid;up=cpt;dn=cpt; while x < va begin value19=tpo[up+1]+tpo[up+2]; value20=tpo[dn-1]+tpo[dn-2]; if value19 >= value20 then begin if x+tpo[up+1] >= va then begin x=x+tpo[up+1]; up=up+1; end else begin x=x+value19; up=up+2; end; end else begin if x+tpo[dn-1] >= va then begin x=x+tpo[dn-1]; dn=dn-1; end else begin x=x+value20; dn=dn-2; end; end; end; if up > th then up=th; if dn < tl then dn=tl; value18=cpt; oldup=up; olddn=dn; up= fp+((up-500)*mintick); dn=fp+((dn-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+((value18-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 <> value18 and} flag > 1 then begin value62=fp+((value18-500)*mintick); TL_SetBegin(value60,D2p,t1,value62+mintick/15); TL_SetEnd(value60,D2p,t1,value62-mintick/15); end; Text_SetString(labl,"VA:"+mp_str32(dn)+" "+mp_str32(up)); end; end; if lastcol > 0 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_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");
I think there is a free online browser-based app that someone posted in a thread on ET. Also there is code for a basic one in NinjaTrader, which is also free. With some work/study and modifications, you could probably make it work to your specific needs. (This is a pic of my own, edited one - and I don't know C# from a hole-in-the-wall, but I put some time in it). There are pay-for ones that are really nice, but as long as you can see what you want to see, whatever works...