Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
xpMA_v2_SATL_FATL
//+------------------------------------------------------------------+
//| XP Moving Average |
//| xpMA.mq4 |
//| Developed by Coders Guru |
//| mod2007forextsd.com ki http://www.xpworx.com |
//+------------------------------------------------------------------+
#property link "http://www.xpworx.com"
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Yellow
#property indicator_color2 Red
#property indicator_color3 Blue
/* Moving average types constants:
------------------------------------
MODE_SMA 0 Simple moving average,
MODE_EMA 1 Exponential moving average,
MODE_SMMA 2 Smoothed moving average,
MODE_LWMA 3 Linear weighted moving average.
MODE_DEMA 4 Double Exponential Moving Average.
MODE_TEMA 5 Triple Exponential Moving Average.
MODE_T3MA 6 T3 Moving Average.
MODE_JMA 7 Jurik Moving Average.
MODE_SATL 8 SATL Moving Average.
MODE_FATL 8 FATL (RFTL) Moving Average.
------------------------------------*/
/* Applied price constants:
-------------------------------
PRICE_CLOSE 0 Close price.
PRICE_OPEN 1 Open price.
PRICE_HIGH 2 High price.
PRICE_LOW 3 Low price.
PRICE_MEDIAN 4 Median price, (high+low)/2.
PRICE_TYPICAL 5 Typical price, (high+low+close)/3.
PRICE_WEIGHTED 6 Weighted close price, (high+low+close+close)/4.
--------------------------------- */
extern int MA_Period = 34;
extern int MA_Type = 0;
extern int MA_AppliedPrice = PRICE_CLOSE;
extern double T3MA_VolumeFactor = 0.8;
extern double JMA_Phase = 0;
extern int MaxBarsToCount = 900;
extern string note_MA_Mode_Type ="SMA0 EMA1 SMMA2 LWMA3 DEMA4 TEMA5 T3MA6 JMA7 SATL8 FATL9";
extern string MA_Price_ ="0C 1O 2H3L 4Md 5Tp 6WghC: Md(HL/2)4,Tp(HLC/3)5,Wgh(HLCC/4)6";
double UpBuffer[];
double DownBuffer[];
double Buffer3[];
double buffer[];
double tempbuffer[];
double matriple[];
int init()
{
string short_name;
IndicatorBuffers(6);
SetIndexStyle(2,DRAW_LINE);
SetIndexBuffer(2,UpBuffer);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,DownBuffer);
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(3,Buffer3);
SetIndexBuffer(0,buffer);
SetIndexBuffer(4,tempbuffer);
SetIndexBuffer(5,matriple);
switch(MA_Type)
{
case 1 : short_name= " EMA(" ; break;
case 2 : short_name= " SMMA("; break;
case 3 : short_name= " LWMA("; break;
case 4 : short_name= " DEMA("; break;
case 5 : short_name= " TEMA("; break;
case 6 : short_name= " T3MA("; break;
case 7 : short_name= " JMA(" ; break;
case 8 : short_name= " SATL("; break;
case 9 : short_name= " FATL("; break;
default: short_name= " SMA(" ;
}
SetIndexLabel(0,"xpMA "+short_name +" ("+ MA_Period+") ");
IndicatorShortName( "xpMA "+short_name +" ("+ MA_Period+")");
return(0);
}
int deinit()
{
return(0);
}
void start()
{
int limit;
int i = 0;
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
// if(counted_bars<0) return(-1);
// limit=Bars-counted_bars-1;
limit=Bars-counted_bars;
limit=MathMin(limit,MaxBarsToCount);
switch (MA_Type)
{
case 0:
case 1:
case 2:
case 3:
{
for(i=0; i<limit; i++)
{
buffer[i] = iMA(NULL,0,MA_Period,0,MA_Type,MA_AppliedPrice,i);
}
}
break;
case 4:
{
for(i=0; i<limit; i++)
{
tempbuffer[i] = iMA(NULL,0,MA_Period,0,MODE_EMA,MA_AppliedPrice,i);
}
for(i=0; i<limit; i++)
{
matriple[i] = iMAOnArray(tempbuffer,0,MA_Period,0,MODE_EMA,i);
}
for(i=0; i<limit; i++)
{
buffer[i] = iMAOnArray(matriple,0,MA_Period,0,MODE_EMA,i);
}
}
break;
case 5:
{
for(i=0; i<limit; i++)
{
tempbuffer[i] = iMA(NULL,0,MA_Period,0,MODE_EMA,MA_AppliedPrice,i);
}
for(i=0; i<limit; i++)
{
buffer[i] = iMAOnArray(tempbuffer,0,MA_Period,0,MODE_EMA,i);
}
}
break;
case 6:
{
for(i=0; i<limit; i++)
{
buffer[i] = iCustom(NULL,0,"T3MA",MA_Period,T3MA_VolumeFactor,0,i);
}
}
break;
case 7:
{
for(i=0; i<limit; i++)
{
buffer[i] = iCustom(NULL,0,"JMA",MA_Period,JMA_Phase,0,i);
}
}
break;
case 8:
{
for(i=0; i<limit; i++)
{
buffer[i] = iCustom(NULL,0,"SATL",0,i);
}
}
break;
case 9:
{
for(i=0; i<limit; i++)
{
buffer[i] = iCustom(NULL,0,"RFTL",MaxBarsToCount,0,i);
}
}
break;
}
for(int shift=0; shift<limit; shift++)
{
UpBuffer[shift] = buffer[shift];
DownBuffer[shift] = buffer[shift];
Buffer3[shift] = buffer[shift];
}
for(shift=0; shift<limit; shift++)
{
if (buffer[shift]<buffer[shift+1])
{
UpBuffer[shift] = EMPTY_VALUE;
}
else if (buffer[shift]>buffer[shift+1] )
{
DownBuffer[shift] = EMPTY_VALUE;
}
else
{
UpBuffer[shift] = EMPTY_VALUE;
DownBuffer[shift] = EMPTY_VALUE;
}
}
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
---