bleh
[mqlkit.git] / indicators / JJMA.MQ4
blob77b1a6f29679cf2bc873ac59da4940b3bb178cea
1 /*\r
2 Äëÿ  ðàáîòû  èíäèêàòîðà  ñëåäóåò  ïîëîæèòü ôàéëû \r
3 JJMASeries.mqh è \r
4 PriceSeries.mqh \r
5 â ïàïêó (äèðåêòîðèþ): MetaTrader\experts\include\\r
6 Heiken Ashi#.mq4\r
7 â ïàïêó (äèðåêòîðèþ): MetaTrader\indicators\\r
8 */\r
9 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+ \r
10 //|                                                         JJMA.mq4 | \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
33 double JJMA[];\r
34 //---- ïåðåìåííûå ñ ïëàâàþùåé òî÷êîé  \r
35 double Temp_Series,Resalt;\r
36 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+ \r
37 //| JJMA indicator initialization function                           | \r
38 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+ \r
39 int init() \r
40 {  \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
52 //----\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
61 return(0); \r
62 \r
63 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+ \r
64 //| J2JMA iteration function                                         | \r
65 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+ \r
66 int start() \r
67 \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
82   {\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
89     JJMA[bar]=Resalt;\r
90   }\r
91 //---- çàâåðøåíèå âû÷èñëåíèé çíà÷åíèé èíäèêàòîðà\r
92 return(0); \r
93 \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 //+---------------------------------------------------------------------------------------------------------------------------+