Free Market Profile for Tradestation.

Discussion in 'Technical Analysis' started by chiefraven, Jul 9, 2008.

  1. i've seen a couple on their forum.... but they dont show the POC, VAL, VAH though... or do they?

    can someone help
     
  2. Surdo

    Surdo

    The ELD is titled TPO Pro5.0b in the forum.

    It shows VAL and VAH on the bottom of each bar.
     
  3. 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 ?
     
  4. snp500

    snp500

    IT says I do not have access to this forum -- even after I logged in.

    Can someone with the code post it here please?
     
  5. Surdo

    Surdo

    PM me your e mail address, I will send the ELD.
     
  6. 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) ;

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