MetaStock -> Tools -> Indicator Builder -> New Copy and paste two indicator formulae below. ====================== EMA - Volume adaptable ====================== ---8<--------------------------- { Volume adaptable EMA v1.0 } { EMA samples bars with above-avg Volume } { ©Copyright 2004 Jose Silva } { For personal use only } { http://www.metastocktools.com } { User inputs } pds:=Input("EMA periods",2,2520,21); x:=Input("use Open=1 High=2 Low=3 Close=4 WClose=5 P=6",1,6,4); shift:=Input("EMA vertical shift %", -100,100,0)/100+1; plot:=Input("[1]EMA, [2]Data, [3]Sampling bars, [4]Crossovers",1,4,1); { Select price field } x:=If(x=1,O,If(x=2,H,If(x=3,L,If(x=5,WC(),If(x=6,P,C))))); { Above average Volume points } VolAvgPlus:=V>Mov(V,pds,E); { Select above-avg bars for EMA } x:=ValueWhen(1,VolAvgPlus,x); { Reduce periodicity on low bar count } pds:=If(pds>Cum(IsDefined(x)), Cum(IsDefined(x)),pds); { EMA } Ema:=x*2/(pds+1)+PREV*(1-2/(pds+1)); Ema:=Ema*shift; { EMA/price crossover signals } signals:=Cross(x,Ema)-Cross(Ema,x); { Plot on price chart } If(plot=1,Ema,If(plot=2,x, If(plot=3,VolAvgPlus,signals))) ---8<--------------------------- ============================= EMA - Volume adaptable Mk III ============================= ---8<--------------------------- { Volume adaptable EMA v3.0 } { EMA samples bars with above/below-avg Volume } { ©Copyright 2004 Jose Silva } { For personal use only } { http://www.metastocktools.com#metastock } { User inputs } pds:=Input("EMA periods",2,2520,21); x:=Input("use Open=1 High=2 Low=3 Close=4 WClose=5 P=6",1,6,4); shift:=Input("EMA vertical shift %", -100,100,0)/100+1; plot:=Input("[1]HiEMA, [2]LoEMA, [3]Both,[4]Diff, [5]Signals",1,5,3); { Select price field } x:=If(x=1,O,If(x=2,H,If(x=3,L,If(x=5,WC(),If(x=6,P,C))))); { Above/Below average Volume points } HiVol:=V>Mov(V,pds,E); LoVol:=V