MetaStock -> Tools -> Indicator Builder -> New -> copy & paste formula below. ===================== EMA - Volume adjusted ===================== ---8<------------------------------------- { Volume-adjusted, dynamic-period EMA v2.4 EMA periodicity shortens on high volume, increases on low volume. Copyright © 2003-2007 Jose Silva http://www.metastocktools.com } { Indicator inputs } pds:=Input("EMA periods",1,2520,21); VAvgPds:=Input("Volume sample periods",2,252,21); x:=Input("use [1]Open [2]High [3]Low [4]Close [5]Volume",1,5,4); shift:=1+Input("EMA vertical shift %", -100,100,0)/100; plot:=Input("[1]EMA, [2]Dyn EMA pds, [3]Vol avg, [4]Crossovers",1,4,1); { Select dada array } x:=If(x=1,O,If(x=2,H,If(x=3,L,If(x=5,V,C)))); { Vol adj EMA } MovVol:=Mov(V,VAvgPds,E); VolRatio:=Min(V,MovVol)/Max(V,MovVol); VolAvg:=If(V>MovVol,2-VolRatio,VolRatio); multi:=.75/(.1+.32*VolAvg+.58*Power(VolAvg,4)); pds:=pds*multi; pds:=If(pds>Cum(IsDefined(x))-VAvgPds, Cum(IsDefined(x))-VAvgPds,pds); pds:=If(pds<1,1,pds); VlEma:=x*2/(pds+1)+PREV*(1-2/(pds+1)); VlEma:=VlEma*shift; { Crossover signals } signals:=Cross(x,VlEma)-Cross(VlEma,x); { Plot on price chart } If(plot=2,pds,If(plot=3,VolAvg*50, If(plot=4,signals,VlEma))) ---8<------------------------------------- http://www.metastocktools.com