2 Äëÿ ðàáîòû èíäèêàòîðà ñëåäóåò ïîëîæèòü ôàéëû
\r
6 â ïàïêó (äèðåêòîðèþ): MetaTrader\experts\include\
\r
9 â ïàïêó (äèðåêòîðèþ): MetaTrader\indicators\
\r
11 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
12 //| 3c_JMACDf.mq4 |
\r
13 //| JMA code: Copyright © 2005, Weld, Jurik Research |
\r
14 //| http://weld.torguem.net |
\r
15 //| JMACDf: Copyright © 2006, Nikolay Kositsin |
\r
16 //| Khabarovsk, farria@mail.redcom.ru |
\r
17 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
18 #property copyright "Nikolay Kositsin"
\r
19 #property link "farria@mail.redcom.ru"
\r
20 //---- îòðèñîâêà èíäèêàòîðà â îòäåëüíîì îêíå
\r
21 #property indicator_separate_window
\r
22 //---- êîëè÷åñòâî èíäèêàòîðíûõ áóôôåðîâ
\r
23 #property indicator_buffers 4
\r
24 //---- öâåòà èíäèêàòîðà
\r
25 #property indicator_color1 Yellow
\r
26 #property indicator_color2 Red
\r
27 #property indicator_color3 Gray
\r
28 #property indicator_color4 Blue
\r
29 //---- òîëùèíà èíäèêàòîðíûõ ëèíèé
\r
30 #property indicator_width1 3
\r
31 #property indicator_width2 3
\r
32 #property indicator_width3 3
\r
33 //---- ñòèëü ñèãíàëüíîé ëèíèè èíäèêàòîðà
\r
34 #property indicator_style4 4
\r
35 //---- ïàðàìåòðû ãîðèçîíòàëüíûõ óðîâíåé èíäèêàòîðà
\r
36 #property indicator_level1 0.0
\r
37 #property indicator_levelcolor LimeGreen
\r
38 #property indicator_levelstyle 4
\r
39 //---- ÂÕÎÄÍÛÅ ÏÀÐÀÌÅÒÐÛ ÈÍÄÈÊÀÒÎÐÀ þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþææ+
\r
40 extern int FastJFatl=8; // ãëóáèíà ñãëàæèâàíèÿ áûñòðîãî JFatl
\r
41 extern int SlowJFatl=20; // ãëóáèíà ñãëàæèâàíèÿ ìåäëåííîãî JFatl
\r
42 extern int SignalJMA=12; // ãëóáèíà ñãëàæèâàíèÿ ñèãíàëüíîé JMA
\r
43 extern int JMACD_Phase = 100; // ïàðàìåòð, èçìåíÿþùèéñÿ â ïðåäåëàõ -100 ... +100, âëèÿåò íà êà÷åñòâî ïåðåõîäíûx ïðîöåññîâ JMACD
\r
44 extern int Signal_Phase = 100; // ïàðàìåòð, èçìåíÿþùèéñÿ â ïðåäåëàõ -100 ... +100, âëèÿåò íà êà÷åñòâî ïåðåõîäíûx ïðîöåññîâ ñèãíàëüíîé ëèíèè
\r
45 extern int Input_Price_Customs = 0;//Âûáîð öåí, ïî êîòîðûì ïðîèçâîäèòñÿ ðàñ÷¸ò èíäèêàòîðà
\r
46 //(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
47 //11-Heiken Ashi Low, 12-Heiken Ashi High, 13-Heiken Ashi Open, 14-Heiken Ashi Close.)
\r
48 //---- æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ+
\r
49 //---- èíäèêàòîðíûå áóôôåðû
\r
50 double Ind_buffer1[];
\r
51 double Ind_buffer2[];
\r
52 double Ind_buffer3[];
\r
53 double Ind_buffer4[];
\r
54 //---- ïåðåìåííûå ñ ïëàâàþùåé òî÷êîé
\r
55 double Fast.JFATL,Slow.JFATL,JMACDf,Series,trend,Signal;
\r
56 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
57 //| JMACDf initialization function |
\r
58 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
61 //---- ñòèëè èçîáðàæåíèÿ èíäèêàòîðà
\r
62 SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID);
\r
63 SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID);
\r
64 SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_SOLID);
\r
65 SetIndexStyle(3,DRAW_LINE);
\r
66 //---- 4 èíäèêàòîðíûõ áóôôåðà èñïîëüçîâàíû äëÿ ñ÷¸òà.
\r
67 if(!SetIndexBuffer(0,Ind_buffer1)&&
\r
68 !SetIndexBuffer(1,Ind_buffer2)&&
\r
69 !SetIndexBuffer(2,Ind_buffer3)&&
\r
70 !SetIndexBuffer(3,Ind_buffer4))
\r
71 Print("cannot set indicator buffers!");
\r
72 //---- óñòàíîâêà çíà÷åíèé èíäèêàòîðà, êîòîðûå íå áóäóò âèäèìû íà ãðàôèêå
\r
73 SetIndexEmptyValue(0,0.0);
\r
74 SetIndexEmptyValue(1,0.0);
\r
75 SetIndexEmptyValue(2,0.0);
\r
76 SetIndexEmptyValue(3,0.0);
\r
77 //---- èìåíà äëÿ îêîí äàííûõ è ëýéáû äëÿ ñóáúîêîí.
\r
78 IndicatorShortName("JMACDf("+FastJFatl+","+SlowJFatl+","+SignalJMA+")");
\r
79 SetIndexLabel(0,"Up_Trend");
\r
80 SetIndexLabel(1,"Down_Trend");
\r
81 SetIndexLabel(2,"Straight_Trend");
\r
82 SetIndexLabel(3,"Signal");
\r
83 //---- Óñòàíîâêà ôîðìàòà òî÷íîñòè (êîëè÷åñòâî çíàêîâ ïîñëå äåñÿòè÷íîé òî÷êè) äëÿ âèçóàëèçàöèè çíà÷åíèé èíäèêàòîðà
\r
85 //---- óñòàíîâêà àëåðòîâ íà íåäîïóñòèìûå çíà÷åíèÿ âõîäíûõ ïàðàìåòðîâ ===================================================================================+
\r
86 if(JMACD_Phase<-100) {Alert("Ïàðàìåòð JMACD_Phase äîëæåí áûòü îò -100 äî +100" + " Âû ââåëè íåäîïóñòèìîå " +JMACD_Phase+ " áóäåò èñïîëüçîâàíî -100");}
\r
87 if(JMACD_Phase> 100) {Alert("Ïàðàìåòð JMACD_Phase äîëæåí áûòü îò -100 äî +100" + " Âû ââåëè íåäîïóñòèìîå " +JMACD_Phase+ " áóäåò èñïîëüçîâàíî 100");}
\r
88 if(Signal_Phase<-100){Alert("Ïàðàìåòð Signal_Phase äîëæåí áûòü îò -100 äî +100" + " Âû ââåëè íåäîïóñòèìîå " +Signal_Phase+" áóäåò èñïîëüçîâàíî -100");}
\r
89 if(Signal_Phase> 100){Alert("Ïàðàìåòð Signal_Phase äîëæåí áûòü îò -100 äî +100" + " Âû ââåëè íåäîïóñòèìîå " +Signal_Phase+" áóäåò èñïîëüçîâàíî 100");}
\r
90 if(FastJFatl< 1) {Alert("Ïàðàìåòð FastJFatl äîëæåí áûòü íå ìåíåå 1" + " Âû ââåëè íåäîïóñòèìîå " +FastJFatl+ " áóäåò èñïîëüçîâàíî 1" );}
\r
91 if(SlowJFatl< 1) {Alert("Ïàðàìåòð SlowJFatl äîëæåí áûòü íå ìåíåå 1" + " Âû ââåëè íåäîïóñòèìîå " +SlowJFatl+ " áóäåò èñïîëüçîâàíî 1" );}
\r
92 if(SignalJMA<1) {Alert("Ïàðàìåòð SignalJMA äîëæåí áûòü íå ìåíåå 1" + " Âû ââåëè íåäîïóñòèìîå " +SignalJMA+" áóäåò èñïîëüçîâàíî 1" );}
\r
93 PriceSeriesAlert(Input_Price_Customs);
\r
94 //+=====================================================================================================================================================+
\r
95 //---- çàâåðøåíèå èíèöèàëèçàöèè
\r
98 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
99 //| JMACDf iteration function |
\r
100 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
103 //----+ Ââåäåíèå öåëûõ ïåðåìåííûõ è ïîëó÷åíèå óæå ïîäñ÷èòàííûõ áàðîâ
\r
104 //---- áëîêèðîâàíèå ïåðåñ÷¸òà âñåõ ïîäñ÷èòàííûõ è îòðèñîâàííûõ áàðîâ ïðè ïîäêëþ÷åíèè ê èíòåðíåòó
\r
105 int reset,limit,MaxBar,MaxBarS,counted_bars=INDICATOR_COUNTED(0); INDICATOR_COUNTED(1);
\r
106 //---- ïðîâåðêà íà âîçìîæíûå îøèáêè
\r
107 if (counted_bars<0){INDICATOR_COUNTED(-1);return(-1);}
\r
108 //---- ïîñëåäíèé ïîäñ÷èòàííûé áàð äîëæåí áûòü ïåðåñ÷èòàí
\r
109 if (counted_bars>0) counted_bars--;
\r
110 //----+ Ââåäåíèå è èíèöèàëèçàöèÿ âíóòðåííèõ ïåðåìåííûõ ôóíêöèè JJMASeries, nJMAnumber=1(Îäíî îáðàùåíèå ê ôóíêöèè)
\r
111 if (counted_bars==0)JJMASeriesReset(1);
\r
112 //---- îïðåäåëåíèå íîìåðà ñàìîãî ñòàðîãî áàðà, íà÷èíàÿ ñ êîòîðîãî áóäåò ïðîèçåä¸í ïåðåñ÷¸ò íîâûõ áàðîâ
\r
113 limit=Bars-counted_bars-1; MaxBar=Bars-1; MaxBarS=MaxBar-30;
\r
115 //----+ ÎÑÍÎÂÍÎÉ ÖÈÊË ÂÛ×ÈÑËÅÍÈß ÈÍÄÈÊÀÒÎÐÀ JMACD
\r
116 for(int bar=limit; bar>=0; bar--)
\r
118 //----+ Îáðàùåíèå ê ôóíêöèè PriceSeries äëÿ ïîëó÷åíèÿ âõîäíîé öåíû Series
\r
119 Series=PriceSeries(Input_Price_Customs, bar);
\r
120 //----+ Äâà Îáðàùåíèÿ ê ïîëüçîâàòåëüñêîìó èíäèêàòîðó JFatl
\r
121 Fast.JFATL= iCustom(NULL,0,"JFatl",FastJFatl,JMACD_Phase,0,Input_Price_Customs,0,bar);
\r
122 Slow.JFATL= iCustom(NULL,0,"JFatl",SlowJFatl,JMACD_Phase,0,Input_Price_Customs,0,bar);
\r
123 //----+ Ôîðìóëà äëÿ JMACDf
\r
124 JMACDf=Fast.JFATL-Slow.JFATL;
\r
125 //----+ èçìåíåíèå åäèíèöû èçìåðåíèÿ JMACDf äî ïóíêòîâ
\r
126 JMACDf = JMACDf/Point;
\r
127 //---- +SSSSSSSSSSSSSSSS <<< Òð¸õöâåòíûé êîä èíäèêàòîðà >>> SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
128 trend=JMACDf-Ind_buffer1[bar+1]-Ind_buffer2[bar+1]-Ind_buffer3[bar+1];
\r
129 if(trend>0.0) {Ind_buffer1[bar]=JMACDf; Ind_buffer2[bar]=0.0; Ind_buffer3[bar]=0.0;}
\r
130 else{if(trend<0.0){Ind_buffer1[bar]=0.0; Ind_buffer2[bar]=JMACDf; Ind_buffer3[bar]=0.0;}
\r
131 else {Ind_buffer1[bar]=0.0; Ind_buffer2[bar]=0.0; Ind_buffer3[bar]=JMACDf;}}
\r
132 //---- +SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSÛSSSSSSSSSSSSSSSSS+
\r
134 //----+ Îáðàùåíèå ê ôóíêöèè JJMASeries çà íîìåðîì 0, (nJMAdin=0, Â ýòîì îáðàùåíèè ïàðàìåòð nJMAMaxBar
\r
135 //----+ óìåíüøåí íà 30 ò. ê. ýòî ïîâòîðíîå JMA ñãëàæèâàíèå: ïðåäûäóùåå áûëî â èíäèêàòîðå JFatl)
\r
136 Signal=JJMASeries(0,0,MaxBarS,limit,Signal_Phase,SignalJMA,JMACDf,bar,reset);
\r
137 //----+ ïðîâåðêà íà îòñóòñòâèå îøèáêè â ïðåäûäóùåé îïåðàöèè
\r
138 if(reset!=0){INDICATOR_COUNTED(-1);return(-1);}
\r
139 Ind_buffer4[bar]=Signal;
\r
142 if(limit>=MaxBarS){int iii=MaxBarS;Ind_buffer1[iii]=0;Ind_buffer2[iii]=0;Ind_buffer3[iii]=0;}
\r
143 //---- çàâåðøåíèå âû÷èñëåíèé çíà÷åíèé èíäèêàòîðà
\r
146 //+---------------------------------------------------------------------------------------------------------------------------+
\r
147 //----+ Ââåäåíèå ôóíêöèè JJMASeries (ôàéë JJMASeries.mqh ñëåäóåò ïîëîæèòü â ïàïêó (äèðåêòîðèþ): MetaTrader\experts\include)
\r
148 //----+ Ââåäåíèå ôóíêöèè JJMASeriesReset (äîïîëíèòåëüíàÿ ôóíêöèÿ ôàéëà JJMASeries.mqh)
\r
149 //----+ Ââåäåíèå ôóíêöèè INDICATOR_COUNTED(äîïîëíèòåëüíàÿ ôóíêöèÿ ôàéëà JJMASeries.mqh)
\r
150 #include <JJMASeries.mqh>
\r
151 //+---------------------------------------------------------------------------------------------------------------------------+
\r
152 //----+ Ââåäåíèå ôóíêöèè PriceSeries, ôàéë PriceSeries.mqh ñëåäóåò ïîëîæèòü â ïàïêó (äèðåêòîðèþ): MetaTrader\experts\include
\r
153 //----+ Ââåäåíèå ôóíêöèè PriceSeriesAlert (äîïîëíèòåëüíàÿ ôóíêöèÿ ôàéëà PriceSeries.mqh)
\r
154 #include <PriceSeries.mqh>
\r
155 //+---------------------------------------------------------------------------------------------------------------------------+