Miscellaneous
0
Views
0
Downloads
0
Favorites
AMA_v3
//+------------------------------------------------------------------+
//| AMA.mq4 |
//| Copyright © 2004, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, by konKop,wellx"
#property link "http://www.metaquotes.net"
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Sienna
#property indicator_color2 Blue
#property indicator_color3 Red
//---- input parameters
extern int periodAMA = 9;
extern int nfast = 2;
extern int nslow = 30;
extern double G = 2.0;
extern double dK = 2.0;
//---- buffers
double kAMAbuffer[];
double kAMAupsig[];
double kAMAdownsig[];
//+------------------------------------------------------------------+
int cbars=0, prevbars=0, prevtime=0;
double slowSC,fastSC;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0, DRAW_LINE, 0, 2);
SetIndexStyle(1, DRAW_ARROW);
SetIndexArrow(1, 108);
SetIndexStyle(2, DRAW_ARROW);
SetIndexArrow(2, 108);
//SetIndexDrawBegin(0,nslow+nfast);
SetIndexBuffer(0, kAMAbuffer);
SetIndexBuffer(1, kAMAupsig);
SetIndexBuffer(2, kAMAdownsig);
//----
IndicatorDigits(4);
//slowSC=0.064516;
//fastSC=0.2;
//cbars=IndicatorCounted();
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int i, pos = 0;
double noise = 0.000000001, AMA, AMA0, signal, ER;
double dSC, ERSC, SSC, ddK;
//----
if(prevbars == Bars)
return(0);
//---- TODO: add your code here
slowSC = (2.0 / (nslow + 1));
fastSC = (2.0 /(nfast + 1));
cbars = IndicatorCounted();
if(Bars <= (periodAMA + 2))
return(0);
//---- check for possible errors
if(cbars < 0)
return(-1);
//---- last counted bar will be recounted
if(cbars > 0)
cbars--;
pos = Bars - periodAMA - 2;
AMA0 = Close[pos+1];
while(pos >= 0)
{
if(pos == Bars - periodAMA - 2)
AMA0 = Close[pos+1];
signal = MathAbs(Close[pos] - Close[pos+periodAMA]);
noise = 0.000000001;
for(i = 0; i < periodAMA; i++)
{
noise = noise + MathAbs(Close[pos+i] - Close[pos+i+1]);
}
ER = signal / noise;
dSC = (fastSC - slowSC);
ERSC = ER*dSC;
SSC = ERSC + slowSC;
AMA = AMA0 + (MathPow(SSC, G) * (Close[pos] - AMA0));
kAMAbuffer[pos] = AMA;
//----
ddK = (AMA - AMA0);
if((MathAbs(ddK)) > (dK*Point) && (ddK > 0))
kAMAupsig[pos] = AMA;
else
kAMAupsig[pos] = 0;
if((MathAbs(ddK)) > (dK*Point) && (ddK < 0))
kAMAdownsig[pos] = AMA;
else kAMAdownsig[pos] = 0;
AMA0 = AMA;
pos--;
}
//----
prevbars=Bars;
return(0);
}
//+------------------------------------------------------------------+
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---