Merge branch 'master' of git://repo.or.cz/mqlkit
[mqlkit.git] / indicators / JCCIX.MQ4
blobce793adb1cae67a7e31031385eef63ce442d9096
1 /*\r
2 Äëÿ  ðàáîòû  èíäèêàòîðà  ñëåäóåò  ïîëîæèòü ôàéëû \r
3 JJMASeries.mqh\r
4 JurSeries.mqh \r
5 PriceSeries.mqh \r
6 â ïàïêó (äèðåêòîðèþ): MetaTrader\experts\include\\r
7 Heiken Ashi#.mq4\r
8 â ïàïêó (äèðåêòîðèþ): MetaTrader\indicators\\r
9 */\r
10 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+\r
11 //|                                                        JCCIX.mq4 |\r
12 //|   MQL4+3color: Copyright © 2006,                Nikolay Kositsin | \r
13 //|                              Khabarovsk,   farria@mail.redcom.ru | \r
14 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+ \r
15 #property copyright "Nikolay Kositsin"\r
16 #property link "farria@mail.redcom.ru" \r
17 //---- îòðèñîâêà èíäèêàòîðà â îòäåëüíîì îêíå\r
18 #property indicator_separate_window\r
19 //---- êîëè÷åñòâî èíäèêàòîðíûõ áóôôåðîâ\r
20 #property indicator_buffers  1\r
21 //---- öâåòà èíäèêàòîðà\r
22 #property indicator_color1  BlueViolet\r
23 //---- ïàðàìåòðû ãîðèçîíòàëüíûõ óðîâíåé èíäèêàòîðà\r
24 #property indicator_level1  0.5\r
25 #property indicator_level2 -0.5\r
26 #property indicator_level3  0.0\r
27 #property indicator_levelcolor MediumBlue\r
28 #property indicator_levelstyle 4\r
29 //---- ÂÕÎÄÍÛÅ ÏÀÐÀÌÅÒÐÛ ÈÍÄÈÊÀÒÎÐÀ þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþææ+\r
30 extern int  JCCIX.Length = 8;  // ãëóáèíà ñãëàæèâàíèÿ èíäèêàòîðà\r
31 extern int Input_Price_Customs = 0;//Âûáîð öåí, ïî êîòîðûì ïðîèçâîäèòñÿ ðàñ÷¸ò èíäèêàòîðà \r
32 //(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
33 //11-Heiken Ashi Low, 12-Heiken Ashi High,  13-Heiken Ashi Open, 14-Heiken Ashi Close.)\r
34 //---- æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ+\r
35 //---- èíäèêàòîðíûå áóôôåðû\r
36 double Ind_Buffer1[];\r
37 //---- öåëûå ïåðåìåííûå \r
38 int    w;\r
39 //---- ïåðåìåííûå ñ ïëàâàþùåé òî÷êîé    \r
40 double price,JCCIX,UPCCI,DNCCI,JUPCCIX,JDNCCIX,Temp_Series,JMA; \r
41 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+\r
42 //| JCCIX initialization function                                    |\r
43 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+\r
44 int init()\r
45  {\r
46 //---- ñòèëè èçîáðàæåíèÿ èíäèêàòîðà\r
47    SetIndexStyle(0,DRAW_LINE);\r
48 //---- 1 èíäèêàòîðíûé áóôôåð èñïîëüçîâàí äëÿ ñ÷¸òà. \r
49    SetIndexBuffer(0,Ind_Buffer1);\r
50 //---- óñòàíîâêà çíà÷åíèé èíäèêàòîðà, êîòîðûå íå áóäóò âèäèìû íà ãðàôèêå\r
51    SetIndexEmptyValue(0,0); \r
52 //---- èìåíà äëÿ îêîí äàííûõ è ëýéáû äëÿ ñóáúîêîí.\r
53    SetIndexLabel(0,"JCCIX("+JCCIX.Length+")");\r
54    IndicatorShortName("JCCIX(JCCIX.Length="+JCCIX.Length+")");\r
55 //---- Óñòàíîâêà ôîðìàòà òî÷íîñòè (êîëè÷åñòâî çíàêîâ ïîñëå äåñÿòè÷íîé òî÷êè) äëÿ âèçóàëèçàöèè çíà÷åíèé èíäèêàòîðà  \r
56    IndicatorDigits(0);\r
57 //---- óñòàíîâêà àëåðòîâ íà íåäîïóñòèìûå çíà÷åíèÿ âõîäíûõ ïàðàìåòðîâ ==========================================================================+ \r
58 if(JCCIX.Length< 1) {Alert("Ïàðàìåòð JCCIX.Length äîëæåí áûòü íå ìåíåå 1"+ " Âû ââåëè íåäîïóñòèìîå "+JCCIX.Length+ " áóäåò èñïîëüçîâàíî 1");}//|\r
59 PriceSeriesAlert(Input_Price_Customs);//---- îáðàùåíèå ê ôóíêöèè PriceSeriesAlert /////////////////////////////////////////////////////////////|\r
60 //---- ========================================================================================================================================+ \r
61 //---- óñòàíîâêà íîìåðà áàðà, íà÷èíàÿ ñ êîòîðîãî áóäåò îòðèñîâûâàòüñÿ èíäèêàòîð  \r
62    SetIndexDrawBegin(0,JCCIX.Length+1);\r
63 //---- êîðåêöèÿ íåäîïóñòèìîãî çíà÷åíèÿ ïàðàìåòðà JCCIX.Length\r
64    if(JCCIX.Length<1)JCCIX.Length=1; \r
65 //---- èíèöèàëèçàöèÿ êîýôôèöèåíòîâ äëÿ ðàñ÷¸òà èíäèêàòîðà \r
66    if (JCCIX.Length>5) w=JCCIX.Length-1; else w=5;\r
67 //---- çàâåðøåíèå èíèöèàëèçàöèè\r
68 return(0);\r
69   }\r
70 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+\r
71 //|  JCommodity Channel IndexX                                       |\r
72 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+\r
73 int start()\r
74   {\r
75 //----+ Ââåäåíèå öåëûõ ïåðåìåííûõ è ïîëó÷åíèå óæå ïîäñ÷èòàííûõ áàðîâ\r
76 //---- áëîêèðîâàíèå ïåðåñ÷¸òà âñåõ ïîäñ÷èòàííûõ è îòðèñîâàííûõ áàðîâ ïðè ïîäêëþ÷åíèè ê èíòåðíåòó\r
77 int reset,MaxBar,limit,counted_bars=INDICATOR_COUNTED(0); INDICATOR_COUNTED(1);\r
78 //---- ïðîâåðêà íà âîçìîæíûå îøèáêè\r
79 if (counted_bars<0){INDICATOR_COUNTED(-1);return(-1);}\r
80 //---- ïîñëåäíèé ïîäñ÷èòàííûé áàð äîëæåí áûòü ïåðåñ÷èòàí \r
81 //---- (áåç ýòîãî ïåðåñ÷¸òà äëÿ counted_bars ôóíêöè JJMASeries è JurXSeries áóäóò ðàáîòàòü íåêîððåêòíî!!!)\r
82 if (counted_bars>0) counted_bars--;\r
83 //----+ Ââåäåíèå è èíèöèàëèçàöèÿ âíóòðåííèõ ïåðåìåííûõ ôóíêöèq JJMASeries è JurXSeries \r
84 if (counted_bars==0){JJMASeriesReset(1);JurXSeriesReset(2);}\r
85 //---- îïðåäåëåíèå íîìåðà ñàìîãî ñòàðîãî áàðà, íà÷èíàÿ ñ êîòîðîãî áóäåò ïðîèçåä¸í ïåðåñ÷¸ò íîâûõ áàðîâ\r
86 limit=Bars-counted_bars-1; MaxBar=Bars-1; \r
87 //---- êîðåêöèÿ ñòàðòîâîãî ðàñ÷¸òîãî áàðà â öèêëå\r
88 if(limit>=MaxBar)limit=MaxBar;\r
90 for(int bar=limit; bar>=0; bar--)\r
91  { \r
92    //----+ Îáðàùåíèå ê ôóíêöèè PriceSeries äëÿ ïîëó÷åíèÿ âõîäíîé öåíû Series\r
93    Temp_Series=PriceSeries(Input_Price_Customs, bar);\r
94    //+----------------------------------------------------------------------------+ \r
95    //----+ Îäíî îáðàùåíèå ê ôóíêöèè JJMASeries çà íîìåðàì 0. \r
96    //----+ Ïàðàìåòðû nJMAPhase è nJMALength íå ìåíÿþòñÿ íà êàæäîì áàðå (nJMAdin=0)\r
97    //+----------------------------------------------------------------------------+   \r
98    JMA=JJMASeries(0,0,MaxBar,limit,100,JCCIX.Length,Temp_Series,bar,reset);\r
99    //----+ ïðîâåðêà íà îòñóòñòâèå îøèáêè â ïðåäûäóùåé îïåðàöèè\r
100    if(reset!=0){INDICATOR_COUNTED(-1);return(-1);}\r
101    //+----------------------------------------------------------------------------+    \r
102    price=PriceSeries(Input_Price_Customs, bar);\r
103    UPCCI=price-JMA;         \r
104    DNCCI=MathAbs(UPCCI);\r
105    //----+ Äâà îáðàùåíèÿ ê ôóíêöèè JurXSeries çà íîìåðàìè 0 è 1. Ïàðàìåòð nJJurXLength íå ìåíÿtòñÿ íà êàæäîì áàðå (nJurXdin=0)\r
106    //----+ ïðîâåðêà íà îòñóòñòâèå îøèáêè â ïðåäûäóùåé îïåðàöèè\r
107    JUPCCIX=JurXSeries(0,0,MaxBar-30,limit,JCCIX.Length,UPCCI,bar,reset); if(reset!=0){INDICATOR_COUNTED(-1);return(-1);} \r
108    JDNCCIX=JurXSeries(1,0,MaxBar-30,limit,JCCIX.Length,DNCCI,bar,reset); if(reset!=0){INDICATOR_COUNTED(-1);return(-1);} \r
109    //----+\r
110    if (bar>MaxBar-30-w)JCCIX=0;\r
111    else \r
112      if (JDNCCIX!=0)\r
113        {\r
114         JCCIX=JUPCCIX/JDNCCIX;\r
115         if(JCCIX>1)JCCIX=1;\r
116         if(JCCIX<-1)JCCIX=-1;\r
117        }\r
118      else JCCIX=0;\r
119    Ind_Buffer1[bar]=JCCIX; \r
120    //----+\r
121  }\r
122 //----\r
123    return(0);\r
124   }\r
125 //+---------------------------------------------------------------------------------------------------------------------------+\r
126 //----+ Ââåäåíèå ôóíêöèè JJMASeries (ôàéë JJMASeries.mqh ñëåäóåò ïîëîæèòü â ïàïêó (äèðåêòîðèþ): MetaTrader\experts\include)\r
127 //----+ Ââåäåíèå ôóíêöèè JJMASeriesReset  (äîïîëíèòåëüíàÿ ôóíêöèÿ ôàéëà JJMASeries.mqh)\r
128 //----+ Ââåäåíèå ôóíêöèè INDICATOR_COUNTED(äîïîëíèòåëüíàÿ ôóíêöèÿ ôàéëà JJMASeries.mqh)\r
129 #include <JJMASeries.mqh> \r
130 //+---------------------------------------------------------------------------------------------------------------------------+\r
131 //----+ Ââåäåíèå ôóíêöèè JurXSeries (ôàéë JurXSeries.mqh ñëåäóåò ïîëîæèòü â ïàïêó (äèðåêòîðèþ): MetaTrader\experts\include)\r
132 //----+ Ââåäåíèå ôóíêöèè JurXSeriesReset (äîïîëíèòåëüíàÿ ôóíêöèÿ ôàéëà JurXSeries.mqh)\r
133 #include <JurXSeries.mqh> \r
134 //+---------------------------------------------------------------------------------------------------------------------------+\r
135 //----+ Ââåäåíèå ôóíêöèè PriceSeries, ôàéë PriceSeries.mqh ñëåäóåò ïîëîæèòü â ïàïêó (äèðåêòîðèþ): MetaTrader\experts\include\r
136 //----+ Ââåäåíèå ôóíêöèè PriceSeriesAlert (äîïîëíèòåëüíàÿ ôóíêöèÿ ôàéëà PriceSeries.mqh)\r
137 #include <PriceSeries.mqh>\r
138 //+---------------------------------------------------------------------------------------------------------------------------+\r