- Katılım
- 23 Eki 2020
- Mesajlar
- 1,828
Exponential Moving Average - samples above/below-avg volume bars - two EMA versions, with multiple output choice. |
|
Exponential Moving Average - Volume Adaptable { Volume adaptable EMA v1.0 } { EMA samples bars with above-avg Volume } { (c) 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))) |
Exponential Moving Average - Volume Adaptable Mk III
{ Volume adaptable EMA v3.0 }
{ EMA samples bars with above/below-avg Volume }
{ (c) 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<Mov(V,pds,E);
{ Select above/below-avg bars for EMA }
xHiVol:=ValueWhen(1,HiVol,x);
xLoVol:=ValueWhen(1,LoVol,x);
{ EMAs }
EmaHiVol:=Mov(xHiVol,pds,E)*shift;
EmaLoVol:=Mov(xLoVol,pds,E)*shift;
{ Hi/Lo EMA difference }
diff:=EmaHiVol-EmaLoVol;
{ Hi/LoEMA difference / zero crossover signals }
signals:=Cross(diff,0)-Cross(0,diff);
{ Plot EMAs on price chart }
If(plot=1,EmaHiVol,If(plot=2,EmaLoVol,
If(plot=3,EmaLoVol,If(plot=4,0,0))));
If(plot=1,EmaHiVol,If(plot=2,EmaLoVol,
If(plot=3,EmaHiVol,If(plot=4,diff,signals))))
Source / From: |