Miscellaneous
0
Views
0
Downloads
0
Favorites
AMA_STL
//+------------------------------------------------------------------+
//| AMA STL.mq4 |
//| Copyright © 2006, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
//----
extern int FastMA = 3;
extern int SlowMA = 100;
extern int Range = 160;
extern int filter = 25;
extern int NBars = 5000;
//----
double fAMA[];
double mAMA[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(2);
SetIndexStyle(0, DRAW_LINE);
SetIndexBuffer(0, fAMA);
SetIndexBuffer(1, mAMA);
//----
IndicatorShortName("AMA_STL(" + FastMA + ", " + SlowMA + ", " + Range + "; " +
filter + ")");
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars = IndicatorCounted();
int cb, i;
double k1, k2, Noise, ER, SSC, AMA, sdAMA, dAMA;
//----
if(Bars <= NBars)
return(0);
else
{
k1 = 2.0 / (SlowMA + 1);
k2 = 2.0 / (FastMA + 1) - k1;
AMA = Close[NBars-Range];
mAMA[NBars-Range] = Close[NBars-Range+1];
//----
for(cb = NBars - counted_bars - Range - 1; cb >= 0; cb--)
{
Noise = 0;
//----
for(i = cb; i <= cb + Range - 1; i++)
{
Noise = Noise + MathAbs(Close[i] - Close[i+1]);
}
//----
if(Noise != 0)
{
ER = MathAbs(Close[cb] - Close[cb+Range]) / Noise;
}
else
{
ER = 0;
}
SSC = (ER*k2 + k1);
AMA = AMA + NormalizeDouble(SSC*SSC*(Close[cb] - AMA), 4);
mAMA[cb] = AMA;
//----
if(filter < 1)
{
fAMA[cb] = mAMA[cb];
}
else
{
for(i = cb; i <= cb + SlowMA - 1; i++)
{
sdAMA = sdAMA + MathAbs(mAMA[i] - mAMA[i+1]);
}
dAMA = mAMA[cb] - mAMA[cb+1];
//----
if(dAMA >= 0)
{
if(dAMA < NormalizeDouble(filter*sdAMA / (100*SlowMA), 4) &&
High[cb] <= High[Highest(NULL, 0, MODE_HIGH, 4, cb)] + 10*Point)
{
fAMA[cb] = fAMA[cb+1];
}
else
{
fAMA[cb] = mAMA[cb];
}
}
else
{
if(MathAbs(dAMA) < NormalizeDouble(filter*sdAMA / (100*SlowMA), 4) &&
Low[cb] > Low[Lowest(NULL, 0, MODE_LOW, 4, cb)] - 10*Point)
{
fAMA[cb] = fAMA[cb+1];
}
else
{
fAMA[cb] = mAMA[cb];
}
}
sdAMA=0.0;
}
}
}
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
---