//+-----------------------------------------------------------------------------------------------------------------------------+
//| 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);
}
}
//ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
Comments