JMA_DF





#property indicator_chart_window 
#property indicator_buffers 1 
#property indicator_color1 Red 
extern int Length = 102;   // ãëóáèíà ñãëàæèâàíèÿ 
extern int Phase  = -100; // ïàðàìåòð, èçìåíÿþùèéñÿ â ïðåäåëàõ -100 ... +100, âëèÿåò íà êà÷åñòâî ïåðåõîäíîãî ïðîöåññà; 
extern int Shift  = 0;   // cäâèã èíäèêàòîðà âäîëü îñè âðåìåíè 
extern int Input_Price_Customs = 0;//Âûáîð öåí, ïî êîòîðûì ïðîèçâîäèòñÿ ðàñ÷¸ò èíäèêàòîðà 
//(0-"Close", 1-"Open", 2-"(High+Low)/2", 3-"High", 4-"Low", 5-"Heiken Ashi Close", 6-"(Open+Close)/2") 
//---- buffers 
double FILTER,Series;
double @Rezalt[]; 
double Filter[1];
int nf,IPC; 
int init() 
{ 
//---- indicator line 
SetIndexStyle(0,DRAW_LINE); 
SetIndexBuffer(0,@Rezalt); 
//---- 
nf=13;int count=ArrayResize(Filter,nf+1);if(count==0){Alert("Íåâîçìîæíî âûäåëèòü ïàìÿòü ïîä ìàññèâ Filter");return(0);}
//+=== Èíèöèàëèçàöèÿ êîýôôèöèåíòîâ öèôðîâîãî ôèëüòðà =======================================================================+
Filter[00]=+2.257123744523;Filter[01]=-0.360708458885;Filter[02]=-0.325737268228;Filter[03]=-0.2729150866467;Filter[04]=-0.2092237191308;
Filter[05]=-0.1426901208968;Filter[06]=-0.0809016668650;Filter[07]=-0.02975330274774;Filter[08]=+0.00725649761316;Filter[09]=+0.02925670582975;
Filter[10]=+0.0377987481366;Filter[11]=+0.0361578613352;Filter[12]=+0.02830856176224;Filter[13]=+0.02602750420017;
//+=========================================================================================================================+
//+================================================================================================================================+ 
if(Phase<-100){Alert("Ïàðàìåòð Phase äîëæåí áûòü îò -100 äî +100" + " Âû ââåëè íåäîïóñòèìîå " +Phase+  " áóäåò èñïîëüçîâàíî -100");}
if(Phase> 100){Alert("Ïàðàìåòð Phase äîëæåí áûòü îò -100 äî +100" + " Âû ââåëè íåäîïóñòèìîå " +Phase+  " áóäåò èñïîëüçîâàíî  100");}
if(Length<  1){Alert("Ïàðàìåòð Length äîëæåí áûòü íå ìåíåå 1"     + " Âû ââåëè íåäîïóñòèìîå " +Length+ " áóäåò èñïîëüçîâàíî  1"  );}
//+================================================================================================================================+
SetIndexDrawBegin(0,nf+30); 
IPC=Input_Price_Customs;
return(0); 
}

int start() 
{ 
int limit,counted_bars=IndicatorCounted(); 
//---- 
if((counted_bars==0)&&(Bars<=nf))return(0);
//----  
limit=Bars-counted_bars-1; 
//----+ Ââåäåíèå è èíèöèàëèçàöèÿ âíóòðåííèõ ïåðåìåííûõ ôóíêöèè JJMASeries, nJMAnumber=1(Îäíî îáðàùåíèå ê ôóíêöèè) 
if (limit==Bars-1){int reset=-1;int set=JJMASeries(1,0,0,0,0,0,0,0,reset);if((reset!=0)||(set!=0))return(-1);}
//----+  
for(int k=limit;k>=0;k--)
{
FILTER=0.0;
for(int x=0;x<=nf;x++)
{
if(k<Bars-1-nf)
switch(IPC)
    {
    case 0:  Series=Close[k+x];break;
     case 1:  Series= Open[k+x];break;
     case 2:  Series=(High[k+x]+Low  [k+x])/2;break;
     case 3:  Series= High[k+x];break;
     case 4:  Series=  Low[k+x];break;
     case 5:  Series=(Open[k+x]+High [k+x]+Low[k+x]+Close[k+x])/4;break;
     case 6:  Series=(Open[k+x]+Close[k+x])/2;break;
     default: Series=Close[k+x];break;
     }
    FILTER=FILTER+Filter[x]*Series;
}
reset=1;@Rezalt[k]=JJMASeries(0,0,Bars-1-nf,limit,Phase,Length,FILTER,k,reset);if(reset!=0)return(-1);
}
return(0); 
} 
#include <JJMASeries.mqh> 



Sample





Analysis



Market Information Used:

Series array that contains close prices for each bar
Series array that contains open prices of each bar
Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar


Indicator Curves created:

Implements a curve of type DRAW_LINE


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features:

It issuies visual alerts to the screen