2 Äëÿ ðàáîòû èíäèêàòîðà ñëåäóåò ïîëîæèòü ôàéëû
\r
5 â ïàïêó (äèðåêòîðèþ): MetaTrader\experts\include\
\r
7 â ïàïêó (äèðåêòîðèþ): MetaTrader\indicators\
\r
9 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
11 //| JMA code: Copyright © 2005, Weld, Jurik Research |
\r
12 //| http://weld.torguem.net |
\r
13 //| MQL4+J2JMA: Copyright © 2006, Nikolay Kositsin |
\r
14 //| Khabarovsk, farria@mail.redcom.ru |
\r
15 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
16 #property copyright "Nikolay Kositsin"
\r
17 #property link "farria@mail.redcom.ru"
\r
18 //---- îòðèñîâêà èíäèêàòîðà â ãëàâíîì îêíå
\r
19 #property indicator_chart_window
\r
20 //---- êîëè÷åñòâî èíäèêàòîðíûõ áóôôåðîâ
\r
21 #property indicator_buffers 1
\r
22 //---- öâåò èíäèêàòîðà
\r
23 #property indicator_color1 Red
\r
24 //---- ÂÕÎÄÍÛÅ ÏÀÐÀÌÅÒÐÛ ÈÍÄÈÊÀÒÎÐÀ þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþææ+
\r
25 extern int Length = 5; // ãëóáèíà ïåðâîãî ñãëàæèâàíèÿ
\r
26 extern int Phase = 100; // ïàðàìåòð ïåðâîãî ñãëàæèâàíèÿ, èçìåíÿþùèéñÿ â ïðåäåëàõ -100 ... +100, âëèÿåò íà êà÷åñòâî ïåðåõîäíîãî ïðîöåññà;
\r
27 extern int Shift = 0; // cäâèã èíäèêàòîðà âäîëü îñè âðåìåíè
\r
28 extern int Input_Price_Customs = 0;//Âûáîð öåí, ïî êîòîðûì ïðîèçâîäèòñÿ ðàñ÷¸ò èíäèêàòîðà
\r
29 //(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
30 //11-Heiken Ashi Low, 12-Heiken Ashi High, 13-Heiken Ashi Open, 14-Heiken Ashi Close.)
\r
31 //---- æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ+
\r
32 //---- èíäèêàòîðíûå áóôôåðû
\r
34 //---- ïåðåìåííûå ñ ïëàâàþùåé òî÷êîé
\r
35 double Temp_Series,Resalt;
\r
36 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
37 //| JJMA indicator initialization function |
\r
38 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
41 //---- îïðåäåëåíèå ñòèëÿ èñïîëíåíèÿ ãðàôèêà
\r
42 SetIndexStyle (0,DRAW_LINE);
\r
43 //---- 1 èíäèêàòîðíûé áóôôåð èñïîëüçîâàí äëÿ ñ÷¸òà
\r
44 SetIndexBuffer(0,JJMA);
\r
45 //---- ãîðèçîíòàëüíûé ñäâèã èíäèêàòîðíîé ëèíèè
\r
46 SetIndexShift (0, Shift);
\r
47 //---- óñòàíîâêà çíà÷åíèé èíäèêàòîðà, êîòîðûå íå áóäóò âèäèìû íà ãðàôèêå
\r
48 SetIndexEmptyValue(0,0.0);
\r
49 //---- èìÿ äëÿ îêîí äàííûõ è ëýéáà äëÿ ñóáúîêîí.
\r
50 IndicatorShortName ("JJMA( Length="+Length+", Phase="+Phase+", Shift="+Shift+")");
\r
51 SetIndexLabel (0, "JJMA");
\r
53 IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
\r
54 //---- óñòàíîâêà àëåðòîâ íà íåäîïóñòèìûå çíà÷åíèÿ âõîäíûõ ïàðàìåòðîâ ==============================================================+
\r
55 if(Phase<-100){Alert("Ïàðàìåòð Phase äîëæåí áûòü îò -100 äî +100" + " Âû ââåëè íåäîïóñòèìîå " +Phase+ " áóäåò èñïîëüçîâàíî -100");}
\r
56 if(Phase> 100){Alert("Ïàðàìåòð Phase äîëæåí áûòü îò -100 äî +100" + " Âû ââåëè íåäîïóñòèìîå " +Phase+ " áóäåò èñïîëüçîâàíî 100");}
\r
57 if(Length< 1){Alert("Ïàðàìåòð Length äîëæåí áûòü íå ìåíåå 1" + " Âû ââåëè íåäîïóñòèìîå " +Length+ " áóäåò èñïîëüçîâàíî 1" );}
\r
58 PriceSeriesAlert(Input_Price_Customs);
\r
59 //+================================================================================================================================+
\r
60 //---- çàâåðøåíèå èíèöèàëèçàöèè
\r
63 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
64 //| J2JMA iteration function |
\r
65 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
68 //----+ Ââåäåíèå öåëûõ ïåðåìåííûõ è ïîëó÷åíèå óæå ïîäñ÷èòàííûõ áàðîâ
\r
69 //---- áëîêèðîâàíèå ïåðåñ÷¸òà âñåõ ïîäñ÷èòàííûõ è îòðèñîâàííûõ áàðîâ ïðè ïîäêëþ÷åíèè ê èíòåðíåòó
\r
70 int reset,MaxBar,counted_bars=INDICATOR_COUNTED(0); INDICATOR_COUNTED(1);
\r
71 //---- ïðîâåðêà íà âîçìîæíûå îøèáêè
\r
72 if (counted_bars<0){INDICATOR_COUNTED(-1);return(-1);}
\r
73 //---- ïîñëåäíèé ïîäñ÷èòàííûé áàð äîëæåí áûòü ïåðåñ÷èòàí
\r
74 if (counted_bars>0) counted_bars--;
\r
75 //----+ Ââåäåíèå è èíèöèàëèçàöèÿ âíóòðåííèõ ïåðåìåííûõ ôóíêöèè JJMASeries, nJMAnumber=1(Îäíî îáðàùåíèå ê ôóíêöèè)
\r
76 if (counted_bars==0)JJMASeriesReset(1);
\r
77 //---- îïðåäåëåíèå íîìåðà ñàìîãî ñòàðîãî áàðà, íà÷èíàÿ ñ êîòîðîãî áóäåò ïðîèçåä¸í ïåðåñ÷¸ò íîâûõ áàðîâ
\r
78 MaxBar=Bars-1; int limit=MaxBar-counted_bars;
\r
80 //----+ ÎÑÍÎÂÍÎÉ ÖÈÊË ÂÛ×ÈÑËÅÍÈß ÈÍÄÈÊÀÒÎÐÀ
\r
81 for(int bar=limit;bar>=0;bar--)
\r
83 //----+ Îáðàùåíèå ê ôóíêöèè PriceSeries äëÿ ïîëó÷åíèÿ âõîäíîé öåíû Series
\r
84 Temp_Series=PriceSeries(Input_Price_Customs, bar);
\r
85 //----+ Îáðàùåíèå ê ôóíêöèè JJMASeries çà íîìåðàì 0. Ïàðàìåòðû nJMAPhase è nJMALength íå ìåíÿþòñÿ íà êàæäîì áàðå (nJMAdin=0)
\r
86 Resalt=JJMASeries(0,0,MaxBar,limit,Phase,Length,Temp_Series,bar,reset);
\r
87 //----+ ïðîâåðêà íà îòñóòñòâèå îøèáêè â ïðåäûäóùåé îïåðàöèè
\r
88 if(reset!=0){INDICATOR_COUNTED(-1);return(-1);}
\r
91 //---- çàâåðøåíèå âû÷èñëåíèé çíà÷åíèé èíäèêàòîðà
\r
95 //+---------------------------------------------------------------------------------------------------------------------------+
\r
96 //----+ Ââåäåíèå ôóíêöèè JJMASeries (ôàéë JJMASeries.mqh ñëåäóåò ïîëîæèòü â ïàïêó (äèðåêòîðèþ): MetaTrader\experts\include)
\r
97 //----+ Ââåäåíèå ôóíêöèè JJMASeriesReset (äîïîëíèòåëüíàÿ ôóíêöèÿ ôàéëà JJMASeries.mqh)
\r
98 //----+ Ââåäåíèå ôóíêöèè INDICATOR_COUNTED(äîïîëíèòåëüíàÿ ôóíêöèÿ ôàéëà JJMASeries.mqh)
\r
99 #include <JJMASeries.mqh>
\r
100 //+---------------------------------------------------------------------------------------------------------------------------+
\r
101 //----+ Ââåäåíèå ôóíêöèè PriceSeries, ôàéë PriceSeries.mqh ñëåäóåò ïîëîæèòü â ïàïêó (äèðåêòîðèþ): MetaTrader\experts\include
\r
102 //----+ Ââåäåíèå ôóíêöèè PriceSeriesAlert (äîïîëíèòåëüíàÿ ôóíêöèÿ ôàéëà PriceSeries.mqh)
\r
103 #include <PriceSeries.mqh>
\r
104 //+---------------------------------------------------------------------------------------------------------------------------+