2 Äëÿ ðàáîòû èíäèêàòîðà ñëåäóåò ïîëîæèòü ôàéë
\r
4 INDICATOR_COUNTED.mqh
\r
6 â ïàïêó (äèðåêòîðèþ): MetaTrader\experts\include\
\r
8 Èíäèêàòîð ïðåäíàçíà÷åí äëÿ ðàáîòû òîëüêî òàéìôðåéìàõ íå áîëååå
\r
11 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
12 //| VGridLinesX4.LC.mq4 |
\r
13 //| 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 extern int Ind_Shift = 0; // cäâèã èíäèêàòîðà âäîëü îñè âðåìåíè â áàðàõ
\r
22 extern int Count_Bar = 300; // Êîëè÷åñòâî ïîñëåäíèõ áàðîâ äëÿ ðàñ÷¸òà èíäèêàòîðà
\r
23 extern int Ind_Style = 0; // Ñòèëü èçîáðàæåíèÿ èíäèêàòîðà (0 - ïî óìîë÷àíèþ)
\r
24 extern bool AllDelate = false; // óäàëåíèå âñåõ öèêëîâ è âñåõ âåðòèêàëüíûõ ëèíèé
\r
26 extern int Hour_Shift0 = 0; // cäâèã ñóòî÷íîãî öèêëà â ÷àñàõ
\r
27 extern int Hour_Shift1 = 0; // cäâèã ïåðâîãî äâàäöàòè÷åòûð¸õ÷àñîâîãî öèêëà â ÷àñàõ
\r
28 extern int Hour_Shift2 = 8; // cäâèã âòîðîãî äâàäöàòè÷åòûð¸õ÷àñîâîãî öèêëà â ÷àñàõ
\r
29 extern int Hour_Shift3 = 16; // cäâèã òðåòüåãî äâàäöàòè÷åòûð¸õ÷àñîâîãî öèêëà â ÷àñàõ
\r
31 extern color COLOR0 = C'148,135,218';// öâåò ëèíèè íåäåëüíîãî öèêëà
\r
32 extern int Line_Style0 = 3; // Ñòèëü èçîáðàæåíèÿ ëèíèè íåäåëüíîãî öèêëà
\r
33 extern int Line_Width0 = 0; // Òîëùèíà ëèíèè íåäåëüíîãî öèêëà
\r
35 extern color COLOR1 = C'176,0,176'; // öâåò ëèíèè ñóòî÷íîãî öèêëà 1
\r
36 extern int Line_Style1 = 4; // Ñòèëü èçîáðàæåíèÿ ëèíèè ñóòî÷íîãî öèêëà 1
\r
37 extern int Line_Width1 = 0; // Òîëùèíà ëèíèè ñóòî÷íîãî öèêëà 1
\r
39 extern color COLOR2 = C'0,119,119'; // öâåò ëèíèè ñóòî÷íîãî öèêëà 2
\r
40 extern int Line_Style2 = 4; // Ñòèëü èçîáðàæåíèÿ ëèíèè ñóòî÷íîãî öèêëà 2
\r
41 extern int Line_Width2 = 0; // Òîëùèíà ëèíèè ñóòî÷íîãî öèêëà 2
\r
43 extern color COLOR3 = C'119,0,170'; // öâåò ëèíèè ñóòî÷íîãî öèêëà 3
\r
44 extern int Line_Style3 = 4; // Ñòèëü èçîáðàæåíèÿ ëèíèè ñóòî÷íîãî öèêëà 3
\r
45 extern int Line_Width3 = 0; // Òîëùèíà ëèíèè ñóòî÷íîãî öèêëà 3
\r
46 //---- ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ+
\r
47 //---- èíäèêàòîðíûå áóôôåðû
\r
50 //---- öåëûå ïåðåìåííûå
\r
51 int time0,time1,fix0,fix1,fix2,fix3,Wind_total,Del_time,Start_Time,ii,bar;
\r
52 color COLOR0x,COLOR1x,COLOR2x,COLOR3x;
\r
53 int Line_Style0x,Line_Style1x,Line_Style2x,Line_Style3x,Line_Width0x,Line_Width1x,Line_Width2x,Line_Width3x;
\r
54 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
55 //| VGridLinesX4.LC initialization function |
\r
56 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
59 if (Period()>240)return(0);
\r
60 //--+ óäàëåíèå âñåõ âåðòèêàëüíûõ ëèíèé è öèêëîâ ñ ãðàôèêà
\r
61 if (AllDelate==true){ObjectsDeleteAll(EMPTY, OBJ_VLINE);ObjectsDeleteAll(EMPTY,OBJ_CYCLES);}
\r
62 //--+ ïîäñ÷¸ò âñåõ ñóùåñòâóþùèõ îêîí ãðàôèêà
\r
63 Wind_total=WindowsTotal();
\r
64 //---- 1 èíäèêàòîðíûé áóôôåð èñïîëüçîâàí äëÿ ñ÷¸òà
\r
65 SetIndexBuffer(0,Buffer);
\r
66 //---- âûáîð ñòèëÿ èçîáðàæåíèÿ ëèíèé èíäèêàòîðà
\r
69 case 0: StileCreat(COLOR0,COLOR1,COLOR2,COLOR3,Line_Style0,Line_Style1,Line_Style2,Line_Style3,Line_Width0,Line_Width1,Line_Width2,Line_Width3);break;
\r
70 case 1: StileCreat(Red,C'198,0,198',C'0,119,119',C'119,0,170',4,4,4,4,0,0,0,0);break;
\r
71 case 2: StileCreat(Magenta,Red,SpringGreen,C'128,0,255',4,4,4,4,0,0,0,0);break;
\r
72 case 3: StileCreat(Magenta,Red,SpringGreen,C'128,0,255',0,0,0,0,2,2,2,3);break;
\r
73 case 4: StileCreat(Red,Magenta,MediumSeaGreen,Blue,0,0,0,0,2,2,2,2);break;
\r
74 case 5: StileCreat(Orange,Red,SpringGreen,C'128,0,255',0,0,0,0,3,2,2,3);break;
\r
75 case 6: StileCreat(Yellow,Red,C'0,217,108',C'170,85,255',1,1,1,1,0,0,0,0);break;
\r
76 case 7: StileCreat(Yellow,Red,C'0,217,108',C'170,85,255',4,4,4,4,0,0,0,0);break;
\r
77 case 8: StileCreat(Gold,C'236,0,0',C'0,147,73',C'116,0,232',4,4,4,4,0,0,0,0);break;
\r
78 case 9: StileCreat(Orange,C'213,0,0',C'0,125,63',C'99,0,198',4,4,4,4,0,0,0,0);break;
\r
80 default: StileCreat(COLOR0,COLOR1,COLOR2,COLOR3,Line_Style0,Line_Style1,Line_Style2,Line_Style3,Line_Width0,Line_Width1,Line_Width2,Line_Width3);
\r
82 //---- çàâåðøåíèå èíèöèàëèçàöèè
\r
85 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
86 //| VGridLinesX4.LC deinitialization function |
\r
87 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
90 //--+ Î÷èñòêà âñåõ îêîí îò âåðòèêàëüíûõ ëèíèé è öèêëîâ , ñîçäàííûõ ïðè ðàáîòå èíäèêàòîðà
\r
91 VLineDelateAll("VLine_Grid");
\r
93 //ObjectsDeleteAll(EMPTY,OBJ_VLINE) ;
\r
94 //ObjectsDeleteAll(EMPTY,OBJ_CYCLES);
\r
95 //---- çàâåðøåíèå äåèíèöèàëèçàöèè
\r
98 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
99 //| VGridLinesX4.LC iteration function |
\r
100 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
103 if (Period()>240)return(0);
\r
104 //----+ ïðîâåðêè êîëè÷åñòâà áàðîâ íà äîñòàòî÷íîñòü
\r
105 if (Count_Bar<7500/Period())Count_Bar=7500/Period();
\r
106 if((Count_Bar==7500/Period())&&(Count_Bar>Bars-1))COLOR0x=CLR_NONE;
\r
107 if (Count_Bar>Bars-1)Count_Bar=Bars-1;
\r
108 if (Count_Bar<4500/Period())Count_Bar=4500/Period();
\r
109 if (Count_Bar>Bars-1)return(0);
\r
110 //----+ Ââåäåíèå öåëûõ ïåðåìåííûõ è ïîëó÷åíèå óæå ïîäñ÷èòàííûõ áàðîâ
\r
111 //---- áëîêèðîâàíèå ïåðåñ÷¸òà âñåõ ïîäñ÷èòàííûõ è îòðèñîâàííûõ áàðîâ ïðè ïîäêëþ÷åíèè ê èíòåðíåòó
\r
112 int daily_lewel,weekl_lewel,Hour_ShiftW,counted_bars=INDICATOR_COUNTED(0); INDICATOR_COUNTED(1);
\r
113 //---- ïðîâåðêà íà âîçìîæíûå îøèáêè
\r
114 if (counted_bars<0){INDICATOR_COUNTED(-1);return(-1);}
\r
115 //---- ïîñëåäíèé ïîäñ÷èòàííûé áàð äîëæåí áûòü ïåðåñ÷èòàí
\r
116 if (counted_bars>0) counted_bars--;
\r
118 Hour_ShiftW=Hour_Shift0+48;
\r
119 //+---+ Èíèöèàëèçàöèÿ íóëÿ ïðè ñìåíå äíÿ íåäåëè
\r
122 weekl_lewel=168*MathFloor(time0/604800);
\r
123 fix0=3600*(weekl_lewel+Hour_ShiftW);
\r
124 if((time0>=fix0)&&(time1<fix0))counted_bars=0;
\r
125 //---- îïðåäåëåíèå íîìåðà ñàìîãî ñòàðîãî áàðà, íà÷èíàÿ ñ êîòîðîãî áóäåò ïðîèçåä¸í ïåðåñ÷¸ò íîâûõ áàðîâ
\r
126 int limit=Count_Bar-counted_bars-1;
\r
127 //+---+ Î÷èñòêà îêîí îò âåðòèêàëüíûõ ëèíèé, ñîçäàííûõ íà ïðåæíåì ñòàðòå èíäèêàòîðà
\r
128 //---- èíèöèàëèçàöèÿ âñåõ ýëåìåíòîâ ìàññèâà çíà÷åíèåì -1
\r
129 if (counted_bars==0)
\r
131 VLineDelateAll("VLine_Grid");
\r
133 ArrayInitialize(Buffer,-1);
\r
135 //+---+ Ïîñòðîåíèå âåðòèêàëüíîé ñåòêè â âèäå ïîñëåäîâàòåëüíîñòè îòäåëüíûõ âåðòèêàëüíûõ ëèíèé
\r
136 for(int bar=limit;bar>=0;bar--)
\r
139 if(Buffer[bar]!=-1)continue;
\r
143 ObjectDelete("VLine_Grid"+Time[bar]+"");
\r
147 daily_lewel=024*MathFloor(time0/086400);
\r
148 weekl_lewel=168*MathFloor(time0/604800);
\r
150 fix1=3600*(daily_lewel+Hour_Shift1);
\r
151 fix2=3600*(daily_lewel+Hour_Shift2);
\r
152 fix3=3600*(daily_lewel+Hour_Shift3);
\r
153 fix0=3600*(weekl_lewel+Hour_ShiftW);
\r
155 //+---+ òðè îáðàùåíèÿ ê ôóíêöèè VLineCreate äëÿ ïîñòðîåíèÿ âåðòèêàëüíûõ ëèíèé
\r
156 if((time0>=fix0)&&(time1<fix0)){VLineCreate("VLine_Grid",time0,COLOR0x,Line_Style0x,Line_Width0x);Buffer[bar]=0;}
\r
157 else {if((time0>=fix1)&&(time1<fix1)){VLineCreate("VLine_Grid",time0,COLOR1x,Line_Style1x,Line_Width1x);Buffer[bar]=1;}
\r
158 else {if((time0>=fix2)&&(time1<fix2)){VLineCreate("VLine_Grid",time0,COLOR2x,Line_Style2x,Line_Width2x);Buffer[bar]=2;}
\r
159 else if((time0>=fix3)&&(time1<fix3)){VLineCreate("VLine_Grid",time0,COLOR3x,Line_Style3x,Line_Width3x);Buffer[bar]=3;}}}
\r
162 //+---+ Óäàëåíèå âåðòèêàëüíûõ ëèíèé, âûõîäÿùèõ çà ãðàíèöó Count_Bar
\r
163 Del_time=Time[bar+Count_Bar];
\r
164 ObjectDelete("VLine_Grid"+Del_time+"");
\r
167 //+---+ Äîðèñîâêà ñåòêè ïîñëå íóëåâîãî áàðà èç öèêëîâ
\r
170 //+---+ Î÷èñòêà îêîí îò ëèíèé öèêëîâ, ñîçäàííûõ íà ïðåæíåì ñòàðòå èíäèêàòîðà
\r
172 //+---+ ïîèñê íà÷àëà öèêëà
\r
173 for(int aa=0;aa<=Bars-1;aa++){if (Buffer[aa]!=-1)break;}
\r
174 Start_Time=3600*(24*MathCeil(Time[aa]/86400)-Ind_Shift+0);
\r
176 for(ii=0;ii<Wind_total;ii++)
\r
178 //+---+ òðè îáðàùåíèÿ ê ôóíêöèè CycleCreate äëÿ ñîçäàíèÿ òð¸õ öèêëîâ
\r
179 CycleCreate("Cycle_Grid1",Start_Time,Hour_Shift1,024,COLOR1x,Line_Style1x,Line_Width1x,ii);
\r
180 CycleCreate("Cycle_Grid2",Start_Time,Hour_Shift2,024,COLOR2x,Line_Style2x,Line_Width2x,ii);
\r
181 CycleCreate("Cycle_Grid3",Start_Time,Hour_Shift3,024,COLOR3x,Line_Style3x,Line_Width3x,ii);
\r
183 //+---+ ïîèñê íà÷àëà öèêëà
\r
184 for(int bb=0;bb<=Bars-1;bb++){if (Buffer[bb]==0)break;}
\r
185 Start_Time=3600*(168*MathCeil(Time[bb]/604800)-Ind_Shift);
\r
186 int Hour_ShiftX=Hour_Shift0+96;
\r
187 CycleDelate("Cycle_GridW");
\r
188 //+---+ îäíî îáðàùåíèå ê ôóíêöèè CycleCreate äëÿ ñîçäàíèÿ îäíîãî öèêëà
\r
189 for(ii=0;ii<Wind_total;ii++) CycleCreate("Cycle_GridW",Start_Time,Hour_ShiftX,120,COLOR0x,Line_Style0x,Line_Width0x,ii);
\r
192 //+---+ çàâåðøåíèå ïîñòðîåíèÿ öèêëîâ
\r
196 //+---+ << Ââåäåíèå ôóíêöèè StileCreat >>-----------------------------------------------------------------------------------------------+
\r
199 color COLOR0g, color COLOR1g, color COLOR2g, color COLOR3g,
\r
200 int Line_Style0g,int Line_Style1g,int Line_Style2g,int Line_Style3g,
\r
201 int Line_Width0g,int Line_Width1g,int Line_Width2g,int Line_Width3g
\r
204 COLOR0x=COLOR0g; COLOR1x=COLOR1g; COLOR2x=COLOR2g; COLOR3x=COLOR3g;
\r
205 Line_Style0x=Line_Style0g;Line_Style1x=Line_Style1g;Line_Style2x=Line_Style2g;Line_Style3x=Line_Style3g;
\r
206 Line_Width0x=Line_Width0g;Line_Width1x=Line_Width1g;Line_Width2x=Line_Width2g;Line_Width3x=Line_Width3g;
\r
208 //+---+ << Ââåäåíèå ôóíêöèè VLineDelateAll >>-------------------------------------------------------------------------------------------+
\r
209 void VLineDelateAll(string VLineDelateAll.Line_Name)
\r
211 for(int pp=Bars-1;pp>=0;pp--)ObjectDelete(VLineDelateAll.Line_Name+Time[pp]+"");
\r
213 //+---+ << Ââåäåíèå ôóíêöèè CycleDelate >> ---------------------------------------------------------------------------------------------+
\r
214 void CycleDelate(string CycleDelate.Cycle_Name)
\r
216 int TT=WindowsTotal();
\r
217 for(int rr=0; rr<TT; rr++)ObjectDelete(CycleDelate.Cycle_Name+rr+"");
\r
219 //+---+ << Ââåäåíèå ôóíêöèè CycleDelateAll >> ------------------------------------------------------------------------------------------+
\r
220 void CycleDelateAll()
\r
222 CycleDelate("Cycle_GridW");CycleDelate("Cycle_Grid1");CycleDelate("Cycle_Grid2");CycleDelate("Cycle_Grid3");
\r
224 //+---+ << Ââåäåíèå ôóíêöèè VLineCreate >>----------------------------------------------------------------------------------------------+
\r
227 string VLineCreate.Line_Name, int VLineCreate.time, color VLineCreate.Color, int VLineCreate.Line_Style, int VLineCreate.width
\r
229 //+---+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
\r
231 for(int ii=0;ii<WindowsTotal();ii++)
\r
232 ObjectCreate(VLineCreate.Line_Name+VLineCreate.time+"", OBJ_VLINE, ii, VLineCreate.time, EMPTY);
\r
233 ObjectSet (VLineCreate.Line_Name+VLineCreate.time+"", OBJPROP_BACK, true);
\r
234 ObjectSet (VLineCreate.Line_Name+VLineCreate.time+"", OBJPROP_STYLE, VLineCreate.Line_Style);
\r
235 ObjectSet (VLineCreate.Line_Name+VLineCreate.time+"", OBJPROP_COLOR, VLineCreate.Color);
\r
236 ObjectSet (VLineCreate.Line_Name+VLineCreate.time+"", OBJPROP_WIDTH, VLineCreate.width);
\r
239 //+---+ << Ââåäåíèå ôóíêöèè CycleCreate >> ---------------------------------------------------------------------------------------------+
\r
242 string CycleCreate.Cycle_Name, int CycleCreate.Start_Time, int CycleCreate.Hour_Shift, int CycleCreate.Period,
\r
243 color CycleCreate.Color, int CycleCreate.Style, int CycleCreate.Width, int CycleCreate.Window
\r
245 //+---+ Ïàðàìåòð CycleCreate.Period èçìåðÿåòñÿ â äíÿõ
\r
246 //+---+ Ïàðàìåòð CycleCreate.Start_Time èçìêðÿåòñÿ â ñåêóíäàõ
\r
247 //+---+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
\r
249 int CycleCreate.St_time=CycleCreate.Start_Time+CycleCreate.Hour_Shift*3600;
\r
250 int CycleCreate.Object_time=CycleCreate.St_time+CycleCreate.Period*3600;
\r
252 ObjectCreate(CycleCreate.Cycle_Name+CycleCreate.Window+"", OBJ_CYCLES,CycleCreate.Window,CycleCreate.St_time,-1000,CycleCreate.Object_time,-1000);
\r
253 ObjectSet (CycleCreate.Cycle_Name+CycleCreate.Window+"", OBJPROP_BACK, true);
\r
254 ObjectSet (CycleCreate.Cycle_Name+CycleCreate.Window+"", OBJPROP_STYLE, CycleCreate.Style);
\r
255 ObjectSet (CycleCreate.Cycle_Name+CycleCreate.Window+"", OBJPROP_COLOR, CycleCreate.Color);
\r
256 ObjectSet (CycleCreate.Cycle_Name+CycleCreate.Window+"", OBJPROP_WIDTH, CycleCreate.Width);
\r
258 //+-----+ << Ââåäåíèå ôóíêöèè INDICATOR_COUNTED >> --------------------------------------------------------------------------------------+
\r
259 //----+(ôàéë INDICATOR_COUNTED.mqh ñëåäóåò ïîëîæèòü â ïàïêó (äèðåêòîðèþ): MetaTrader\experts\include)
\r
260 #include <INDICATOR_COUNTED.mqh>
\r
261 //+--------------------------------------------------------------------------------------------------------------------------------------+