//+-----------------------------------------------------------------------------------------------------------------------------+ //| ZH_StandardFunctionsTfH2.lib.mq4| //| Copyright © Zhunko | //|09.10.2009 - 12.10.2009 ÌF ZHUNKO vadim@zhunko.ru | //+-----------------------------------------------------------------------------------------------------------------------------+ //| Íàáîð ñòàíäàðòíûõ ôóíêöèé äëÿ ÒÔ H2. | //+-----------------------------------------------------------------------------------------------------------------------------+ //|1.Êîëè÷åñòâî áàðîâ â ÒÔ H2. | //| int iBars_H2 (string symbol); // Ñèìâîëüíîå èìÿ èíñòðóìåíòà. | //+-----------------------------------------------------------------------------------------------------------------------------+ //|2.Íîìåð áàðà ïî âðåìåíè â ÒÔ H2. | //| int iBarShift_H2 (string symbol, // Ñèìâîëüíîå èìÿ èíñòðóìåíòà. | //| datetime time, // Çíà÷åíèå âðåìåíè äëÿ ïîèñêà. | //| bool exact) // Âîçâðàùàåìîå çíà÷åíèå åñëè áàð íå íàéäåí | //| // (FALSE - iBarShift âîçâðàùàåò áëèæàéøèé/TRUE - iBarShift âîçâðàùàåò -1). | //+-----------------------------------------------------------------------------------------------------------------------------+ //|3.Âðåìÿ îòêðûòèÿ ïî íîìåðó áàðà â ÒÔ H2. | //| datetime iTime_H2 (string symbol, // Ñèìâîëüíîå èìÿ èíñòðóìåíòà | //| int shift) // Íîìåð áàðà. | //+-----------------------------------------------------------------------------------------------------------------------------+ //|4.Öåíà îòêðûòèÿ âûáðàííîãî áàðà â ÒÔ H2. | //| double iOpen_H2 (string symbol, // Ñèìâîëüíîå èìÿ èíñòðóìåíòà. | //| int shift) // Íîìåð áàðà. | //+-----------------------------------------------------------------------------------------------------------------------------+ //|5.Ìàêñèìàëüíàÿ öåíà âûáðàííîãî áàðà â ÒÔ H2. | //| double iHigh_H2 (string symbol, // Ñèìâîëüíîå èìÿ èíñòðóìåíòà. | //| int shift) // Íîìåð áàðà. | //+-----------------------------------------------------------------------------------------------------------------------------+ //|6.Ìèíèìàëüíàÿ öåíà âûáðàííîãî áàðà â ÒÔ H2. | //| double iLow_H2 (string symbol, // Ââàëþòíàÿ ïàðà. | //| int shift) // Íîìåð áàðà. | //+-----------------------------------------------------------------------------------------------------------------------------+ //|7.Öåíà çàêðûòèÿ âûáðàííîãî áàðà â ÒÔ H2. | //| double iClose_H2 (string symbol, // Ñèìâîëüíîå èìÿ èíñòðóìåíòà. | //| int shift) // Íîìåð áàðà. | //+-----------------------------------------------------------------------------------------------------------------------------+ //|8. Âîçâðàùàåò òåêóùèé íîìåð äâóõ÷àñîâîãî áàðà â ñóòêàõ ïîñëåäíåãî èçâåñòíîãî ñåðâåðíîãî âðåìåíè. | //| int Hour2() | //+-----------------------------------------------------------------------------------------------------------------------------+ //|9. Âîçâðàùàåò íîìåð äâóõ÷àñîâîãî áàðà â ñóòêàõ äëÿ óêàçàííîãî âðåìåíè. | //| int TimeHour2 (datetime time) // Äàòà, ïðåäñòàâëåííàÿ â âèäå êîëè÷åñòâà ñåêóíä, ïðîøåäøèõ ïîñëå 00:00 1 ÿíâàðÿ 1970 ãîäà. | //+-----------------------------------------------------------------------------------------------------------------------------+ //ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ #property copyright "Copyright © 2006 Zhunko" #property link "vadim@zhunko.ru" #property library //ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ // 1. Êîëè÷åñòâî áàðîâ â ÒÔ H2. int iBars_H2 (string symbol) // Ñèìâîëüíîå èìÿ èíñòðóìåíòà. { datetime iTimeH1; // Âðåìÿ îòêðûòèÿ ÷àñîâîãî áàðà. int i, j; int iBarsH1; // Êîëè÷åñòâî áàðîâ â ÒÔ H1 òåêóùåãî èíñòðóìåíòà. int iBarsH2; // Êîëè÷åñòâî áàðîâ â ÒÔ H2. // Ìàññèâû. bool ArSwitch[12]; // Âûêëþ÷àòåëè ñ÷¸ò÷èêà øåñòè÷àñîâûõ áàðîâ. //---- ArrayInitialize (ArSwitch, true); iBarsH1 = iBars (symbol, PERIOD_H1); // Êîëè÷åñòâî áàðîâ â ÒÔ H1 òåêóùåãî èíñòðóìåíòà. for (i = 0, iBarsH2 = 0; i < iBarsH1; i++) { iTimeH1 = iTime (symbol, PERIOD_H1, i); // Âðåìÿ îòêðûòèÿ ÷àñîâîãî áàðà. // Íà ïåðâîé èòåðàöèè íå ïðîâåðÿì ñóòîê. Åñëè ñìåíèëèñü ñóòêè, èíèöèàëèçèðóåì ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ. Ìîæåò ïðèãîäèòüñÿ ïðè îòñóòñòâèè áàðîâ âíóòðè äíÿ è íåñêîëüêèõ äíåé ïîäðÿä (äûðû â èñòîðèè). if (i > 0) if (MathMod (TimeDay (iTimeH1), TimeDay (iTime (symbol, PERIOD_H1, i - 1))) != 0) ArrayInitialize (ArSwitch, true); // Ïåðåêëþ÷àåì ïî ÷àñàì ñóòîê. switch (TimeHour (iTimeH1)) {//----×àñîâûå áàðû 12-ãî äâóõ÷àñîâîãî áàðà.----------------------------------------------------------------------------------------- case 23: case 22: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 11) ArSwitch[j] = true; if (ArSwitch[11] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { iBarsH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[11] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 11-ãî äâóõ÷àñîâîãî áàðà.----------------------------------------------------------------------------------------- case 21: case 20: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 10) ArSwitch[j] = true; if (ArSwitch[10] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { iBarsH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[10] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 10-ãî äâóõ÷àñîâîãî áàðà.----------------------------------------------------------------------------------------- case 19: case 18: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 9) ArSwitch[j] = true; if (ArSwitch[9] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { iBarsH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[9] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 9-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 17: case 16: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 8) ArSwitch[j] = true; if (ArSwitch[8] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { iBarsH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[8] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 8-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 15: case 14: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 7) ArSwitch[j] = true; if (ArSwitch[7] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { iBarsH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[7] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 7-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 13: case 12: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 6) ArSwitch[j] = true; if (ArSwitch[6] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { iBarsH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[6] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 6-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 11: case 10: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 5) ArSwitch[j] = true; if (ArSwitch[5] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { iBarsH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[5] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 5-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 9: case 8: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 4) ArSwitch[j] = true; if (ArSwitch[4] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { iBarsH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[4] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 4-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 7: case 6: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 3) ArSwitch[j] = true; if (ArSwitch[3] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { iBarsH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[3] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 3-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 5: case 4: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 2) ArSwitch[j] = true; if (ArSwitch[2] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { iBarsH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[2] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 2-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 3: case 2: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 1) ArSwitch[j] = true; if (ArSwitch[1] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { iBarsH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[1] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 1-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 1: case 0: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 0) ArSwitch[j] = true; if (ArSwitch[0] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { iBarsH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[0] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } } } return (iBarsH2); } //ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ // 2. Íîìåð áàðà ïî âðåìåíè â ÒÔ H2. int iBarShift_H2 (string symbol, // Ñèìâîëüíîå èìÿ èíñòðóìåíòà. datetime time, // Çíà÷åíèå âðåìåíè äëÿ ïîèñêà. bool exact) // Âîçâðàùàåìîå çíà÷åíèå åñëè áàð íå íàéäåí (FALSE - iBarShift âîçâðàùàåò áëèæàéøèé/TRUE - iBarShift âîçâðàùàåò -1). { datetime TimeFirst_H2; // Âðåìÿ çàêðûòèÿ ïåðâãî áàðà H2 â èñòîðèè. Áàð íà÷àëà èñòîðèè ïàðû. datetime TimeLast_H2; // Âðåìÿ îòêðûòèÿ ïîñëåäíåãî áàðà H2 â èñòîðèè. datetime iTimeH1; // Âðåìÿ îòêðûòèÿ òåêóùåãî áàðà íà H1. datetime iTimeH2_0; // Âðåìÿ îòêðûòèÿ òåêóùåãî áàðà íà H2. datetime iTimeH2_1; // Âðåìÿ îòêðûòèÿ ïðåäûäóùåãî áàðà íà H2. int AmountBar; // Êîëè÷åñòâî äîáàâëÿåìûõ áàðîâ â ïåðâîì èëè ïîñëåäíåì êâàðòàëüíûõ áàðàõ. int i, j; int ShiftH2 = 0; // Âîçâðàùàåìîå çíà÷åíèå ñìåùåíèÿ áàðà â ÒÔ H2. int iBarsH1; // Êîëè÷åñòâî áàðîâ â ÒÔ H1 òåêóùåãî èíñòðóìåíòà. int NumberHour; // Íîìåð ÷àñà. // Ìàññèâû. bool ArSwitch[12]; // Âûêëþ÷àòåëè ñ÷¸ò÷èêà øåñòè÷àñîâûõ áàðîâ. //---- ArrayInitialize (ArSwitch, true); //====Ïîäãîòîâêà äàííûõ.================================================================================================================================================================================================================ iBarsH1 = iBars (symbol, PERIOD_H1); // Êîëè÷åñòâî áàðîâ â ÒÔ H1 òåêóùåãî èíñòðóìåíòà. //====Ðàñ÷¸ò âðåìåíè çàêðûòèÿ ïåðâîãî êâàðòàëüíîãî áàðà â èñòîðèè. Êâàðòàë íà÷àëà èñòîðèè ïàðû.========================================================================================================================================== TimeFirst_H2 = iTime (symbol, PERIOD_H1, iBarsH1 - 1); // Âðåìÿ îòêðûòèÿ ïåðâîãî â èñòîðèè ÷àñîâîãî áàðà. NumberHour = TimeHour (TimeFirst_H2) + 1; // Íîìåð ÷àñà ÎÒ 1 äî 24. // Âû÷èñëÿåì êîëè÷åñòâî äîáàâëÿåìûõ áàðîâ â êâàðòàëüíîì áàðå. if (MathMod (NumberHour, 2) == 0) TimeFirst_H2 += 3600; // Åñëè áàð ïîñëåäíèé â áàðå H2, ïðîèçâîäèì ïðèáàâëåíèå 1-ãî áàðà. else TimeFirst_H2 += 7200; // Åñëè áàð ïåðâûé â áàðå H2, ïðîèçâîäèì ïðèáàâëåíèå 2-õ áàðîâ. //====Ðàñ÷¸ò âðåìåíè îòêðûòèÿ ïîñëåäíåãî êâàðòàëüíîãî áàðà â èñòîðèè.=================================================================================================================================================================== TimeLast_H2 = iTime (symbol, PERIOD_H1, 0); // Âðåìÿ îòêðûòèÿ ïîñëåäíåãî â èñòîðèè ÷àñîâîãî áàðà. NumberHour = TimeHour (TimeLast_H2) + 1; // Íîìåð ÷àñà ÎÒ 1 äî 24. // Âû÷èñëÿåì êîëè÷åñòâî óáàâëÿåìûõ áàðîâ â êâàðòàëüíîì áàðå. if (MathMod (NumberHour, 2) == 0) TimeFirst_H2 -= 3600; // Åñëè áàð ïîñëåäíèé â áàðå H2, ïðîèçâîäèì óáàâëåíèå 1-ãî áàðà. //----Äèàãíîñòèêà.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Comment ("TimeFirst_H2 = ", TimeToStr (TimeFirst_H2, TIME_DATE|TIME_MINUTES|TIME_SECONDS), "\nLastQuarter = ", TimeToStr (TimeLast_H2, TIME_DATE|TIME_MINUTES|TIME_SECONDS)); //====================================================================================================================================================================================================================================== if (time < TimeFirst_H2 || time >= TimeLast_H2) // Äëÿ ýêîíîìèè âðåìåíè íà öèêëàõ, ïðè âûáðàííîì âðåìåíè ñî çíà÷åíèåì ìåíüøåì âðåìåíè íà÷àëà èñòîðèè èëè áîëüøåì òåêóùîãî äâóõ÷àñîâîãî áàðà. { if (exact == true) return (-1); // Åñëè ïåðåêëþ÷àòåëü ðàçðåøàåò, òî âîçâðàùàåì -1 â ñëó÷àå îòñóòñòâèÿ áàðà. else // Åñëè ïåðåêëþ÷àòåëü çàïðåùàåò, òî âîçâðàùàåì áëèæàéøèé ïî õîäó öèêëà (ïðåäûäóùèé) áàð. { if (time < TimeFirst_H2) return (iBars_H2 (symbol) - 1); // Åñëè çàäàííîå çíà÷åíèå âðåìåíè äëÿ ïîèñêà ìåíüøå âðåìåíè íà÷àëà èñòîðèè, ñ÷èòàåì êîëè÷åñòâî áàðîâ. if (time > TimeLast_H2) return (0); // Åñëè çàäàííîå çíà÷åíèå âðåìåíè äëÿ ïîèñêà áîëüøå âðåìåíè êîíöà èñòîðèè, âîçðàùàåì ïîñëåäíèé áàð. } } else // Åñëè çàäàííîå çíà÷åíèå âðåìåíè ñîîòâåòñòâóåò ñóùåñòâóþùåé èñòîðèè. {// Âðåìÿ çàêðûòèÿ íóëåâîãî áàðà ÒÔ H2. iTimeH2_0 = iTime (symbol, PERIOD_H1, 0); // Âðåìÿ îòêðûòèÿ ïåðâîãî â èñòîðèè ÷àñîâîãî áàðà. NumberHour = TimeHour (iTimeH2_0) + 1; // Íîìåð ÷àñà. if (MathMod (NumberHour, 2) == 0) TimeFirst_H2 += 3600; // Åñëè áàð ïîñëåäíèé â áàðå H2, ïðîèçâîäèì ïðèáàâëåíèå 1-ãî áàðà. else TimeFirst_H2 += 7200; // Åñëè áàð ïåðâûé â áàðå H2, ïðîèçâîäèì ïðèáàâëåíèå 2-õ áàðîâ. for (i = 0, ShiftH2 = -1; i < iBarsH1; i++) // Öèêë ïî ìåñÿ÷íûì áàðàì. Íà÷àëî ñ íóëåâîãî áàðà. { iTimeH1 = iTime (symbol, PERIOD_H1, i); // Âðåìÿ îòêðûòèÿ òåêóùåãî ÷àñîâîãî áàðà. // Íà ïåðâîé èòåðàöèè íå ïðîâåðÿì ñóòîê. Åñëè ñìåíèëèñü ñóòêè, èíèöèàëèçèðóåì ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ. Ìîæåò ïðèãîäèòüñÿ ïðè îòñóòñòâèè áàðîâ âíóòðè äíÿ è íåñêîëüêèõ äíåé ïîäðÿä (äûðû â èñòîðèè). if (i > 0) if (MathMod (TimeDay (iTimeH1), TimeDay (iTime (symbol, PERIOD_H1, i - 1))) != 0) ArrayInitialize (ArSwitch, true); // Ïåðåêëþ÷àåì ïî ÷àñàì ñóòîê. NumberHour = TimeHour (iTimeH1); // Íîìåð ÷àñà. switch (NumberHour) {//----×àñîâûå áàðû 12-ãî äâóõ÷àñîâîãî áàðà.----------------------------------------------------------------------------------------- case 23: case 22: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 11) ArSwitch[j] = true; if (ArSwitch[11] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[11] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 11-ãî äâóõ÷àñîâîãî áàðà.----------------------------------------------------------------------------------------- case 21: case 20: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 10) ArSwitch[j] = true; if (ArSwitch[10] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[10] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 10-ãî äâóõ÷àñîâîãî áàðà.----------------------------------------------------------------------------------------- case 19: case 18: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 9) ArSwitch[j] = true; if (ArSwitch[9] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[9] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 9-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 17: case 16: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 8) ArSwitch[j] = true; if (ArSwitch[8] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[8] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 8-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 15: case 14: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 7) ArSwitch[j] = true; if (ArSwitch[7] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[7] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 7-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 13: case 12: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 6) ArSwitch[j] = true; if (ArSwitch[6] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[6] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 6-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 11: case 10: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 5) ArSwitch[j] = true; if (ArSwitch[5] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[5] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 5-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 9: case 8: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 4) ArSwitch[j] = true; if (ArSwitch[4] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[4] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 4-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 7: case 6: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 3) ArSwitch[j] = true; if (ArSwitch[3] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[3] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 3-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 5: case 4: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 2) ArSwitch[j] = true; if (ArSwitch[2] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[2] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 2-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 3: case 2: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 1) ArSwitch[j] = true; if (ArSwitch[1] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[1] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 1-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 1: case 0: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 0) ArSwitch[j] = true; if (ArSwitch[0] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[0] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } } // Åñëè ïåðåêëþ÷àòåëü ðàçðåøàåò, òî ïðîèçâîäèì ïîèñê âðåìåíè â ïðåäïîëàãàåìîé "äûðå" èñòîðèè. if (exact == true) {// Ðàñ÷¸ò âðåìåíè çàêðûòèÿ òåêóùåãî êâàðòàëüíîãî áàðà. iTimeH2_1 = iTimeH1; // Âðåìÿ îòêðûòèÿ ïîñëåäíåãî â êâàðòàëå ÷àñîâîãî áàðà. // Âû÷èñëÿåì êîëè÷åñòâî äîáàâëÿåìûõ áàðîâ â êâàðòàëüíîì áàðå. if (MathMod (NumberHour + 1, 2) == 0) TimeFirst_H2 += 3600; // Åñëè áàð ïîñëåäíèé â áàðå H2, ïðîèçâîäèì ïðèáàâëåíèå 1-ãî áàðà. else TimeFirst_H2 += 7200; // Åñëè áàð ïåðâûé â áàðå H2, ïðîèçâîäèì ïðèáàâëåíèå 2-õ áàðîâ. // Ïðîâåðÿåì íà "äûðó" â èñòîðèè. if (iTimeH2_1 < time && time < iTimeH2_0) return (-1); // Âîçâðàùàåì -1 â ñëó÷àå îòñóòñòâèÿ áàðà. } // Ðàñ÷¸ò âðåìåíè îòêðûòèÿ òåêóùåãî êâàðòàëüíîãî áàðà. iTimeH2_0 = iTimeH1; // Âðåìÿ îòêðûòèÿ ïåðâîãî â èñòîðèè ÷àñîâîãî áàðà. // Âû÷èñëÿåì êîëè÷åñòâî óáàâëÿåìûõ áàðîâ â êâàðòàëüíîì áàðå. if (MathMod (NumberHour + 1, 2) == 0) TimeFirst_H2 -= 3600; // Åñëè áàð ïîñëåäíèé â áàðå H2, ïðîèçâîäèì óáàâëåíèå 1-ãî áàðà. else TimeFirst_H2 += 7200; // Åñëè áàð ïåðâûé â áàðå H2, ïðîèçâîäèì ïðèáàâëåíèå 2-õ áàðîâ. if (time >= iTimeH2_0) return (ShiftH2); // Âîçâðàùàåì íîìåð òåêóùåãî áàðà íà H2. } } } //ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ // 3. Âðåìÿ îòêðûòèÿ ïî íîìåðó áàðà â ÒÔ H2. datetime iTime_H2 (string symbol, // Ñèìâîëüíîå èìÿ èíñòðóìåíòà int shift) // Íîìåð áàðà. { datetime iTimeH1; // Âðåìÿ îòêðûòèÿ ÷àñîâîãî áàðà. int AmountBar; // Êîëè÷åñòâî äîáàâëÿåìûõ áàðîâ â ïåðâîì èëè ïîñëåäíåì êâàðòàëüíûõ áàðàõ. int i, j; int iBarsH1 = iBars (symbol, PERIOD_H1); // Êîëè÷åñòâî áàðîâ â ÒÔ H1 òåêóùåãî èíñòðóìåíòà. int iBarsH2 = iBars_H2 (symbol); // Êîëè÷åñòâî áàðîâ â ÒÔ H2. int NumberHour; // Íîìåð ÷àñà. int ShiftH2; // Òåêóùèé íîìåð áàðà ÒÔ H2. // Ìàññèâû. bool ArSwitch[12]; // Âûêëþ÷àòåëè ñ÷¸ò÷èêà øåñòè÷àñîâûõ áàðîâ. //---- ArrayInitialize (ArSwitch, true); //---- if (0 > shift || shift >= iBarsH2) return (0); // Âîçâðàùàåì íîëü â ñëó÷àå îøèáêè. else // Åñëè íîìåð áàðà íàõîäèòñÿ â ïðåäåëàõ èñòîðèè, èùåì åãî. {// Ðàñ÷¸ò ãîäà íà âèñîêîñíîñòü. Çàäà¸ì íà÷àëüíîå çíà÷åíèå. for (i = 0, ShiftH2 = -1; i < iBarsH1; i++) // Öèêë ïî íîìåðàì ìåñÿ÷íûõ áàðîâ. { iTimeH1 = iTime (symbol, PERIOD_H1, i); // Âðåìÿ îòêðûòèÿ ÷àñîâîãî áàðà. // Íà ïåðâîé èòåðàöèè íå ïðîâåðÿì ñóòîê. Åñëè ñìåíèëèñü ñóòêè, èíèöèàëèçèðóåì ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ. Ìîæåò ïðèãîäèòüñÿ ïðè îòñóòñòâèè áàðîâ âíóòðè äíÿ è íåñêîëüêèõ äíåé ïîäðÿä (äûðû â èñòîðèè). if (i > 0) if (MathMod (TimeDay (iTimeH1), TimeDay (iTime (symbol, PERIOD_H1, i - 1))) != 0) ArrayInitialize (ArSwitch, true); // Ïåðåêëþ÷àåì ïî ÷àñàì ñóòîê. NumberHour = TimeHour (iTimeH1); // Íîìåð ÷àñà. switch (NumberHour) {//----×àñîâûå áàðû 12-ãî äâóõ÷àñîâîãî áàðà.----------------------------------------------------------------------------------------- case 23: case 22: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 11) ArSwitch[j] = true; if (ArSwitch[11] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[11] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 11-ãî äâóõ÷àñîâîãî áàðà.----------------------------------------------------------------------------------------- case 21: case 20: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 10) ArSwitch[j] = true; if (ArSwitch[10] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[10] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 10-ãî äâóõ÷àñîâîãî áàðà.----------------------------------------------------------------------------------------- case 19: case 18: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 9) ArSwitch[j] = true; if (ArSwitch[9] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[9] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 9-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 17: case 16: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 8) ArSwitch[j] = true; if (ArSwitch[8] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[8] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 8-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 15: case 14: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 7) ArSwitch[j] = true; if (ArSwitch[7] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[7] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 7-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 13: case 12: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 6) ArSwitch[j] = true; if (ArSwitch[6] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[6] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 6-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 11: case 10: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 5) ArSwitch[j] = true; if (ArSwitch[5] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[5] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 5-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 9: case 8: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 4) ArSwitch[j] = true; if (ArSwitch[4] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[4] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 4-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 7: case 6: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 3) ArSwitch[j] = true; if (ArSwitch[3] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[3] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 3-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 5: case 4: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 2) ArSwitch[j] = true; if (ArSwitch[2] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[2] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 2-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 3: case 2: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 1) ArSwitch[j] = true; if (ArSwitch[1] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[1] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 1-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 1: case 0: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 0) ArSwitch[j] = true; if (ArSwitch[0] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[0] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } } // Åñëè íàøëè íóæíûé áàð. if (shift == ShiftH2) {// Âû÷èñëÿåì êîëè÷åñòâî óáàâëÿåìûõ áàðîâ â êâàðòàëüíîì áàðå. if (MathMod (NumberHour + 1, 2) == 0) return (iTimeH1 - 3600); // Åñëè áàð ïîñëåäíèé â áàðå H2, ïðîèçâîäèì óáàâëåíèå 1-ãî áàðà. else return (iTimeH1); // Âîçâðàùàåì âðåìÿ îòêðûòèÿ ïåðâîãî áàðà. } } } } //ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ // 4. Öåíà îòêðûòèÿ âûáðàííîãî áàðà â ÒÔ H2. double iOpen_H2 (string symbol, // Ñèìâîëüíîå èìÿ èíñòðóìåíòà. int shift) // Íîìåð áàðà. { bool Switch_H1 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà øåñòè÷àñîâûõ áàðîâ äëÿ ïåðâîãî äâóõ÷àñîâîãî áàðà. bool Switch_H2 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà øåñòè÷àñîâûõ áàðîâ äëÿ âòîðîãî äâóõ÷àñîâîãî áàðà. bool Switch_H3 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà øåñòè÷àñîâûõ áàðîâ äëÿ òðåòüîãî äâóõ÷àñîâîãî áàðà. bool Switch_H4 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà øåñòè÷àñîâûõ áàðîâ äëÿ ÷åòâ¸ðòîãî äâóõ÷àñîâîãî áàðà. datetime iTimeH1; // Âðåìÿ îòêðûòèÿ ÷àñîâîãî áàðà. int i, j, k; int iBarsH1 = iBars (symbol, PERIOD_H1); // Êîëè÷åñòâî áàðîâ â ÒÔ H1 òåêóùåãî èíñòðóìåíòà. int iBarsH2 = iBars_H2 (symbol); // Êîëè÷åñòâî áàðîâ â ÒÔ H2. int FirstH1; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. int ShiftH2; // Òåêóùèé íîìåð áàðà ÒÔ H2. // Ìàññèâû. bool ArSwitch[12]; // Âûêëþ÷àòåëè ñ÷¸ò÷èêà øåñòè÷àñîâûõ áàðîâ. //---- ArrayInitialize (ArSwitch, true); //---- if (0 > shift || shift >= iBarsH2) return (0); // Âîçâðàùàåì íîëü â ñëó÷àå îøèáêè. else // Åñëè íîìåð áàðà íàõîäèòñÿ â ïðåäåëàõ èñòîðèè, èùåì åãî. { for (i = 0, ShiftH2 = -1; i < iBarsH1; i++) // Öèêë ïî íîìåðàì ìåñÿ÷íûõ áàðîâ. { iTimeH1 = iTime (symbol, PERIOD_H1, i); // Âðåìÿ îòêðûòèÿ ÷àñîâîãî áàðà. // Íà ïåðâîé èòåðàöèè íå ïðîâåðÿì ñóòîê. Åñëè ñìåíèëèñü ñóòêè, èíèöèàëèçèðóåì ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ. Ìîæåò ïðèãîäèòüñÿ ïðè îòñóòñòâèè áàðîâ âíóòðè äíÿ è íåñêîëüêèõ äíåé ïîäðÿä (äûðû â èñòîðèè). if (i > 0) if (MathMod (TimeDay (iTimeH1), TimeDay (iTime (symbol, PERIOD_H1, i - 1))) != 0) ArrayInitialize (ArSwitch, true); // Ïåðåêëþ÷àåì ïî ÷àñàì ñóòîê. switch (TimeHour (iTimeH1)) {//----×àñîâûå áàðû 12-ãî äâóõ÷àñîâîãî áàðà.----------------------------------------------------------------------------------------- case 23: case 22: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 11) ArSwitch[j] = true; if (ArSwitch[11] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 22; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[11] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 11-ãî äâóõ÷àñîâîãî áàðà.----------------------------------------------------------------------------------------- case 21: case 20: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 10) ArSwitch[j] = true; if (ArSwitch[10] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 20; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[10] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 10-ãî äâóõ÷àñîâîãî áàðà.----------------------------------------------------------------------------------------- case 19: case 18: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 9) ArSwitch[j] = true; if (ArSwitch[9] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 18; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[9] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 9-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 17: case 16: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 8) ArSwitch[j] = true; if (ArSwitch[8] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 16; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[8] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 8-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 15: case 14: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 7) ArSwitch[j] = true; if (ArSwitch[7] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 14; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[7] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 7-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 13: case 12: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 6) ArSwitch[j] = true; if (ArSwitch[6] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 12; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[6] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 6-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 11: case 10: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 5) ArSwitch[j] = true; if (ArSwitch[5] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 10; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[5] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 5-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 9: case 8: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 4) ArSwitch[j] = true; if (ArSwitch[4] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 8; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[4] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 4-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 7: case 6: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 3) ArSwitch[j] = true; if (ArSwitch[3] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 6; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[3] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 3-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 5: case 4: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 2) ArSwitch[j] = true; if (ArSwitch[2] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 4; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[2] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 2-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 3: case 2: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 1) ArSwitch[j] = true; if (ArSwitch[1] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 2; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[1] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 1-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 1: case 0: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 0) ArSwitch[j] = true; if (ArSwitch[0] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 0; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[0] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } } //------------------------------------------------------------------------------------------------------------------------------------ if (shift == ShiftH2) // Åñëè íàøëè íóæíûé áàð. { for (i++, k = TimeDay (iTimeH1);; i++) // Èùèì ïåðâûé ìåñÿ÷íûé áàð êâàðòàëüíîãî áàðà. { iTimeH1 = iTime (symbol, PERIOD_H1, i); // Âðåìÿ îòêðûòèÿ ÷àñîâîãî áàðà. // Äëÿ ïåðâîãî áàðà ïåðâîãî 2-õ ÷àñîâîãî áàðà â ñóòêè îñîáûå óñëîâèÿ ïðîâåðêè íà÷àëà. Îñòàíàâëèâàåì öèêë, åñëè ñëåäóþùèé áàð íàõîäèòñÿ â äðóãèõ ñóòêàõ èëè ìåñÿöå. Âîçâðàùàåì öåíó îòêðûòèÿ 6-è ÷àñîâîãî áàðà. if (FirstH1 == 0) {if (TimeHour (iTimeH1) > 1 || TimeDay (iTimeH1) != k) return (iOpen (symbol, PERIOD_H1, i - 1));} else {if (TimeHour (iTimeH1) < FirstH1 || TimeDay (iTimeH1) != k) return (iOpen (symbol, PERIOD_H1, i - 1));} } } } } } //ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ // 5. Ìàêñèìàëüíàÿ öåíà âûáðàííîãî áàðà â ÒÔ H2. double iHigh_H2 (string symbol, // Ñèìâîëüíîå èìÿ èíñòðóìåíòà. int shift) // Íîìåð áàðà. { bool Switch_H1 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà øåñòè÷àñîâûõ áàðîâ äëÿ ïåðâîãî äâóõ÷àñîâîãî áàðà. bool Switch_H2 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà øåñòè÷àñîâûõ áàðîâ äëÿ âòîðîãî äâóõ÷àñîâîãî áàðà. bool Switch_H3 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà øåñòè÷àñîâûõ áàðîâ äëÿ òðåòüîãî äâóõ÷àñîâîãî áàðà. bool Switch_H4 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà øåñòè÷àñîâûõ áàðîâ äëÿ ÷åòâ¸ðòîãî äâóõ÷àñîâîãî áàðà. datetime iTimeH1; // Âðåìÿ îòêðûòèÿ ÷àñîâîãî áàðà. datetime iTimeH1_1; // Âðåìÿ îòêðûòèÿ ñëåäóþùåãî ÷àñîâîãî áàðà. int i, j, k, l; int iBarsH1 = iBars (symbol, PERIOD_H1); // Êîëè÷åñòâî áàðîâ â ÒÔ H1 òåêóùåãî èíñòðóìåíòà. int iBarsH2 = iBars_H2 (symbol); // Êîëè÷åñòâî áàðîâ â ÒÔ H2. int FirstH1; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. int ShiftH2; // Òåêóùèé íîìåð áàðà ÒÔ H2. // Ìàññèâû. bool ArSwitch[12]; // Âûêëþ÷àòåëè ñ÷¸ò÷èêà øåñòè÷àñîâûõ áàðîâ. //---- ArrayInitialize (ArSwitch, true); //---- if (0 > shift || shift >= iBarsH2) return (0); // Âîçâðàùàåì íîëü â ñëó÷àå îøèáêè. else // Åñëè íîìåð áàðà íàõîäèòñÿ â ïðåäåëàõ èñòîðèè, èùåì åãî. { for (i = 0, ShiftH2 = -1; i < iBarsH1; i++) // Öèêë ïî íîìåðàì ìåñÿ÷íûõ áàðîâ. { iTimeH1 = iTime (symbol, PERIOD_H1, i); // Âðåìÿ îòêðûòèÿ ÷àñîâîãî áàðà. // Íà ïåðâîé èòåðàöèè íå ïðîâåðÿì ñóòîê. Åñëè ñìåíèëèñü ñóòêè, èíèöèàëèçèðóåì ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ. Ìîæåò ïðèãîäèòüñÿ ïðè îòñóòñòâèè áàðîâ âíóòðè äíÿ è íåñêîëüêèõ äíåé ïîäðÿä (äûðû â èñòîðèè). if (i > 0) if (MathMod (TimeDay (iTimeH1), TimeDay (iTime (symbol, PERIOD_H1, i - 1))) != 0) ArrayInitialize (ArSwitch, true); // Ïåðåêëþ÷àåì ïî ÷àñàì ñóòîê. switch (TimeHour (iTimeH1)) {//----×àñîâûå áàðû 12-ãî äâóõ÷àñîâîãî áàðà.----------------------------------------------------------------------------------------- case 23: case 22: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 11) ArSwitch[j] = true; if (ArSwitch[11] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 22; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[11] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 11-ãî äâóõ÷àñîâîãî áàðà.----------------------------------------------------------------------------------------- case 21: case 20: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 10) ArSwitch[j] = true; if (ArSwitch[10] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 20; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[10] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 10-ãî äâóõ÷àñîâîãî áàðà.----------------------------------------------------------------------------------------- case 19: case 18: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 9) ArSwitch[j] = true; if (ArSwitch[9] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 18; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[9] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 9-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 17: case 16: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 8) ArSwitch[j] = true; if (ArSwitch[8] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 16; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[8] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 8-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 15: case 14: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 7) ArSwitch[j] = true; if (ArSwitch[7] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 14; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[7] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 7-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 13: case 12: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 6) ArSwitch[j] = true; if (ArSwitch[6] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 12; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[6] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 6-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 11: case 10: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 5) ArSwitch[j] = true; if (ArSwitch[5] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 10; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[5] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 5-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 9: case 8: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 4) ArSwitch[j] = true; if (ArSwitch[4] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 8; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[4] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 4-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 7: case 6: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 3) ArSwitch[j] = true; if (ArSwitch[3] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 6; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[3] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 3-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 5: case 4: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 2) ArSwitch[j] = true; if (ArSwitch[2] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 4; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[2] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 2-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 3: case 2: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 1) ArSwitch[j] = true; if (ArSwitch[1] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 2; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[1] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 1-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 1: case 0: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 0) ArSwitch[j] = true; if (ArSwitch[0] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 0; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[0] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } } //------------------------------------------------------------------------------------------------------------------------------------ if (shift == ShiftH2) // Åñëè íàøëè íóæíûé áàð. { iTimeH1_1 = iTime (symbol, PERIOD_H1, i + 1); // Âðåìÿ îòêðûòèÿ ñëåäóþùåãî ÷àñîâîãî áàðà. // Åñëè ñëåäóþùèé áàð íàõîäèòñÿ â äðóãèõ ñóòêàõ èëè ìåñÿöå. Äëÿ ïåðâîãî áàðà ïåðâîãî 2-õ ÷àñîâîãî áàðà â ñóòêè îñîáûå óñëîâèÿ ïðîâåðêè íà÷àëà. if (FirstH1 == 0) {if (TimeHour (iTimeH1_1) > 1 || TimeDay (iTimeH1) != TimeDay (iTimeH1_1)) return (iHigh (symbol, PERIOD_H1, i));} else {if (TimeHour (iTimeH1_1) < FirstH1 || TimeDay (iTimeH1) != TimeDay (iTimeH1_1)) return (iHigh (symbol, PERIOD_H1, i));} // Åñëè ñëåäóþùèé áàð H1 íàõîäèòñÿ â òåêóùåì áàðå H2. return (MathMax (iHigh (symbol, PERIOD_H1, i), iHigh (symbol, PERIOD_H1, i + 1))); } } } } //ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ // 6. Ìèíèìàëüíàÿ öåíà âûáðàííîãî áàðà â ÒÔ H2. double iLow_H2 (string symbol, // Ââàëþòíàÿ ïàðà. int shift) // Íîìåð áàðà. { bool Switch_H1 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà øåñòè÷àñîâûõ áàðîâ äëÿ ïåðâîãî äâóõ÷àñîâîãî áàðà. bool Switch_H2 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà øåñòè÷àñîâûõ áàðîâ äëÿ âòîðîãî äâóõ÷àñîâîãî áàðà. bool Switch_H3 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà øåñòè÷àñîâûõ áàðîâ äëÿ òðåòüîãî äâóõ÷àñîâîãî áàðà. bool Switch_H4 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà øåñòè÷àñîâûõ áàðîâ äëÿ ÷åòâ¸ðòîãî äâóõ÷àñîâîãî áàðà. datetime iTimeH1; // Âðåìÿ îòêðûòèÿ ÷àñîâîãî áàðà. datetime iTimeH1_1; // Âðåìÿ îòêðûòèÿ ñëåäóþùåãî ÷àñîâîãî áàðà. int i, j, k, l; int iBarsH1 = iBars (symbol, PERIOD_H1); // Êîëè÷åñòâî áàðîâ â ÒÔ H1 òåêóùåãî èíñòðóìåíòà. int iBarsH2 = iBars_H2 (symbol); // Êîëè÷åñòâî áàðîâ â ÒÔ H2. int FirstH1; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. int ShiftH2; // Òåêóùèé íîìåð áàðà ÒÔ H2. // Ìàññèâû. bool ArSwitch[12]; // Âûêëþ÷àòåëè ñ÷¸ò÷èêà øåñòè÷àñîâûõ áàðîâ. //---- ArrayInitialize (ArSwitch, true); //---- if (0 > shift || shift >= iBarsH2) return (0); // Âîçâðàùàåì íîëü â ñëó÷àå îøèáêè. else // Åñëè íîìåð áàðà íàõîäèòñÿ â ïðåäåëàõ èñòîðèè, èùåì åãî. { for (i = 0, ShiftH2 = -1; i < iBarsH1; i++) // Öèêë ïî íîìåðàì ìåñÿ÷íûõ áàðîâ. { iTimeH1 = iTime (symbol, PERIOD_H1, i); // Âðåìÿ îòêðûòèÿ ÷àñîâîãî áàðà. // Íà ïåðâîé èòåðàöèè íå ïðîâåðÿì ñóòîê. Åñëè ñìåíèëèñü ñóòêè, èíèöèàëèçèðóåì ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ. Ìîæåò ïðèãîäèòüñÿ ïðè îòñóòñòâèè áàðîâ âíóòðè äíÿ è íåñêîëüêèõ äíåé ïîäðÿä (äûðû â èñòîðèè). if (i > 0) if (MathMod (TimeDay (iTimeH1), TimeDay (iTime (symbol, PERIOD_H1, i - 1))) != 0) ArrayInitialize (ArSwitch, true); // Ïåðåêëþ÷àåì ïî ÷àñàì ñóòîê. switch (TimeHour (iTimeH1)) {//----×àñîâûå áàðû 12-ãî äâóõ÷àñîâîãî áàðà.----------------------------------------------------------------------------------------- case 23: case 22: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 11) ArSwitch[j] = true; if (ArSwitch[11] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 22; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[11] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 11-ãî äâóõ÷àñîâîãî áàðà.----------------------------------------------------------------------------------------- case 21: case 20: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 10) ArSwitch[j] = true; if (ArSwitch[10] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 20; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[10] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 10-ãî äâóõ÷àñîâîãî áàðà.----------------------------------------------------------------------------------------- case 19: case 18: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 9) ArSwitch[j] = true; if (ArSwitch[9] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 18; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[9] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 9-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 17: case 16: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 8) ArSwitch[j] = true; if (ArSwitch[8] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 16; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[8] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 8-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 15: case 14: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 7) ArSwitch[j] = true; if (ArSwitch[7] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 14; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[7] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 7-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 13: case 12: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 6) ArSwitch[j] = true; if (ArSwitch[6] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 12; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[6] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 6-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 11: case 10: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 5) ArSwitch[j] = true; if (ArSwitch[5] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 10; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[5] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 5-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 9: case 8: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 4) ArSwitch[j] = true; if (ArSwitch[4] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 8; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[4] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 4-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 7: case 6: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 3) ArSwitch[j] = true; if (ArSwitch[3] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 6; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[3] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 3-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 5: case 4: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 2) ArSwitch[j] = true; if (ArSwitch[2] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 4; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[2] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 2-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 3: case 2: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 1) ArSwitch[j] = true; if (ArSwitch[1] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 2; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[1] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 1-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 1: case 0: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 0) ArSwitch[j] = true; if (ArSwitch[0] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { ShiftH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. FirstH1 = 0; // Íîìåð ïåðâîãî ÷àñà â 2-õ ÷àñîâîì áàðå. ArSwitch[0] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } } //----------------------------------------------------------------------------------------------------------------------------------- if (shift == ShiftH2) // Åñëè íàøëè íóæíûé áàð. { iTimeH1_1 = iTime (symbol, PERIOD_H1, i + 1); // Âðåìÿ îòêðûòèÿ ñëåäóþùåãî ÷àñîâîãî áàðà. // Åñëè ñëåäóþùèé áàð íàõîäèòñÿ â äðóãèõ ñóòêàõ èëè ìåñÿöå. Äëÿ ïåðâîãî áàðà ïåðâîãî 2-õ ÷àñîâîãî áàðà â ñóòêè îñîáûå óñëîâèÿ ïðîâåðêè íà÷àëà. if (FirstH1 == 0) {if (TimeHour (iTimeH1_1) > 1 || TimeDay (iTimeH1) != TimeDay (iTimeH1_1)) return (iHigh (symbol, PERIOD_H1, i));} else {if (TimeHour (iTimeH1_1) < FirstH1 || TimeDay (iTimeH1) != TimeDay (iTimeH1_1)) return (iHigh (symbol, PERIOD_H1, i));} // Åñëè ñëåäóþùèé áàð H1 íàõîäèòñÿ â òåêóùåì áàðå H2. return (MathMin (iLow (symbol, PERIOD_H1, i), iLow (symbol, PERIOD_H1, i + 1))); } } } } //ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ // 7. Öåíà çàêðûòèÿ âûáðàííîãî áàðà â ÒÔ H2. double iClose_H2 (string symbol, // Ñèìâîëüíîå èìÿ èíñòðóìåíòà. int shift) // Íîìåð áàðà. { datetime iTimeH1; // Âðåìÿ îòêðûòèÿ ÷àñîâîãî áàðà. int i, j; int iBarsH1 = iBars (symbol, PERIOD_H1); // Êîëè÷åñòâî áàðîâ â ÒÔ H1 òåêóùåãî èíñòðóìåíòà. int iBarsH2 = iBars_H2 (symbol); // Êîëè÷åñòâî áàðîâ èëè íîìåð áàðà â ÒÔ H2. // Ìàññèâû. bool ArSwitch[12]; // Âûêëþ÷àòåëè ñ÷¸ò÷èêà øåñòè÷àñîâûõ áàðîâ. //---- ArrayInitialize (ArSwitch, true); // Ïðîâåðêà íà íåêîððåêòíîå çíà÷åíèå íàìåðà áàðà. if (0 > shift || shift >= iBarsH2) return (0); // Âîçâðàùàåì íîëü â ñëó÷àå îøèáêè. else // Åñëè íîìåð áàðà íàõîäèòñÿ â ïðåäåëàõ èñòîðèè, èùåì åãî. { iBarsH1 = iBars (symbol, PERIOD_H1); // Êîëè÷åñòâî áàðîâ â ÒÔ H1 òåêóùåãî èíñòðóìåíòà. for (i = 0, iBarsH2 = -1; i < iBarsH1; i++) { iTimeH1 = iTime (symbol, PERIOD_H1, i); // Âðåìÿ îòêðûòèÿ ÷àñîâîãî áàðà. // Íà ïåðâîé èòåðàöèè íå ïðîâåðÿì ñóòîê. Åñëè ñìåíèëèñü ñóòêè, èíèöèàëèçèðóåì ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ. Ìîæåò ïðèãîäèòüñÿ ïðè îòñóòñòâèè áàðîâ âíóòðè äíÿ è íåñêîëüêèõ äíåé ïîäðÿä (äûðû â èñòîðèè). if (i > 0) if (MathMod (TimeDay (iTimeH1), TimeDay (iTime (symbol, PERIOD_H1, i - 1))) != 0) ArrayInitialize (ArSwitch, true); // Ïåðåêëþ÷àåì ïî ÷àñàì ñóòîê. switch (TimeHour (iTimeH1)) {//----×àñîâûå áàðû 12-ãî äâóõ÷àñîâîãî áàðà.----------------------------------------------------------------------------------------- case 23: case 22: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 11) ArSwitch[j] = true; if (ArSwitch[11] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { iBarsH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[11] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 11-ãî äâóõ÷àñîâîãî áàðà.----------------------------------------------------------------------------------------- case 21: case 20: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 10) ArSwitch[j] = true; if (ArSwitch[10] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { iBarsH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[10] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 10-ãî äâóõ÷àñîâîãî áàðà.----------------------------------------------------------------------------------------- case 19: case 18: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 9) ArSwitch[j] = true; if (ArSwitch[9] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { iBarsH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[9] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 9-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 17: case 16: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 8) ArSwitch[j] = true; if (ArSwitch[8] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { iBarsH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[8] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 8-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 15: case 14: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 7) ArSwitch[j] = true; if (ArSwitch[7] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { iBarsH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[7] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 7-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 13: case 12: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 6) ArSwitch[j] = true; if (ArSwitch[6] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { iBarsH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[6] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 6-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 11: case 10: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 5) ArSwitch[j] = true; if (ArSwitch[5] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { iBarsH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[5] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 5-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 9: case 8: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 4) ArSwitch[j] = true; if (ArSwitch[4] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { iBarsH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[4] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 4-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 7: case 6: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 3) ArSwitch[j] = true; if (ArSwitch[3] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { iBarsH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[3] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 3-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 5: case 4: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 2) ArSwitch[j] = true; if (ArSwitch[2] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { iBarsH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[2] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 2-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 3: case 2: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 1) ArSwitch[j] = true; if (ArSwitch[1] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { iBarsH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[1] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } //----×àñîâûå áàðû 1-ãî äâóõ÷àñîâîãî áàðà.------------------------------------------------------------------------------------------ case 1: case 0: {// Èíèöèàëèçèðóåì âêëþ÷àòåëè ñ÷¸ò÷èêà áàðîâ H2, êðîìå òåêóùåãî. for (j = 0; j < 12; j++) if (j != 0) ArSwitch[j] = true; if (ArSwitch[0] == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í. { iBarsH2++; // Ñ÷èòàåì êâàðòàëüíûé áàð. ArSwitch[0] = false; // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. break; // Âûõîäèì èç ïåðåêëþ÷àòåëÿ. } else continue; // Ñ÷¸ò÷èê øåñòè÷àñîâûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì. } } //------------------------------------------------------------------------------------------------------------------------------------ if (shift == iBarsH2) return (iClose (symbol, PERIOD_H1, i)); // Åñëè íàøëè íóæíûé áàð. Âîçâðàùàåì âðåìÿ çàêðûòèÿ ÷àñîâîãî áàðà. } } } //ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ // 8. Âîçâðàùàåò òåêóùèé íîìåð øåñòè÷àñîâîãî áàðà â ñóòêàõ ïîñëåäíåãî èçâåñòíîãî ñåðâåðíîãî âðåìåíè. int Hour2() { switch (Hour()) { case 0: case 1: return (1); case 2: case 3: return (2); case 4: case 5: return (3); case 6: case 7: return (4); case 8: case 9: return (5); case 10: case 11: return (6); case 12: case 13: return (7); case 14: case 15: return (8); case 16: case 17: return (9); case 18: case 19: return (10); case 20: case 21: return (11); case 22: case 23: return (12); } } //ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ // 8. Âîçâðàùàåò òåêóùèé íîìåð äâóõ÷àñîâîãî áàðà â ñóòêàõ ïîñëåäíåãî èçâåñòíîãî ñåðâåðíîãî âðåìåíè. int TimeHour2 (datetime time) { switch (TimeHour (time)) // Äàòà, ïðåäñòàâëåííàÿ â âèäå êîëè÷åñòâà ñåêóíä, ïðîøåäøèõ ïîñëå 00:00 1 ÿíâàðÿ 1970 ãîäà. { case 0: case 1: return (1); case 2: case 3: return (2); case 4: case 5: return (3); case 6: case 7: return (4); case 8: case 9: return (5); case 10: case 11: return (6); case 12: case 13: return (7); case 14: case 15: return (8); case 16: case 17: return (9); case 18: case 19: return (10); case 20: case 21: return (11); case 22: case 23: return (12); } } //ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
Sample
Analysis
Market Information Used:
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Other Features: