#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