Stock Portfolio Organizer

The ultimate porfolio management solution.

Shares, Margin, CFD's, Futures and Forex
EOD and Realtime
Dividends and Trust Distributions
And Much More ....
For Portfolio Manager Click Here

WiseTrader Toolbox

#1 Selling Amibroker Plugin featuring:

Advanced Adaptive Indicators
Advanced Pattern Exploration
Neural Networks
And Much More ....
Find Out More Here

EMA - Bollinger Band Volatility Adjusted for Metastock
martin3
about 14 years ago
Metastock

Rating:
0 / 5 (Votes 0)
Tags:
metastock, moving average

Bollinger Band volatility-adjusted, dynamic-period EMA with multiple output choices

Screenshots

Files

Indicator / Formula

Copy & Paste Friendly

MetaStock -> Tools -> Indicator Builder -> New Copy and paste formula

{ Bollinger Band volatility-adjusted,
  dynamic-period EMA v1.1 }

{ Positive sensitivity:
 EMA periodicity shortens on high BB volatility
 - increases on low BB volatility }
{ Negative sensitivity:
 EMA periodicity shortens on low BB volatility
 - increases on high BB volatility }

{ [1]EMA:         BB volatility-adjusted EMA }
{ [2]Dyn periods: EMA periodicity used }
{ [3]BB vlty:     BB volatility 0~100% }
{ [4]Signals:     EMA/price crossover signals }

{ ©Copyright 2004 Jose Silva }
{ http://www.metastocktools.com }

pds:=Input("EMA avg periods",1,2520,21);
sens:=Input("BB volatility sensitivity (+100 to -100)%",-100,100,75)/100;
pdsVlty:=Input("BB volatility sampling periods",
 2,2520,126);
pdsBB:=Input("Bollinger Band periods",
 2,2520,10);
x:=Input("[1]Open  [2]High  [3]Low  [4]Close  [5]Vol  [6]P",1,6,4);
plot:=Input("[1]EMA,  [2]Dyn periods,  [3]BB vlty,  [4]Signals",1,4,1);

x:=If(x=1,O,If(x=2,H,If(x=3,L,If(x=5,V,If(x=6,P,C)))));
y:=(BBandTop(x,pdsBB,S,2)-BBandBot(x,pdsBB,S,2))
 /Mov(x,pdsBB,S);
BBvlty:=(y-LLV(y,pdsVlty))/(HHV(y,pdsVlty)
 -LLV(y,pdsVlty)+.000001);
multi:=If(BBvlty<=.5,
 10*Power(BBvlty,3.4739)+.1,
 10*Power(BBvlty,3.32)+.000001);
multi:=If(sens>0,1/multi,multi);
multi:=If(multi<1,1-(1-multi)*Abs(sens),
 (multi-1)*Abs(sens)+1);
pds:=pds*multi;
pds:=If(pds>Cum(IsDefined(x))-(pdsVlty+pdsBB),
 Cum(IsDefined(x))-(pdsVlty+pdsBB),pds);
pds:=If(pds<1,1,pds);
BBema:=x*2/(pds+1)+PREV*(1-2/(pds+1));
signals:=Cross(x,BBema)-Cross(BBema,x);

If(plot=2,pds,If(plot=3,BBvlty*100,
 If(plot=4,signals,BBema)))

0 comments

Leave Comment

Please login here to leave a comment.

Back