pds:=
Input
(
"EMA avg periods"
,1,2520,21);
sens:=
Input
(
"ATR volatility sensitivity (+100 to -100)%"
,-100,100,100)/100;
pdsVlty:=
Input
(
"ATR volatility sampling periods"
,2,2520,126);
pdsATR:=
Input
(
"ATR periods"
,1,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]ATR 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
)))));
ATRvlty:=(
ATR
(pdsATR)-
LLV
(
ATR
(pdsATR),pdsVlty))
/(
HHV
(
ATR
(pdsATR),pdsVlty)
-
LLV
(
ATR
(pdsATR),pdsVlty)+.000001);
multi:=
If
(ATRvlty<=.5,
10*
Power
(ATRvlty,3.4739)+.1,
10*
Power
(ATRvlty,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+pdsATR),
Cum
(
IsDefined
(x))-(pdsVlty+pdsATR),pds);
pds:=
If
(pds<1,1,pds);
ATREma:=x*2/(pds+1)+
PREV
*(1-2/(pds+1));
signals:=
Cross
(x,ATREma)-
Cross
(ATREma,x);
If
(plot=2,pds,
If
(plot=3,ATRvlty*100,
If
(plot=4,signals,ATREma)))