MetaStock -> Tools -> Indicator Builder -> New -> Copy and paste complete formula between "---8<---" lines. ============= Luscious Lips ============= ---8<-------------------------- { Luscious Lips - the chart speaks - v2.5 } { Lips/Ellipse bounded by chart's High & Low of selected period.} { Plot on price chart with Red, Plum or Purple colors. Zoom-in & out for fuller lips.} { ©Copyright 2005 Jose Silva } { For personal use only } { http://www.metastocktools.com } { User inputs } pds1:=Input("Start periods ago",2,2600,70); pds2:=Input("End periods ago",0,2600,5); gloss:=Input("Lip gloss - Max Factor", 1,100,100); plot:=Input("[1]Ellipse, [2]Fill, [3]Both", 1,3,2); { Remove possible errors introduced between keyboard & seat ;) } p1:=LastValue(Max(pds1,pds2)); p2:=LastValue(Min(pds1,pds2)); p1:=If(p1<(p2+2),p2+2,p1); { Define/Restrict plot period } start:=Cum(1)=LastValue(Cum(1))-p1; restrict:=Ref(Ref(ValueWhen(1,start,1),-p2),p2); { Upper/Lower lip boundaries } Hi:=LastValue(Highest(ValueWhen(1,restrict,H))) +restrict-1; Lo:=LastValue(Lowest(ValueWhen(1,restrict,L))) +restrict-1; { Ellipse - with thanks to MG Ferreira } midX:=(p1-p2)/2; midY:=(Hi-Lo)/2; tX:=Cum(1)-midX-(LastValue(Cum(1))-p1); ellipse:= Sqrt(midY*midY*(1-Min(tX*tX/midX/midX,1))); upperE:=Lo+midY+ellipse; lowerE:=Hi-midY-ellipse; { Lipstick } gloss:=Int(200*Power(gloss,-1)); even:=Cum(1)/gloss=Int(Cum(1)/gloss); fill1:=If(even,upperE,lowerE); fill2:=If(even,lowerE,upperE); { Plot in price chart } If(plot=2,fill1,upperE); If(plot=2,fill2,lowerE); If(plot=1,upperE,fill1); If(plot=1,lowerE,fill2) ---8<-------------------------- http://www.metastocktools.com