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 //| JMACD: 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_separate_window
\r
20 //---- êîëè÷åñòâî èíäèêàòîðíûõ áóôôåðîâ
\r
21 #property indicator_buffers 2
\r
22 //---- öâåòà èíäèêàòîðà
\r
23 #property indicator_color1 Gray
\r
24 #property indicator_color2 Red
\r
25 //---- òîëùèíà èíäèêàòîðíûõ ëèíèé
\r
26 #property indicator_width1 3
\r
27 //---- ñòèëü ñèãíàëüíîé ëèíèè èíäèêàòîðà
\r
28 #property indicator_style2 4
\r
29 //---- ïàðàìåòðû ãîðèçîíòàëüíûõ óðîâíåé èíäèêàòîðà
\r
30 #property indicator_level1 0.0
\r
31 #property indicator_levelcolor Blue
\r
32 #property indicator_levelstyle 4
\r
33 //---- ÂÕÎÄÍÛÅ ÏÀÐÀÌÅÒÐÛ ÈÍÄÈÊÀÒÎÐÀ þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþææ+
\r
34 extern int FastJMA=12; // ãëóáèíà ñãëàæèâàíèÿ áûñòðîé JMA
\r
35 extern int SlowJMA=26; // ãëóáèíà ñãëàæèâàíèÿ ìåäëåííîé JMA
\r
36 extern int SignalJMA=9; // ãëóáèíà ñãëàæèâàíèÿ ñèãíàëüíîé JMA
\r
37 extern int JMACD_Phase = 100; // ïàðàìåòð, èçìåíÿþùèéñÿ â ïðåäåëàõ -100 ... +100, âëèÿåò íà êà÷åñòâî ïåðåõîäíûx ïðîöåññîâ JMACD
\r
38 extern int Signal_Phase = 100; // ïàðàìåòð, èçìåíÿþùèéñÿ â ïðåäåëàõ -100 ... +100, âëèÿåò íà êà÷åñòâî ïåðåõîäíûx ïðîöåññîâ ñèãíàëüíîé ëèíèè
\r
39 extern int Input_Price_Customs = 0;//Âûáîð öåí, ïî êîòîðûì ïðîèçâîäèòñÿ ðàñ÷¸ò èíäèêàòîðà
\r
40 //(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
41 //11-Heiken Ashi Low, 12-Heiken Ashi High, 13-Heiken Ashi Open, 14-Heiken Ashi Close.)
\r
42 //---- æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ+
\r
43 //---- èíäèêàòîðíûå áóôôåðû
\r
44 double Ind_buffer1[];
\r
45 double Ind_buffer2[];
\r
46 //---- ïåðåìåííûå ñ ïëàâàþùåé òî÷êîé
\r
47 double F.JMA,S.JMA,JMACD,Series,Signal;
\r
48 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
49 //| JMACD initialization function |
\r
50 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
53 //---- ñòèëè èçîáðàæåíèÿ èíäèêàòîðà
\r
54 SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID);
\r
55 SetIndexStyle(1,DRAW_LINE);
\r
56 //---- 4 èíäèêàòîðíûõ áóôôåðà èñïîëüçîâàíû äëÿ ñ÷¸òà.
\r
57 if(!SetIndexBuffer(0,Ind_buffer1)&&
\r
58 !SetIndexBuffer(1,Ind_buffer2))
\r
59 Print("cannot set indicator buffers!");
\r
60 //---- óñòàíîâêà çíà÷åíèé èíäèêàòîðà, êîòîðûå íå áóäóò âèäèìû íà ãðàôèêå
\r
61 SetIndexEmptyValue(0,0.0);
\r
62 SetIndexEmptyValue(1,0.0);
\r
63 //---- èìåíà äëÿ îêîí äàííûõ è ëýéáû äëÿ ñóáúîêîí.
\r
64 IndicatorShortName("JMACD("+FastJMA+","+SlowJMA+","+SignalJMA+")");
\r
65 SetIndexLabel(0,"JMACD");
\r
66 SetIndexLabel(1,"Signal");
\r
67 //---- Óñòàíîâêà ôîðìàòà òî÷íîñòè (êîëè÷åñòâî çíàêîâ ïîñëå äåñÿòè÷íîé òî÷êè) äëÿ âèçóàëèçàöèè çíà÷åíèé èíäèêàòîðà
\r
69 //---- óñòàíîâêà àëåðòîâ íà íåäîïóñòèìûå çíà÷åíèÿ âõîäíûõ ïàðàìåòðîâ =====================================================================================+
\r
70 if(JMACD_Phase<-100) {Alert("Ïàðàìåòð JMACD_Phase äîëæåí áûòü îò -100 äî +100" + " Âû ââåëè íåäîïóñòèìîå " +JMACD_Phase+ " áóäåò èñïîëüçîâàíî -100");}
\r
71 if(JMACD_Phase> 100) {Alert("Ïàðàìåòð JMACD_Phase äîëæåí áûòü îò -100 äî +100" + " Âû ââåëè íåäîïóñòèìîå " +JMACD_Phase+ " áóäåò èñïîëüçîâàíî 100");}
\r
72 if(Signal_Phase<-100){Alert("Ïàðàìåòð Signal_Phase äîëæåí áûòü îò -100 äî +100" + " Âû ââåëè íåäîïóñòèìîå " +Signal_Phase+ " áóäåò èñïîëüçîâàíî -100");}
\r
73 if(Signal_Phase> 100){Alert("Ïàðàìåòð Signal_Phase äîëæåí áûòü îò -100 äî +100" + " Âû ââåëè íåäîïóñòèìîå " +Signal_Phase+ " áóäåò èñïîëüçîâàíî 100");}
\r
74 if(FastJMA< 1){Alert("Ïàðàìåòð FastJMA äîëæåí áûòü íå ìåíåå 1" + " Âû ââåëè íåäîïóñòèìîå " +FastJMA+ " áóäåò èñïîëüçîâàíî 1" );}
\r
75 if(SlowJMA< 1){Alert("Ïàðàìåòð SlowJMA äîëæåí áûòü íå ìåíåå 1" + " Âû ââåëè íåäîïóñòèìîå " +SlowJMA+ " áóäåò èñïîëüçîâàíî 1" );}
\r
76 if(SignalJMA<1){Alert("Ïàðàìåòð SignalJMA äîëæåí áûòü íå ìåíåå 1" + " Âû ââåëè íåäîïóñòèìîå " +SignalJMA+" áóäåò èñïîëüçîâàíî 1" );}
\r
77 PriceSeriesAlert(Input_Price_Customs);
\r
78 //+=======================================================================================================================================================+
\r
79 //---- çàâåðøåíèå èíèöèàëèçàöèè
\r
82 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
83 //| JMACD iteration function |
\r
84 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
87 //----+ Ââåäåíèå öåëûõ ïåðåìåííûõ è ïîëó÷åíèå óæå ïîäñ÷èòàííûõ áàðîâ
\r
88 //---- áëîêèðîâàíèå ïåðåñ÷¸òà âñåõ ïîäñ÷èòàííûõ è îòðèñîâàííûõ áàðîâ ïðè ïîäêëþ÷åíèè ê èíòåðíåòó
\r
89 int reset,limit,MaxBar,MaxBarS,counted_bars=INDICATOR_COUNTED(0); INDICATOR_COUNTED(1);
\r
90 //---- ïðîâåðêà íà âîçìîæíûå îøèáêè
\r
91 if (counted_bars<0){INDICATOR_COUNTED(-1);return(-1);}
\r
92 //---- ïîñëåäíèé ïîäñ÷èòàííûé áàð äîëæåí áûòü ïåðåñ÷èòàí
\r
93 if (counted_bars>0) counted_bars--;
\r
94 //----+ Ââåäåíèå è èíèöèàëèçàöèÿ âíóòðåííèõ ïåðåìåííûõ ôóíêöèè JJMASeries, nJMAnumber=3(Òðè îáðàùåíèÿ ê ôóíêöèè)
\r
95 if (counted_bars==0)JJMASeriesReset(3);
\r
96 //---- îïðåäåëåíèå íîìåðà ñàìîãî ñòàðîãî áàðà, íà÷èíàÿ ñ êîòîðîãî áóäåò ïðîèçåä¸í ïåðåñ÷¸ò íîâûõ áàðîâ
\r
97 limit=Bars-counted_bars-1; MaxBar=Bars-1; MaxBarS=MaxBar-30;
\r
99 //----+ ÎÑÍÎÂÍÎÉ ÖÈÊË ÂÛ×ÈÑËÅÍÈß ÈÍÄÈÊÀÒÎÐÀ JMACD
\r
100 for(int bar=limit; bar>=0; bar--)
\r
102 //----+ Îáðàùåíèå ê ôóíêöèè PriceSeries äëÿ ïîëó÷åíèÿ âõîäíîé öåíû Series
\r
103 Series=PriceSeries(Input_Price_Customs, bar);
\r
105 //----+ Äâà Îáðàùåíèÿ ê ôóíêöèè JJMASeries çà íîìåðàìè 0, 1. Ïàðàìåòðû nJMAPhase è nJMALength íå ìåíÿþòñÿ íà êàæäîì áàðå (nJMAdin=0)
\r
106 F.JMA=JJMASeries(0,0,MaxBar,limit,JMACD_Phase,FastJMA,Series,bar,reset);
\r
107 //----+ ïðîâåðêà íà îòñóòñòâèå îøèáêè â ïðåäûäóùåé îïåðàöèè
\r
108 if(reset!=0){INDICATOR_COUNTED(-1);return(-1);}
\r
110 S.JMA=JJMASeries(1,0,MaxBar,limit,JMACD_Phase,SlowJMA,Series,bar,reset);
\r
111 //----+ ïðîâåðêà íà îòñóòñòâèå îøèáêè â ïðåäûäóùåé îïåðàöèè
\r
112 if(reset!=0){INDICATOR_COUNTED(-1);return(-1);}
\r
114 //----+ Ôîðìóëà äëÿ JMACD
\r
116 //----+ èçìåíåíèå åäèíèöû èçìåðåíèÿ JMACD äî ïóíêòîâ
\r
117 JMACD = JMACD/Point;
\r
118 Ind_buffer1[bar]=JMACD;
\r
119 //----+ Îáðàùåíèå ê ôóíêöèè JJMASeries çà íîìåðîì 2, (nJMAdin=0, Â ýòîì îáðàùåíèè ïàðàìåòð nJMAMaxBar óìåíüøåí íà 30 ò. ê. ýòî ïîâòîðíîå JMA ñãëàæèâàíèå)
\r
120 Signal=JJMASeries(2,0,MaxBarS,limit,Signal_Phase,SignalJMA,JMACD,bar,reset);
\r
121 //----+ ïðîâåðêà íà îòñóòñòâèå îøèáêè â ïðåäûäóùåé îïåðàöèè
\r
122 if(reset!=0){INDICATOR_COUNTED(-1);return(-1);}
\r
123 Ind_buffer2[bar]=Signal;
\r
125 //---- çàâåðøåíèå âû÷èñëåíèé çíà÷åíèé èíäèêàòîðà
\r
129 //+---------------------------------------------------------------------------------------------------------------------------+
\r
130 //----+ Ââåäåíèå ôóíêöèè JJMASeries (ôàéë JJMASeries.mqh ñëåäóåò ïîëîæèòü â ïàïêó (äèðåêòîðèþ): MetaTrader\experts\include)
\r
131 //----+ Ââåäåíèå ôóíêöèè JJMASeriesReset (äîïîëíèòåëüíàÿ ôóíêöèÿ ôàéëà JJMASeries.mqh)
\r
132 //----+ Ââåäåíèå ôóíêöèè INDICATOR_COUNTED(äîïîëíèòåëüíàÿ ôóíêöèÿ ôàéëà JJMASeries.mqh)
\r
133 #include <JJMASeries.mqh>
\r
134 //+---------------------------------------------------------------------------------------------------------------------------+
\r
135 //----+ Ââåäåíèå ôóíêöèè PriceSeries, ôàéë PriceSeries.mqh ñëåäóåò ïîëîæèòü â ïàïêó (äèðåêòîðèþ): MetaTrader\experts\include
\r
136 //----+ Ââåäåíèå ôóíêöèè PriceSeriesAlert (äîïîëíèòåëüíàÿ ôóíêöèÿ ôàéëà PriceSeries.mqh)
\r
137 #include <PriceSeries.mqh>
\r
138 //+---------------------------------------------------------------------------------------------------------------------------+
\r