2 Äëÿ ðàáîòû èíäèêàòîðà ñëåäóåò ïîëîæèòü ôàéëû
\r
5 â ïàïêó (äèðåêòîðèþ): MetaTrader\experts\include\
\r
7 â ïàïêó (äèðåêòîðèþ): MetaTrader\indicators\
\r
9 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
11 //| Copyright © 2006, Nikolay Kositsin |
\r
12 //| Khabarovsk, farria@mail.redcom.ru |
\r
13 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
14 #property copyright "Nikolay Kositsin"
\r
15 #property link "farria@mail.redcom.ru"
\r
16 //---- îòðèñîâêà èíäèêàòîðà â îñíîâíîì îêíå
\r
17 #property indicator_chart_window
\r
18 //---- êîëè÷åñòâî èíäèêàòîðíûõ áóôôåðîâ
\r
19 #property indicator_buffers 1
\r
20 //---- öâåò èíäèêàòîðà
\r
21 #property indicator_color1 Blue
\r
22 //---- ÂÕÎÄÍÛÅ ÏÀÐÀÌÅÒÐÛ ÈÍÄÈÊÀÒÎÐÀ þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþææ+
\r
23 extern int Length = 3; // ãëóáèíà ñãëàæèâàíèÿ
\r
24 extern int Phase = 100; // ïàðàìåòð, èçìåíÿþùèéñÿ â ïðåäåëàõ -100 ... +100, âëèÿåò íà êà÷åñòâî ïåðåõîäíîãî ïðîöåññà;
\r
25 extern int Shift = 0; // cäâèã èíäèêàòîðà âäîëü îñè âðåìåíè
\r
26 extern int Input_Price_Customs = 0;//Âûáîð öåí, ïî êîòîðûì ïðîèçâîäèòñÿ ðàñ÷¸ò èíäèêàòîðà
\r
27 //(0-CLOSE, 1-OPEN, 2-HIGH, 3-LOW, 4-MEDIAN, 5-TYPICAL, 6-WEIGHTED, 7-Heiken Ashi Close, 8-SIMPL, 9-TRENDFOLLOW, 10-0.5*TRENDFOLLOW,
\r
28 //11-Heiken Ashi Low, 12-Heiken Ashi High, 13-Heiken Ashi Open, 14-Heiken Ashi Close.)
\r
29 //---- æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ+
\r
34 int nf; double FILTER,Price,Resalt;
\r
35 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
36 //| JFATL initialization function |
\r
37 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
40 //---- óñòàíîâêà ñòèëÿ èçîáðàæåíèÿ èíäèêàòîðà
\r
41 SetIndexStyle(0,DRAW_LINE);
\r
42 //---- îïðåäåëåíèå áóôôåðà äëÿ ïîäñ÷¸òà
\r
43 SetIndexBuffer(0,JFatl);
\r
44 //---- óñòàíîâêà çíà÷åíèé èíäèêàòîðà, êîòîðûå íå áóäóò âèäèìû íà ãðàôèêå
\r
45 SetIndexEmptyValue(0,0.0);
\r
46 //---- îïðåäåëåíèå ðàçìåðà áóôôåðà Filter[]
\r
47 nf=38;int count=ArrayResize(Filter,nf+1);if(count==0){Alert("Íåâîçìîæíî âûäåëèòü ïàìÿòü ïîä ìàññèâ Filter");return(0);}
\r
48 //+=== Èíèöèàëèçàöèÿ êîýôôèöèåíòîâ öèôðîâîãî ôèëüòðà =======================================================================+
\r
49 Filter[00]=+0.4360409450;Filter[01]=+0.3658689069;Filter[02]=+0.2460452079;Filter[03]=+0.1104506886;Filter[04]=-0.0054034585;
\r
50 Filter[05]=-0.0760367731;Filter[06]=-0.0933058722;Filter[07]=-0.0670110374;Filter[08]=-0.0190795053;Filter[09]=+0.0259609206;
\r
51 Filter[10]=+0.0502044896;Filter[11]=+0.0477818607;Filter[12]=+0.0249252327;Filter[13]=-0.0047706151;Filter[14]=-0.0272432537;
\r
52 Filter[15]=-0.0338917071;Filter[16]=-0.0244141482;Filter[17]=-0.0055774838;Filter[18]=+0.0128149838;Filter[19]=+0.0226522218;
\r
53 Filter[20]=+0.0208778257;Filter[21]=+0.0100299086;Filter[22]=-0.0036771622;Filter[23]=-0.0136744850;Filter[24]=-0.0160483392;
\r
54 Filter[25]=-0.0108597376;Filter[26]=-0.0016060704;Filter[27]=+0.0069480557;Filter[28]=+0.0110573605;Filter[29]=+0.0095711419;
\r
55 Filter[30]=+0.0040444064;Filter[31]=-0.0023824623;Filter[32]=-0.0067093714;Filter[33]=-0.0072003400;Filter[34]=-0.0047717710;
\r
56 Filter[35]=+0.0005541115;Filter[36]=+0.0007860160;Filter[37]=+0.0130129076;Filter[38]=+0.0040364019;
\r
57 //+=========================================================================================================================+
\r
58 //---- óñòàíîâêà àëåðòîâ íà íåäîïóñòèìûå çíà÷åíèÿ âõîäíûõ ïàðàìåòðîâ ==============================================================+
\r
59 if(Phase<-100){Alert("Ïàðàìåòð Phase äîëæåí áûòü îò -100 äî +100" + " Âû ââåëè íåäîïóñòèìîå " +Phase+ " áóäåò èñïîëüçîâàíî -100");}
\r
60 if(Phase> 100){Alert("Ïàðàìåòð Phase äîëæåí áûòü îò -100 äî +100" + " Âû ââåëè íåäîïóñòèìîå " +Phase+ " áóäåò èñïîëüçîâàíî 100");}
\r
61 if(Length< 1){Alert("Ïàðàìåòð Length äîëæåí áûòü íå ìåíåå 1" + " Âû ââåëè íåäîïóñòèìîå " +Length+ " áóäåò èñïîëüçîâàíî 1" );}
\r
62 PriceSeriesAlert(Input_Price_Customs);//---- îáðàùåíèå ê ôóíêöèè PriceSeriesAlert ///////////////////////////////////////////////////|
\r
63 //+================================================================================================================================+
\r
64 //---- óñòàíîâêà íîìåðà áàðà, íà÷èíàÿ ñ êîòîðîãî áóäåò îòðèñîâûâàòüñÿ èíäèêàòîð
\r
65 SetIndexDrawBegin(0,nf+30);
\r
66 //---- çàâåðøåíèå èíèöèàëèçàöèè
\r
69 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
70 //| JFATL iteration function |
\r
71 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
74 //---- ïðîâåðêà êîëè÷åñòâà áàðîâ íà äîñòàòî÷íîñòü äëÿ ðàñ÷¸òà
\r
75 if(Bars-1<=nf)return(0);
\r
76 //----+ Ââåäåíèå öåëûõ ïåðåìåííûõ è ïîëó÷åíèå óæå ïîäñ÷èòàííûõ áàðîâ
\r
77 //---- áëîêèðîâàíèå ïåðåñ÷¸òà âñåõ ïîäñ÷èòàííûõ è îòðèñîâàííûõ áàðîâ ïðè ïîäêëþ÷åíèè ê èíòåðíåòó
\r
78 int reset,MaxBar,limit,bar,counted_bars=INDICATOR_COUNTED(0); INDICATOR_COUNTED(1);
\r
79 //---- ïðîâåðêà íà âîçìîæíûå îøèáêè
\r
80 if (counted_bars<0){INDICATOR_COUNTED(-1);return(-1);}
\r
81 //---- ïîñëåäíèé ïîäñ÷èòàííûé áàð äîëæåí áûòü ïåðåñ÷èòàí
\r
82 if (counted_bars>0) counted_bars--;
\r
83 //----+ Ââåäåíèå è èíèöèàëèçàöèÿ âíóòðåííèõ ïåðåìåííûõ ôóíêöèè JJMASeries, nJMAnumber=1(Îäíî îáðàùåíèå ê ôóíêöèè)
\r
84 if (counted_bars==0)JJMASeriesReset(1);
\r
85 //---- îïðåäåëåíèå íîìåðà ñàìîãî ñòàðîãî áàðà, íà÷èíàÿ ñ êîòîðîãî áóäåò ïðîèçåä¸í ïåðåñ÷¸ò íîâûõ áàðîâ
\r
86 limit=Bars-counted_bars-1; MaxBar=Bars-1-nf;
\r
87 //---- êîðåêöèÿ ìàêñèìàëüíîãî íîìåðà ñàìîãî ñòàðîãî áàðà, íà÷èíàÿ ñ êîòîðîãî áóäåò ïðîèçåä¸í ïåðåñ÷¸ò íîâûõ áàðîâ
\r
88 //---- èíèöèàëèçàöèÿ íóëÿ
\r
91 for(bar=limit;bar>=MaxBar;bar--)JFatl[bar]=0.0;
\r
95 //----+ îñíîâíîé öèêë ðàñ÷¸òà èíäèêàòîðà
\r
96 for(bar=limit;bar>=0;bar--)
\r
99 for(int ii=0;ii<=nf;ii++)
\r
101 //----+ Îáðàùåíèå ê ôóíêöèè PriceSeries äëÿ ïîëó÷åíèÿ âõîäíîé öåíû Series
\r
102 Price=PriceSeries(Input_Price_Customs, bar+ii);
\r
103 //----+ ôîðìóëà äëÿ ôèëüòðà FATL
\r
104 FILTER=FILTER+Filter[ii]*Price;
\r
106 //----+ JMA ñãëàæèâàíèå ïîëó÷åííîãî èíäèêàòîðà, ïàðàìåòð nJMAMaxBar óìåíüøåí íà ðàçìåð ôèëüòðà nf
\r
107 //----+ Îáðàùåíèå ê ôóíêöèè JJMASeries çà íîìåðîì 0, ïàðàìåòðû nJMAPhase è nJMALength íå ìåíÿþòñÿ íà êàæäîì áàðå (nJMAdin=0)
\r
108 Resalt=JJMASeries(0,0,MaxBar,limit,Phase,Length,FILTER,bar,reset);
\r
109 //----+ ïðîâåðêà íà îòñóòñòâèå îøèáêè â ïðåäûäóùåé îïåðàöèè
\r
110 if(reset!=0){INDICATOR_COUNTED(-1);return(-1);}
\r
114 //---- çàâåðøåíèå âû÷èñëåíèé çíà÷åíèé èíäèêàòîðà
\r
117 //+---------------------------------------------------------------------------------------------------------------------------+
\r
118 //----+ Ââåäåíèå ôóíêöèè JJMASeries (ôàéë JJMASeries.mqh ñëåäóåò ïîëîæèòü â ïàïêó (äèðåêòîðèþ): MetaTrader\experts\include)
\r
119 //----+ Ââåäåíèå ôóíêöèè JJMASeriesReset (äîïîëíèòåëüíàÿ ôóíêöèÿ ôàéëà JJMASeries.mqh)
\r
120 //----+ Ââåäåíèå ôóíêöèè INDICATOR_COUNTED(äîïîëíèòåëüíàÿ ôóíêöèÿ ôàéëà JJMASeries.mqh)
\r
121 #include <JJMASeries.mqh>
\r
122 //+---------------------------------------------------------------------------------------------------------------------------+
\r
123 //----+ Ââåäåíèå ôóíêöèè PriceSeries, ôàéë PriceSeries.mqh ñëåäóåò ïîëîæèòü â ïàïêó (äèðåêòîðèþ): MetaTrader\experts\include
\r
124 //----+ Ââåäåíèå ôóíêöèè PriceSeriesAlert (äîïîëíèòåëüíàÿ ôóíêöèÿ ôàéëà PriceSeries.mqh)
\r
125 #include <PriceSeries.mqh>
\r
126 //+---------------------------------------------------------------------------------------------------------------------------+