ZH_StandardFunctionsTfQ1.lib

Download script
Author: Copyright � 2006 Zhunko
ZH_StandardFunctionsTfQ1.lib

This script serves as a specialized toolkit for MetaTrader 4, specifically designed to help traders and automated systems identify and interact with Quarterly price data. Instead of looking at daily or hourly fluctuations, this logic allows the software to focus on broader three-month segments (quarters) of the financial year.

Core Functionality

The primary purpose of this script is to "bridge" the gap between standard monthly charts and quarterly requirements. It performs several key roles:

1. Quarterly Data Navigation The script can automatically calculate and retrieve specific data points for a given quarter. This includes identifying the exact time a quarter opened, finding the opening price, and determining the highest (high) and lowest (low) prices reached during that three-month period.

2. Smart Historical Searching One of the more advanced features of this script is its ability to locate specific bars within a quarterly timeframe based on a provided date.

  • If you provide a specific date, the script scans the history to find the corresponding quarterly bar.
  • It includes "exact match" logic: if a specific date falls into a gap in the data (for example, during a period where no trading occurred), the script can either notify you that the data is missing or automatically find the closest preceding available bar.

3. Dynamic Calendar Awareness The script is designed to be "calendar-intelligent." It recognizes:

  • Leap Years: It accounts for the extra day in February during leap years to ensure date calculations remain accurate.
  • Quarter Transitions: It knows exactly which months belong to which quarter (e.g., identifying that January through March constitutes Quarter 1).
  • Yearly Resets: It intelligently resets its internal counters whenever a new year begins, ensuring that quarterly data from one year doesn't get mixed up with the next.

How it Works Behind the Scenes

To provide this information, the script performs the following logical steps:

  • Monthly Analysis: It starts by examining monthly price bars to see where quarters begin and end.
  • Iterative Counting: It cycles through the months of a year, using "switches" (internal permissions) to count how many bars belong to each quarter.
  • Price Aggregation: To find the High or Low of a quarter, it looks at the three months involved and identifies the peak or valley across all of them.
  • Time Offsets: It calculates the exact number of seconds in each month to move backward or forward accurately from a specific point in time.

Summary of Available Tools

Users can use this script to quickly pull the following information for any financial instrument:

  • The total number of quarterly bars available in history.
  • The "Shift" (index) of a quarter based on a specific date.
  • The exact opening time of a historical quarter.
  • The opening, maximum high, minimum low, and closing prices of a specific quarter.
  • The current quarter number based on the current time or a past date.
12 Views
0 Downloads
0 Favorites
ZH_StandardFunctionsTfQ1.lib
//+-------------------------------------------------------------------------------------------------------------------------------+
//|                                                                                               ZH_StandardFunctionsTfQ1.lib.mq4|
//|                                                                                               Copyright © Zhunko              |
//|14.09.2009 - 12.10.2009                                                                        ÌF ZHUNKO vadim@zhunko.ru       |
//+-------------------------------------------------------------------------------------------------------------------------------+
//| ÍÀÁÎÐ ÑÒÀÍÄÀÐÒÍÛÕ ÔÓÍÊÖÈÉ ÄËß ÒÔ Q1.                                                                                          |
//+-------------------------------------------------------------------------------------------------------------------------------+
//|1.Êîëè÷åñòâî áàðîâ â ÒÔ Q1.                                                                                                    |
//|  int iBars_Q1 (string symbol); // Ñèìâîëüíîå èìÿ èíñòðóìåíòà.                                                                 |
//+-------------------------------------------------------------------------------------------------------------------------------+
//|2.Íîìåð áàðà ïî âðåìåíè â ÒÔ Q1.                                                                                               |
//|  int iBarShift_Q1 (string   symbol, // Ñèìâîëüíîå èìÿ èíñòðóìåíòà.                                                            |
//|                    datetime time,   // Çíà÷åíèå âðåìåíè äëÿ ïîèñêà.                                                           |
//|                    bool     exact)  // Âîçâðàùàåìîå çíà÷åíèå åñëè áàð íå íàéäåí                                               |
//|                                     // (FALSE - iBarShift âîçâðàùàåò áëèæàéøèé/TRUE - iBarShift âîçâðàùàåò -1).               |
//+-------------------------------------------------------------------------------------------------------------------------------+
//|3.Âðåìÿ îòêðûòèÿ ïî íîìåðó áàðà â ÒÔ Q1.                                                                                       |
//|  datetime iTime_Q1 (string symbol, // Ñèìâîëüíîå èìÿ èíñòðóìåíòà                                                              |
//|                     int    shift)  // Íîìåð áàðà.                                                                             |
//+-------------------------------------------------------------------------------------------------------------------------------+
//|4.Öåíà îòêðûòèÿ âûáðàííîãî áàðà â ÒÔ Q1.                                                                                       |
//|  double iOpen_Q1 (string symbol, // Ñèìâîëüíîå èìÿ èíñòðóìåíòà.                                                               |
//|                   int    shift)  // Íîìåð áàðà.                                                                               |
//+-------------------------------------------------------------------------------------------------------------------------------+
//|5.Ìàêñèìàëüíàÿ öåíà âûáðàííîãî áàðà â ÒÔ Q1.                                                                                   |
//|  double iHigh_Q1 (string symbol, // Ñèìâîëüíîå èìÿ èíñòðóìåíòà.                                                               |
//|                   int    shift)  // Íîìåð áàðà.                                                                               |
//+-------------------------------------------------------------------------------------------------------------------------------+
//|6.Ìèíèìàëüíàÿ öåíà âûáðàííîãî áàðà â ÒÔ Q1.                                                                                    |
//|  double iLow_Q1 (string symbol, // Ââàëþòíàÿ ïàðà.                                                                            |
//|                  int    shift)  // Íîìåð áàðà.                                                                                |
//+-------------------------------------------------------------------------------------------------------------------------------+
//|7.Öåíà çàêðûòèÿ âûáðàííîãî áàðà â ÒÔ Q1.                                                                                       |
//|  double iClose_Q1 (string symbol, // Ñèìâîëüíîå èìÿ èíñòðóìåíòà.                                                              |
//|                    int    shift)  // Íîìåð áàðà.                                                                              |
//+-------------------------------------------------------------------------------------------------------------------------------+
//|8. Âîçâðàùàåò òåêóùèé íîìåð êâàðòàëüíîãî áàðà â ãîäó.                                                                          |
//|   int Quarter()                                                                                                               |
//+-------------------------------------------------------------------------------------------------------------------------------+
//|9. Âîçâðàùàåò íîìåð êâàðòàëà äëÿ óêàçàííîãî âðåìåíè.                                                                           |
//|   int TimeQuarter (datetime time) // Äàòà, ïðåäñòàâëåííàÿ â âèäå êîëè÷åñòâà ñåêóíä, ïðîøåäøèõ ïîñëå 00:00 1 ÿíâàðÿ 1970 ãîäà. |
//+-------------------------------------------------------------------------------------------------------------------------------+
//ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
#property copyright "Copyright © 2006 Zhunko"
#property link      "vadim@zhunko.ru"
#property library
//----Ìàññèâû.-----------------------------------------------------------------------------------------------------------------------------
//        Íå âèñîêîñíûé ãîä:   ßíâàðü   Ôåâðàëü  Ìàðò     Àïðåëü   Ìàé      Èþíü     Èþëü     Àâãóñò   Ñåíòÿáðü Îêòÿáðü  Íîÿáðü   Äåêàáðü
int ArSecondsInMonth[2][12] = {2678400, 2419200, 2678400, 2592000, 2678400, 2592000, 2678400, 2678400, 2592000, 2678400, 2592000, 2678400,
//        Âèñîêîñíûé ãîä:      ßíâàðü   Ôåâðàëü  Ìàðò     Àïðåëü   Ìàé      Èþíü     Èþëü     Àâãóñò   Ñåíòÿáðü Îêòÿáðü  Íîÿáðü   Äåêàáðü
                               2678400, 2505600, 2678400, 2592000, 2678400, 2592000, 2678400, 2678400, 2592000, 2678400, 2592000, 2678400};
//ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
// 1. Êîëè÷åñòâî áàðîâ â ÒÔ Q1.
int iBars_Q1 (string symbol) // Ñèìâîëüíîå èìÿ èíñòðóìåíòà.
 {
  bool     Switch_Q1 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà êâàðòàëüíûõ áàðîâ äëÿ ïåðâîãî êâàðòàëà.
  bool     Switch_Q2 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà êâàðòàëüíûõ áàðîâ äëÿ âòîðîãî êâàðòàëà.
  bool     Switch_Q3 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà êâàðòàëüíûõ áàðîâ äëÿ òðåòüåãî êâàðòàëà.
  bool     Switch_Q4 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà êâàðòàëüíûõ áàðîâ äëÿ ÷åòâ¸ðòîãî êâàðòàëà.
  datetime iTimeMN1;         // Âðåìÿ îòêðûòèÿ ìåñÿ÷íîãî áàðà.
  int      i;
  int      iBarsMN1;         // Êîëè÷åñòâî áàðîâ â ÒÔ MN1 òåêóùåãî èíñòðóìåíòà.
  int      iBarsQ1;          // Êîëè÷åñòâî áàðîâ â ÒÔ Q1.
  //----
  iBarsMN1 = iBars (symbol, PERIOD_MN1); // Êîëè÷åñòâî áàðîâ â ÒÔ MN1 òåêóùåãî èíñòðóìåíòà.
  for (i = 0, iBarsQ1 = 0; i < iBarsMN1; i++)
   {
    iTimeMN1 = iTime (symbol, PERIOD_MN1, i); // Âðåìÿ îòêðûòèÿ ìåñÿ÷íîãî áàðà.
    if (i > 0) // Íà ïåðâîé èòåðàöèè íå ïðîâåðÿì ñìåíó ãîäà.
     {// Åñëè ñìåíèëñÿ ãîä, èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ âî âñåõ êâàðòàëàõ. Ìîæåò ïðèãîäèòüñÿ ïðè îòñóòñòâèè áàðîâ âíóòðè ãîäà è íåñêîëüêèõ ëåò ïîäðÿä (äûðû â èñòîðèè).
      if (MathMod (TimeYear (iTimeMN1), TimeYear (iTime (symbol, PERIOD_MN1, i - 1))) != 0)
       {
        Switch_Q1 = true; // Èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ ïåðâîãî êâàðòàëà.
        Switch_Q2 = true; // Èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ âòîðîãî êâàðòàëà.
        Switch_Q3 = true; // Èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ òðåòüåãî êâàðòàëà.
        Switch_Q4 = true; // Èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ ÷åòâ¸ðòîãî êâàðòàëà.
       }
     }
    // Ïåðåêëþ÷àåì ïî íîìåðàì ìåñÿöåâ.
    switch (TimeMonth (iTimeMN1))
     {//----Ìåñÿöà 4-ãî êâàðòàëà.-----------------------------------------------------------------------------------------
      case 12:
      case 11:
      case 10:
       {
        Switch_Q3 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 3-ãî êâàðòàëà.
        Switch_Q2 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 2-ãî êâàðòàëà.
        Switch_Q1 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 1-ãî êâàðòàëà.
        if (Switch_Q4 == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í.
         {
          iBarsQ1++;           // Ñ÷èòàåì êâàðòàëüíûé áàð.
          Switch_Q4 = false;   // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
          break;               // Âûõîäèì èç ïåðåêëþ÷àòåëÿ.
         }
        else continue;         // Ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
       }
      //----Ìåñÿöà 3-ãî êâàðòàëà.-----------------------------------------------------------------------------------------
      case 9:
      case 8:
      case 7:
       {
        Switch_Q4 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 4-ãî êâàðòàëà.
        Switch_Q2 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 2-ãî êâàðòàëà.
        Switch_Q1 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 1-ãî êâàðòàëà.
        if (Switch_Q3 == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í.
         {
          iBarsQ1++;           // Ñ÷èòàåì êâàðòàëüíûé áàð.
          Switch_Q3 = false;   // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
          break;               // Âûõîäèì èç ïåðåêëþ÷àòåëÿ.
         }
        else continue;         // Ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
       }
      //----Ìåñÿöà 2-ãî êâàðòàëà.-----------------------------------------------------------------------------------------
      case 6:
      case 5:
      case 4:
       {
        Switch_Q4 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 4-ãî êâàðòàëà.
        Switch_Q3 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 3-ãî êâàðòàëà.
        Switch_Q1 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 1-ãî êâàðòàëà.
        if (Switch_Q2 == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í.
         {
          iBarsQ1++;           // Ñ÷èòàåì êâàðòàëüíûé áàð.
          Switch_Q2 = false;   // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
          break;               // Âûõîäèì èç ïåðåêëþ÷àòåëÿ.
         }
        else continue;         // Ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
       }
      //----Ìåñÿöà 1-ãî êâàðòàëà.-----------------------------------------------------------------------------------------
      case 3:
      case 2:
      case 1:
       {
        Switch_Q4 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 4-ãî êâàðòàëà.
        Switch_Q3 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 3-ãî êâàðòàëà.
        Switch_Q2 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 2-ãî êâàðòàëà.
        if (Switch_Q1 == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í.
         {
          iBarsQ1++;           // Ñ÷èòàåì êâàðòàëüíûé áàð.
          Switch_Q1 = false;   // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
          break;               // Âûõîäèì èç ïåðåêëþ÷àòåëÿ.
         }
        else continue;         // Ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
       }
     }
   }
  return (iBarsQ1);
 }
//ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
// 2. Íîìåð áàðà ïî âðåìåíè â ÒÔ Q1.
int iBarShift_Q1 (string   symbol, // Ñèìâîëüíîå èìÿ èíñòðóìåíòà.
                  datetime time,   // Çíà÷åíèå âðåìåíè äëÿ ïîèñêà.
                  bool     exact)  // Âîçâðàùàåìîå çíà÷åíèå åñëè áàð íå íàéäåí (FALSE - iBarShift âîçâðàùàåò áëèæàéøèé/TRUE - iBarShift âîçâðàùàåò -1).
 {
  bool     Switch_Q1 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà êâàðòàëüíûõ áàðîâ äëÿ ïåðâîãî êâàðòàëà.
  bool     Switch_Q2 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà êâàðòàëüíûõ áàðîâ äëÿ âòîðîãî êâàðòàëà.
  bool     Switch_Q3 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà êâàðòàëüíûõ áàðîâ äëÿ òðåòüåãî êâàðòàëà.
  bool     Switch_Q4 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà êâàðòàëüíûõ áàðîâ äëÿ ÷åòâ¸ðòîãî êâàðòàëà.
  datetime TimeFirst_Q1;     // Âðåìÿ çàêðûòèÿ ïåðâãî êâàðòàëüíîãî áàðà â èñòîðèè. Êâàðòàë íà÷àëà èñòîðèè ïàðû.
  datetime TimeLast_Q1;      // Âðåìÿ îòêðûòèÿ ïîñëåäíåãî êâàðòàëüíîãî áàðà â èñòîðèè.
  datetime iTimeMN1;         // Âðåìÿ îòêðûòèÿ òåêóùåãî áàðà íà MN1.
  datetime iTimeQ1_0;        // Âðåìÿ îòêðûòèÿ òåêóùåãî áàðà íà Q1.
  datetime iTimeQ1_1;        // Âðåìÿ îòêðûòèÿ ïðåäûäóùåãî áàðà íà Q1.
  int      AmountBar;        // Êîëè÷åñòâî äîáàâëÿåìûõ áàðîâ â ïåðâîì èëè ïîñëåäíåì êâàðòàëüíûõ áàðàõ.
  int      i, j;
  int      ShiftQ1 = 0;      // Âîçâðàùàåìîå çíà÷åíèå ñìåùåíèÿ áàðà â ÒÔ Q1.
  int      iBarsMN1;         // Êîëè÷åñòâî áàðîâ â ÒÔ MN1 òåêóùåãî èíñòðóìåíòà.
  int      LeapYear;         // Âèñîêîñíîñòü ãîäà âûáðàííîãî âðåìåíè.
  int      NumberMonth;      // Íîìåð ìåñÿöà.
  //====Ïîäãîòîâêà äàííûõ.================================================================================================================================================================================================================
  iBarsMN1 = iBars (symbol, PERIOD_MN1);                           // Êîëè÷åñòâî áàðîâ â ÒÔ MN1 òåêóùåãî èíñòðóìåíòà.
  //====Ðàñ÷¸ò âðåìåíè çàêðûòèÿ ïåðâîãî êâàðòàëüíîãî áàðà â èñòîðèè. Êâàðòàë íà÷àëà èñòîðèè ïàðû.==========================================================================================================================================
  TimeFirst_Q1 = iTime (symbol, PERIOD_MN1, iBarsMN1 - 1);         // Âðåìÿ îòêðûòèÿ ïåðâîãî â èñòîðèè ìåñÿ÷íîãî áàðà.
  if (MathMod (TimeYear (TimeFirst_Q1), 4) == 0) LeapYear = true;  // Åñëè ãîä âèñîêîñíûé.
  else LeapYear = false;                                           // Åñëè ãîä íå âèñîêîñíûé.
  NumberMonth = TimeMonth (TimeFirst_Q1);                          // Íîìåð ìåñÿöà.
  // Âû÷èñëÿåì êîëè÷åñòâî äîáàâëÿåìûõ áàðîâ â êâàðòàëüíîì áàðå.
  AmountBar = MathMod (NumberMonth, 3);                            // Åñëè áàð ïîñëåäíèé â êâàðòàëå, òî êîëè÷åñòâî äîáàâëÿåìûõ áàðîâ ðàâíî íóëþ.
  if (AmountBar > 0) AmountBar = 3 - AmountBar;                    // Åñëè áàð íå ïîñëåäíèé â êâàðòàëå, ïðîäîëæàåì âû÷èñëÿòü.
  // Ïðîèçâîäèì ïðèáàâëåíèå âðåìåíè.
  for (i = NumberMonth; i <= (NumberMonth + AmountBar); i++) TimeFirst_Q1 += ArSecondsInMonth[LeapYear][i - 1];
  //====Ðàñ÷¸ò âðåìåíè îòêðûòèÿ ïîñëåäíåãî êâàðòàëüíîãî áàðà â èñòîðèè.===================================================================================================================================================================
  TimeLast_Q1 = iTime (symbol, PERIOD_MN1, 0);                     // Âðåìÿ îòêðûòèÿ ïîñëåäíåãî â èñòîðèè ìåñÿ÷íîãî áàðà.
  if (MathMod (TimeYear (TimeLast_Q1), 4) == 0) LeapYear = true;   // Åñëè ãîä âèñîêîñíûé.
  else LeapYear = false;                                           // Åñëè ãîä íå âèñîêîñíûé.
  NumberMonth = TimeMonth (TimeLast_Q1);                           // Íîìåð ìåñÿöà.
  // Âû÷èñëÿåì êîëè÷åñòâî äîáàâëÿåìûõ áàðîâ â êâàðòàëüíîì áàðå.
  AmountBar = MathMod (NumberMonth, 3);                            // Íîìåð ìåñÿ÷íîãî áàðà â êâàðòàëå.
  if (AmountBar == 0) AmountBar = 2;                               // Åñëè áàð ïîñëåäíèé â êâàðòàëå, òî êîëè÷åñòâî äîáàâëÿåìûõ áàðîâ ðàâíî äâóì.
  else AmountBar = AmountBar - 1;                                  // Åñëè áàð íå ïîñëåäíèé â êâàðòàëå, ïðîäîëæàåì âû÷èñëþòü.
  // Ïðîèçâîäèì âû÷èòàíèå âðåìåíè. Íà÷èíàåì ñ ïîñëåäíåãî ìåñÿöà.
  for (i = (NumberMonth - AmountBar); i < NumberMonth; i++) TimeLast_Q1 -= ArSecondsInMonth[LeapYear][i - 1];
  //----Äèàãíîñòèêà.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//  Comment ("TimeFirst_Q1 = ", TimeToStr (TimeFirst_Q1, TIME_DATE|TIME_MINUTES|TIME_SECONDS), "\nLastQuarter = ", TimeToStr (TimeLast_Q1, TIME_DATE|TIME_MINUTES|TIME_SECONDS));
  //======================================================================================================================================================================================================================================
  if (time < TimeFirst_Q1 || time >= TimeLast_Q1)              // Äëÿ ýêîíîìèè âðåìåíè íà öèêëàõ, ïðè âûáðàííîì âðåìåíè ñî çíà÷åíèåì ìåíüøåì âðåìåíè íà÷àëà èñòîðèè èëè áîëüøåì òåêóùåãî êâàðòàëà. 
   {
    if (exact == true) return (-1);                            // Åñëè ïåðåêëþ÷àòåëü ðàçðåøàåò, òî âîçâðàùàåì -1 â ñëó÷àå îòñóòñòâèÿ áàðà.
    else                                                       // Åñëè ïåðåêëþ÷àòåëü çàïðåùàåò, òî âîçâðàùàåì áëèæàéøèé ïî õîäó öèêëà (ïðåäûäóùèé) áàð.
     {
      if (time < TimeFirst_Q1) return (iBars_Q1 (symbol) - 1); // Åñëè çàäàííîå çíà÷åíèå âðåìåíè äëÿ ïîèñêà ìåíüøå âðåìåíè íà÷àëà èñòîðèè, ñ÷èòàåì êîëè÷åñòâî áàðîâ.
      if (time > TimeLast_Q1) return (0);                      // Åñëè çàäàííîå çíà÷åíèå âðåìåíè äëÿ ïîèñêà áîëüøå âðåìåíè êîíöà èñòîðèè, âîçðàùàåì ïîñëåäíèé áàð.
     }
   }
  else                                                               // Åñëè çàäàííîå çíà÷åíèå âðåìåíè ñîîòâåòñòâóåò ñóùåñòâóþùåé èñòîðèè.
   {// Âðåìÿ çàêðûòèÿ íóëåâîãî áàðà ÒÔ Q1.
    iTimeQ1_0 = iTime (symbol, PERIOD_MN1, 0);                       // Âðåìÿ îòêðûòèÿ ïåðâîãî â èñòîðèè ìåñÿ÷íîãî áàðà.
    if (MathMod (TimeYear (TimeFirst_Q1), 4) == 0) LeapYear = true;  // Åñëè ãîä âèñîêîñíûé.
    else LeapYear = false;                                           // Åñëè ãîä íå âèñîêîñíûé.
    NumberMonth = TimeMonth (iTimeQ1_0);                             // Íîìåð ìåñÿöà.
    AmountBar = 3 - MathMod (NumberMonth, 3);                        // Êîëè÷åñòâî äîáàâëÿåìûõ áàðîâ â ïåðâîì êâàðòàëüíîì áàðå.
    // Âðåìÿ çàêðûòèÿ íóëåâîãî áàðà ÒÔ Q1. Ïðîèçâîäèì ïðèáàâëåíèå âðåìåíè.
    for (i = NumberMonth; i <= (NumberMonth + AmountBar); i++) iTimeQ1_0 += ArSecondsInMonth[LeapYear][i - 1];
    // Ðàñ÷¸ò ãîäà íà âèñîêîñíîñòü. Íà÷àëüíûå óñëîâèÿ.
    if (MathMod (TimeYear (TimeLast_Q1), 4) == 0) LeapYear = true;   // Åñëè ãîä âèñîêîñíûé.
    else LeapYear = false;                                           // Åñëè ãîä íå âèñîêîñíûé.
    for (i = 0, ShiftQ1 = -1; i < iBarsMN1; i++) // Öèêë ïî ìåñÿ÷íûì áàðàì. Íà÷àëî ñ íóëåâîãî áàðà.
     {
      iTimeMN1 = iTime (symbol, PERIOD_MN1, i);  // Âðåìÿ îòêðûòèÿ òåêóùåãî ìåñÿ÷íîãî áàðà.
      // Âîçâðàùàåì íîìåð áëèæàéøåãî áàðà â ñëó÷àå îòñóòñòâèÿ áàðà. Åñëè çàäàííîå âðåìÿ áîëüøå âðåìåíè îòêðûòèÿ òåêóùåãî áàðà MN1.
      if (i > 0) // Íà ïåðâîé èòåðàöèè íå ïðîâåðÿì ñìåíó ãîäà.
       {// Åñëè ñìåíèëñÿ ãîä, èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ âî âñåõ êâàðòàëàõ. Ìîæåò ïðèãîäèòüñÿ ïðè îòñóòñòâèè áàðîâ âíóòðè ãîäà è íåñêîëüêèõ ëåò ïîäðÿä (äûðû â èñòîðèè).
        if (MathMod (TimeYear (iTimeMN1), TimeYear (iTime (symbol, PERIOD_MN1, i - 1))) != 0)
         {
          Switch_Q1 = true; // Èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ ïåðâîãî êâàðòàëà.
          Switch_Q2 = true; // Èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ âòîðîãî êâàðòàëà.
          Switch_Q3 = true; // Èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ òðåòüåãî êâàðòàëà.
          Switch_Q4 = true; // Èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ ÷åòâ¸ðòîãî êâàðòàëà.
          // Ðàñ÷¸ò ãîäà íà âèñîêîñíîñòü.
          if (MathMod (TimeYear (iTimeMN1), 4) == 0) LeapYear = true; // Åñëè ãîä âèñîêîñíûé.
          else LeapYear = false;                                      // Åñëè ãîä íå âèñîêîñíûé.
         }
       }
      // Ïåðåêëþ÷àåì ïî íîìåðàì ìåñÿöåâ.
      NumberMonth = TimeMonth (iTimeMN1); // Íîìåð ìåñÿöà.
      switch (NumberMonth)
       {//----Ìåñÿöà 4-ãî êâàðòàëà.--------------------------------------------------------------------------------------
        case 12:
        case 11:
        case 10:
         {
          Switch_Q3 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 3-ãî êâàðòàëà.
          Switch_Q2 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 2-ãî êâàðòàëà.
          Switch_Q1 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 1-ãî êâàðòàëà.
          if (Switch_Q4 == true)  // Åñëè ñ÷¸ò÷èê ðàçðåø¸í.
           {
            ShiftQ1++;            // Ñ÷èòàåì êâàðòàëüíûé áàð.
            Switch_Q4 = false;    // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
            break;                // Âûõîäèì èç ïåðåêëþ÷àòåëÿ.
           }
          else continue;          // Ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
         }
        //----Ìåñÿöà 3-ãî êâàðòàëà.--------------------------------------------------------------------------------------
        case 9:
        case 8:
        case 7:
         {
          Switch_Q4 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 4-ãî êâàðòàëà.
          Switch_Q2 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 2-ãî êâàðòàëà.
          Switch_Q1 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 1-ãî êâàðòàëà.
          if (Switch_Q3 == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í.
           {
            ShiftQ1++;           // Ñ÷èòàåì êâàðòàëüíûé áàð.
            Switch_Q3 = false;   // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
            break;               // Âûõîäèì èç ïåðåêëþ÷àòåëÿ.
           }
          else continue;         // Ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
         }
        //----Ìåñÿöà 2-ãî êâàðòàëà.--------------------------------------------------------------------------------------
        case 6:
        case 5:
        case 4:
         {
          Switch_Q4 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 4-ãî êâàðòàëà.
          Switch_Q3 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 3-ãî êâàðòàëà.
          Switch_Q1 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 1-ãî êâàðòàëà.
          if (Switch_Q2 == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í.
           {
            ShiftQ1++;           // Ñ÷èòàåì êâàðòàëüíûé áàð.
            Switch_Q2 = false;   // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
            break;               // Âûõîäèì èç ïåðåêëþ÷àòåëÿ.
           }
          else continue;         // Ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
         }
        //----Ìåñÿöà 1-ãî êâàðòàëà.--------------------------------------------------------------------------------------
        case 3:
        case 2:
        case 1:
         {
          Switch_Q4 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 4-ãî êâàðòàëà.
          Switch_Q3 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 3-ãî êâàðòàëà.
          Switch_Q2 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 2-ãî êâàðòàëà.
          if (Switch_Q1 == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í.
           {
            ShiftQ1++;           // Ñ÷èòàåì êâàðòàëüíûé áàð.
            Switch_Q1 = false;   // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
            break;               // Âûõîäèì èç ïåðåêëþ÷àòåëÿ.
           }
          else continue;         // Ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
         }
       }
      // Åñëè ïåðåêëþ÷àòåëü ðàçðåøàåò, òî ïðîèçâîäèì ïîèñê âðåìåíè â ïðåäïîëàãàåìîé "äûðå" èñòîðèè.
      if (exact == true)
       {// Ðàñ÷¸ò âðåìåíè çàêðûòèÿ òåêóùåãî êâàðòàëüíîãî áàðà.
        iTimeQ1_1 = iTimeMN1;                         // Âðåìÿ îòêðûòèÿ ïîñëåäíåãî â êâàðòàëå ìåñÿ÷íîãî áàðà.
        // Âû÷èñëÿåì êîëè÷åñòâî äîáàâëÿåìûõ áàðîâ â êâàðòàëüíîì áàðå.
        AmountBar = MathMod (NumberMonth, 3);         // Åñëè áàð ïîñëåäíèé â êâàðòàëå, òî êîëè÷åñòâî äîáàâëÿåìûõ áàðîâ ðàâíî íóëþ.
        if (AmountBar > 0) AmountBar = 3 - AmountBar; // Åñëè áàð íå ïîñëåäíèé â êâàðòàëå, ïðîäîëæàåì âû÷èñëþòü.
        // Ïðîèçâîäèì ïðèáàâëåíèå âðåìåíè äëÿ ðàñ÷¸òà âðåìÿ çàêðûòèÿ òåêóùåãî áàðà íà Q1.
        for (j = NumberMonth; j <= (NumberMonth + AmountBar); j++) iTimeQ1_1 += ArSecondsInMonth[LeapYear][j - 1];
        // Ïðîâåðÿåì íà "äûðó" â èñòîðèè.
        if (iTimeQ1_1 < time && time < iTimeQ1_0) return (-1); // Âîçâðàùàåì -1 â ñëó÷àå îòñóòñòâèÿ áàðà.
       }
      // Ðàñ÷¸ò âðåìåíè îòêðûòèÿ òåêóùåãî êâàðòàëüíîãî áàðà.
      iTimeQ1_0 = iTimeMN1;                 // Âðåìÿ îòêðûòèÿ ïåðâîãî â èñòîðèè ìåñÿ÷íîãî áàðà.
      // Âû÷èñëÿåì êîëè÷åñòâî äîáàâëÿåìûõ áàðîâ â êâàðòàëüíîì áàðå.
      AmountBar = MathMod (NumberMonth, 3); // Íîìåð ìåñÿ÷íîãî áàðà â êâàðòàëå.
      if (AmountBar == 0) AmountBar = 2;    // Åñëè áàð ïîñëåäíèé â êâàðòàëå, òî êîëè÷åñòâî äîáàâëÿåìûõ áàðîâ ðàâíî äâóì.
      else AmountBar = AmountBar - 1;       // Åñëè áàð íå ïîñëåäíèé â êâàðòàëå, ïðîäîëæàåì âû÷èñëþòü.
      // Ïðîèçâîäèì âû÷èòàíèå âðåìåíè äëÿ ðàñ÷¸òà âðåìåíè îòêðûòèÿ òåêóùåãî áàðà íà Q1.
      for (j = (NumberMonth - AmountBar); j < NumberMonth; j++) iTimeQ1_0 -= ArSecondsInMonth[LeapYear][j - 1];
      if (time >= iTimeQ1_0) return (ShiftQ1);  // Âîçâðàùàåì íîìåð òåêóùåãî áàðà íà Q1.
     }
   }
 }
//ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
// 3. Âðåìÿ îòêðûòèÿ ïî íîìåðó áàðà â ÒÔ Q1.
datetime iTime_Q1 (string symbol, // Ñèìâîëüíîå èìÿ èíñòðóìåíòà
                   int    shift)  // Íîìåð áàðà.
 {
  bool     Switch_Q1 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà êâàðòàëüíûõ áàðîâ äëÿ ïåðâîãî êâàðòàëà.
  bool     Switch_Q2 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà êâàðòàëüíûõ áàðîâ äëÿ âòîðîãî êâàðòàëà.
  bool     Switch_Q3 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà êâàðòàëüíûõ áàðîâ äëÿ òðåòüåãî êâàðòàëà.
  bool     Switch_Q4 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà êâàðòàëüíûõ áàðîâ äëÿ ÷åòâ¸ðòîãî êâàðòàëà.
  datetime iTimeMN1;         // Âðåìÿ îòêðûòèÿ ìåñÿ÷íîãî áàðà.
  datetime iTimeQ1;          // Âîçâðàùàåìîå çíà÷åíèå.
  int      AmountBar;        // Êîëè÷åñòâî äîáàâëÿåìûõ áàðîâ â ïåðâîì èëè ïîñëåäíåì êâàðòàëüíûõ áàðàõ.
  int      i, j;
  int      iBarsMN1 = iBars (symbol, PERIOD_MN1); // Êîëè÷åñòâî áàðîâ â ÒÔ MN1 òåêóùåãî èíñòðóìåíòà.
  int      iBarsQ1 = iBars_Q1 (symbol);           // Êîëè÷åñòâî áàðîâ â ÒÔ Q1.
  int      LeapYear;                              // Âèñîêîñíîñòü ãîäà.
  int      NumberMonth;                           // Íîìåð ìåñÿöà.
  int      ShiftQ1;                               // Òåêóùèé íîìåð áàðà ÒÔ Q1.
  //----
  if (0 > shift || shift >= iBarsQ1) return (0); // Âîçâðàùàåì íîëü â ñëó÷àå îøèáêè.
  else                                           // Åñëè íîìåð áàðà íàõîäèòñÿ â ïðåäåëàõ èñòîðèè, èùåì åãî.
   {// Ðàñ÷¸ò ãîäà íà âèñîêîñíîñòü. Çàäà¸ì íà÷àëüíîå çíà÷åíèå.
    if (MathMod (TimeYear (MarketInfo (symbol, MODE_TIME)), 4) == 0) LeapYear = true; // Åñëè ãîä âèñîêîñíûé.
    else LeapYear = false;                                                            // Åñëè ãîä íå âèñîêîñíûé.
    for (i = 0, ShiftQ1 = -1; i < iBarsMN1; i++) // Öèêë ïî íîìåðàì ìåñÿ÷íûõ áàðîâ.
     {
      iTimeMN1 = iTime (symbol, PERIOD_MN1, i);  // Âðåìÿ îòêðûòèÿ ìåñÿ÷íîãî áàðà.
      if (i > 0) // Íà ïåðâîé èòåðàöèè íå ïðîâåðÿì ñìåíó ãîäà.
       {// Åñëè ñìåíèëñÿ ãîä, èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ âî âñåõ êâàðòàëàõ. Ìîæåò ïðèãîäèòüñÿ ïðè îòñóòñòâèè áàðîâ âíóòðè ãîäà è íåñêîëüêèõ ëåò ïîäðÿä (äûðû â èñòîðèè).
        if (MathMod (TimeYear (iTimeMN1), TimeYear (iTime (symbol, PERIOD_MN1, i - 1))) != 0)
         {
          Switch_Q1 = true; // Èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ ïåðâîãî êâàðòàëà.
          Switch_Q2 = true; // Èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ âòîðîãî êâàðòàëà.
          Switch_Q3 = true; // Èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ òðåòüåãî êâàðòàëà.
          Switch_Q4 = true; // Èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ ÷åòâ¸ðòîãî êâàðòàëà.
          // Ðàñ÷¸ò ãîäà íà âèñîêîñíîñòü.
          if (MathMod (TimeYear (iTimeMN1), 4) == 0) LeapYear = true; // Åñëè ãîä âèñîêîñíûé.
          else LeapYear = false;                                      // Åñëè ãîä íå âèñîêîñíûé.
         }
       }
      // Ïåðåêëþ÷àåì ïî íîìåðàì ìåñÿöåâ.
      NumberMonth = TimeMonth (iTimeMN1); // Íîìåð ìåñÿöà.
      switch (NumberMonth)
       {//----Ìåñÿöà 4-ãî êâàðòàëà.-----------------------------------------------------------------------------------------
        case 12:
        case 11:
        case 10:
         {
          Switch_Q3 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 3-ãî êâàðòàëà.
          Switch_Q2 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 2-ãî êâàðòàëà.
          Switch_Q1 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 1-ãî êâàðòàëà.
          if (Switch_Q4 == true)  // Åñëè ñ÷¸ò÷èê ðàçðåø¸í.
           {
            ShiftQ1++;            // Ñ÷èòàåì êâàðòàëüíûé áàð.
            Switch_Q4 = false;    // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
            break;                // Âûõîäèì èç ïåðåêëþ÷àòåëÿ.
           }
          else continue;          // Ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
         }
        //----Ìåñÿöà 3-ãî êâàðòàëà.-----------------------------------------------------------------------------------------
        case 9:
        case 8:
        case 7:
         {
          Switch_Q4 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 4-ãî êâàðòàëà.
          Switch_Q2 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 2-ãî êâàðòàëà.
          Switch_Q1 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 1-ãî êâàðòàëà.
          if (Switch_Q3 == true)  // Åñëè ñ÷¸ò÷èê ðàçðåø¸í.
           {
            ShiftQ1++;            // Ñ÷èòàåì êâàðòàëüíûé áàð.
            Switch_Q3 = false;    // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
            break;                // Âûõîäèì èç ïåðåêëþ÷àòåëÿ.
           }
          else continue;          // Ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
         }
        //----Ìåñÿöà 2-ãî êâàðòàëà.-----------------------------------------------------------------------------------------
        case 6:
        case 5:
        case 4:
         {
          Switch_Q4 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 4-ãî êâàðòàëà.
          Switch_Q3 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 3-ãî êâàðòàëà.
          Switch_Q1 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 1-ãî êâàðòàëà.
          if (Switch_Q2 == true)  // Åñëè ñ÷¸ò÷èê ðàçðåø¸í.
           {
            ShiftQ1++;            // Ñ÷èòàåì êâàðòàëüíûé áàð.
            Switch_Q2 = false;    // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
            break;                // Âûõîäèì èç ïåðåêëþ÷àòåëÿ.
           }
          else continue;          // Ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
         }
        //----Ìåñÿöà 1-ãî êâàðòàëà.-----------------------------------------------------------------------------------------
        case 3:
        case 2:
        case 1:
         {
          Switch_Q4 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 4-ãî êâàðòàëà.
          Switch_Q3 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 3-ãî êâàðòàëà.
          Switch_Q2 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 2-ãî êâàðòàëà.
          if (Switch_Q1 == true)  // Åñëè ñ÷¸ò÷èê ðàçðåø¸í.
           {
            ShiftQ1++;            // Ñ÷èòàåì êâàðòàëüíûé áàð.
            Switch_Q1 = false;    // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
            break;                // Âûõîäèì èç ïåðåêëþ÷àòåëÿ.
           }
          else continue;          // Ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
         }
       }
      // Åñëè íàøëè íóæíûé áàð.
      if (shift == ShiftQ1)
       {// Ðàñ÷¸ò âðåìåíè îòêðûòèÿ íàéäåííîãî êâàðòàëüíîãî áàðà.
        iTimeQ1 = iTimeMN1;                   // Âðåìÿ îòêðûòèÿ ïîñëåäíåãî â êâàðòàëå ìåñÿ÷íîãî áàðà.
        // Âû÷èñëÿåì êîëè÷åñòâî äîáàâëÿåìûõ áàðîâ â êâàðòàëüíîì áàðå.
        AmountBar = MathMod (NumberMonth, 3); // Íîìåð ìåñÿ÷íîãî áàðà â êâàðòàëå.
        if (AmountBar == 0) AmountBar = 2;    // Åñëè áàð ïîñëåäíèé â êâàðòàëå, òî êîëè÷åñòâî äîáàâëÿåìûõ áàðîâ ðàâíî äâóì.
        else AmountBar = AmountBar - 1;       // Åñëè áàð íå ïîñëåäíèé â êâàðòàëå, ïðîäîëæàåì âû÷èñëþòü.
        // Ïðîèçâîäèì âû÷èòàíèå âðåìåíè.
        for (j = (NumberMonth - AmountBar); j < NumberMonth; j++) iTimeQ1 -= ArSecondsInMonth[LeapYear][j - 1]; // Âðåìÿ îòêðûòèÿ òåêóùåãî áàðà íà Q1.
//        Comment ("NumberMonth = ", NumberMonth, "\nShiftQ1 = ", ShiftQ1, "\niTimeQ1 = ", TimeToStr (iTimeQ1, TIME_DATE|TIME_MINUTES|TIME_SECONDS));
//        Sleep (5000);
        return (iTimeQ1);                     // Âîçâðàùàåì âðåìÿ îòêðûòèÿ êâàðòàëüíîãî áàðà.
       }
     }
   }
 }
//ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
// 4. Öåíà îòêðûòèÿ âûáðàííîãî áàðà â ÒÔ Q1.
double iOpen_Q1 (string symbol, // Ñèìâîëüíîå èìÿ èíñòðóìåíòà.
                 int    shift)  // Íîìåð áàðà.
 {
  bool     Switch_Q1 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà êâàðòàëüíûõ áàðîâ äëÿ ïåðâîãî êâàðòàëà.
  bool     Switch_Q2 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà êâàðòàëüíûõ áàðîâ äëÿ âòîðîãî êâàðòàëà.
  bool     Switch_Q3 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà êâàðòàëüíûõ áàðîâ äëÿ òðåòüåãî êâàðòàëà.
  bool     Switch_Q4 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà êâàðòàëüíûõ áàðîâ äëÿ ÷åòâ¸ðòîãî êâàðòàëà.
  datetime iTimeMN1;         // Âðåìÿ îòêðûòèÿ ìåñÿ÷íîãî áàðà.
  int      i, j, k;
  int      iBarsMN1 = iBars (symbol, PERIOD_MN1); // Êîëè÷åñòâî áàðîâ â ÒÔ MN1 òåêóùåãî èíñòðóìåíòà.
  int      iBarsQ1 = iBars_Q1 (symbol);           // Êîëè÷åñòâî áàðîâ â ÒÔ Q1.
  int      FirstMonth;                            // Íîìåð ïåðâîãî ìåñÿöà êâàðòàëà.
  int      ShiftQ1;                               // Òåêóùèé íîìåð áàðà ÒÔ Q1.
  //----
  if (0 > shift || shift >= iBarsQ1) return (0); // Âîçâðàùàåì íîëü â ñëó÷àå îøèáêè.
  else                                           // Åñëè íîìåð áàðà íàõîäèòñÿ â ïðåäåëàõ èñòîðèè, èùåì åãî.
   {
    for (i = 0, ShiftQ1 = -1; i < iBarsMN1; i++) // Öèêë ïî íîìåðàì ìåñÿ÷íûõ áàðîâ.
     {
      iTimeMN1 = iTime (symbol, PERIOD_MN1, i);  // Âðåìÿ îòêðûòèÿ ìåñÿ÷íîãî áàðà.
      if (i > 0) // Íà ïåðâîé èòåðàöèè íå ïðîâåðÿì ñìåíó ãîäà.
       {// Åñëè ñìåíèëñÿ ãîä, èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ âî âñåõ êâàðòàëàõ. Ìîæåò ïðèãîäèòüñÿ ïðè îòñóòñòâèè áàðîâ âíóòðè ãîäà è íåñêîëüêèõ ëåò ïîäðÿä (äûðû â èñòîðèè).
        if (MathMod (TimeYear (iTimeMN1), TimeYear (iTime (symbol, PERIOD_MN1, i - 1))) != 0)
         {
          Switch_Q1 = true; // Èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ ïåðâîãî êâàðòàëà.
          Switch_Q2 = true; // Èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ âòîðîãî êâàðòàëà.
          Switch_Q3 = true; // Èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ òðåòüåãî êâàðòàëà.
          Switch_Q4 = true; // Èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ ÷åòâ¸ðòîãî êâàðòàëà.
         }
       }
      // Ïåðåêëþ÷àåì ïî íîìåðàì ìåñÿöåâ.
      switch (TimeMonth (iTimeMN1))
       {//----Ìåñÿöà 4-ãî êâàðòàëà.-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
        case 12:
        case 11:
        case 10:
         {
          Switch_Q3 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 3-ãî êâàðòàëà.
          Switch_Q2 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 2-ãî êâàðòàëà.
          Switch_Q1 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 1-ãî êâàðòàëà.
          if (Switch_Q4 == true)  // Åñëè ñ÷¸ò÷èê ðàçðåø¸í.
           {
            ShiftQ1++;            // Ñ÷èòàåì êâàðòàëüíûé áàð.
            FirstMonth = 10;      // Íîìåð ïåðâîãî ìåñÿöà êâàðòàëà.
            Switch_Q4 = false;    // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
            break;                // Âûõîäèì èç ïåðåêëþ÷àòåëÿ.
           }
          else continue;          // Ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
         }
        //----Ìåñÿöà 3-ãî êâàðòàëà.-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
        case 9:
        case 8:
        case 7:
         {
          Switch_Q4 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 4-ãî êâàðòàëà.
          Switch_Q2 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 2-ãî êâàðòàëà.
          Switch_Q1 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 1-ãî êâàðòàëà.
          if (Switch_Q3 == true)  // Åñëè ñ÷¸ò÷èê ðàçðåø¸í.
           {
            ShiftQ1++;            // Ñ÷èòàåì êâàðòàëüíûé áàð.
            FirstMonth = 7;       // Íîìåð ïåðâîãî ìåñÿöà êâàðòàëà.
            Switch_Q3 = false;    // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
            break;                // Âûõîäèì èç ïåðåêëþ÷àòåëÿ.
           }
          else continue;          // Ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
         }
        //----Ìåñÿöà 2-ãî êâàðòàëà.-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
        case 6:
        case 5:
        case 4:
         {
          Switch_Q4 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 4-ãî êâàðòàëà.
          Switch_Q3 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 3-ãî êâàðòàëà.
          Switch_Q1 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 1-ãî êâàðòàëà.
          if (Switch_Q2 == true)  // Åñëè ñ÷¸ò÷èê ðàçðåø¸í.
           {
            ShiftQ1++;            // Ñ÷èòàåì êâàðòàëüíûé áàð.
            FirstMonth = 4;       // Íîìåð ïåðâîãî ìåñÿöà êâàðòàëà.
            Switch_Q2 = false;    // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
            break;                // Âûõîäèì èç ïåðåêëþ÷àòåëÿ.
           }
          else continue;          // Ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
         }
        //----Ìåñÿöà 1-ãî êâàðòàëà.-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
        case 3:
        case 2:
        case 1:
         {
          Switch_Q4 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 4-ãî êâàðòàëà.
          Switch_Q3 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 3-ãî êâàðòàëà.
          Switch_Q2 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 2-ãî êâàðòàëà.
          if (Switch_Q1 == true)  // Åñëè ñ÷¸ò÷èê ðàçðåø¸í.
           {
            ShiftQ1++;            // Ñ÷èòàåì êâàðòàëüíûé áàð.
            FirstMonth = 1;       // Íîìåð ïåðâîãî ìåñÿöà êâàðòàëà.
            Switch_Q1 = false;    // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
            break;                // Âûõîäèì èç ïåðåêëþ÷àòåëÿ.
           }
          else continue;          // Ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
         }
        //--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
       }
      if (shift == ShiftQ1) // Åñëè íàøëè íóæíûé áàð.
       {
        for (i++, k = TimeYear (iTimeMN1);; i++) // Èùèì ïåðâûé ìåñÿ÷íûé áàð êâàðòàëüíîãî áàðà.
         {
          iTimeMN1 = iTime (symbol, PERIOD_MN1, i);    // Âðåìÿ îòêðûòèÿ ìåñÿ÷íîãî áàðà.
          // Äëÿ ïåðâîãî áàðà ïåðâîãî êâàòàëà îñîáûå óñëîâèÿ ïðîâåðêè íà÷àëà.
          if (FirstMonth == 1) {if (TimeMonth (iTimeMN1) > 3 || TimeYear (iTimeMN1) != k) return (iOpen (symbol, PERIOD_MN1, i - 1));} // Îñòàíàâëèâàåì öèêë, åñëè ñëåäóþùèé áàð íàõîäèòñÿ â äðóãîì êâàðòàëå èëè ãîäó.
          else {if (TimeMonth (iTimeMN1) < FirstMonth || TimeYear (iTimeMN1) != k) return (iOpen (symbol, PERIOD_MN1, i - 1));}        // Îñòàíàâëèâàåì öèêë, åñëè ñëåäóþùèé áàð íàõîäèòñÿ â äðóãîì êâàðòàëå èëè ãîäó.
         }
       }
     }
   }
 }
//ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
// 5. Ìàêñèìàëüíàÿ öåíà âûáðàííîãî áàðà â ÒÔ Q1.
double iHigh_Q1 (string symbol, // Ñèìâîëüíîå èìÿ èíñòðóìåíòà.
                 int    shift)  // Íîìåð áàðà.
 {
  bool     Switch_Q1 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà êâàðòàëüíûõ áàðîâ äëÿ ïåðâîãî êâàðòàëà.
  bool     Switch_Q2 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà êâàðòàëüíûõ áàðîâ äëÿ âòîðîãî êâàðòàëà.
  bool     Switch_Q3 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà êâàðòàëüíûõ áàðîâ äëÿ òðåòüåãî êâàðòàëà.
  bool     Switch_Q4 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà êâàðòàëüíûõ áàðîâ äëÿ ÷åòâ¸ðòîãî êâàðòàëà.
  datetime iTimeMN1;         // Âðåìÿ îòêðûòèÿ ìåñÿ÷íîãî áàðà.
  datetime iTimeMN1_1;       // Âðåìÿ îòêðûòèÿ ñëåäóþùåãî ìåñÿ÷íîãî áàðà.
  int      i, l;
  int      iBarsMN1 = iBars (symbol, PERIOD_MN1); // Êîëè÷åñòâî áàðîâ â ÒÔ MN1 òåêóùåãî èíñòðóìåíòà.
  int      iBarsQ1 = iBars_Q1 (symbol);           // Êîëè÷åñòâî áàðîâ â ÒÔ Q1.
  int      FirstMonth;                            // Íîìåð ïåðâîãî ìåñÿöà êâàðòàëà.
  int      ShiftQ1;                               // Òåêóùèé íîìåð áàðà ÒÔ Q1.
  // Ìàññèâû.
  double   ArHighMN1[3]; // Ìàññèâ ñ ìàêñèìàëüíûìè öåíàìè ìåñÿ÷íûõ áàðîâ â êâàðòàëüíîì áàðå.
  //----
  if (0 > shift || shift >= iBarsQ1) return (0); // Âîçâðàùàåì íîëü â ñëó÷àå îøèáêè.
  else                                           // Åñëè íîìåð áàðà íàõîäèòñÿ â ïðåäåëàõ èñòîðèè, èùåì åãî.
   {
    for (i = 0, ShiftQ1 = -1; i < iBarsMN1; i++) // Öèêë ïî íîìåðàì ìåñÿ÷íûõ áàðîâ.
     {
      iTimeMN1 = iTime (symbol, PERIOD_MN1, i);  // Âðåìÿ îòêðûòèÿ ìåñÿ÷íîãî áàðà.
      if (i > 0) // Íà ïåðâîé èòåðàöèè íå ïðîâåðÿì ñìåíó ãîäà.
       {// Åñëè ñìåíèëñÿ ãîä, èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ âî âñåõ êâàðòàëàõ. Ìîæåò ïðèãîäèòüñÿ ïðè îòñóòñòâèè áàðîâ âíóòðè ãîäà è íåñêîëüêèõ ëåò ïîäðÿä (äûðû â èñòîðèè).
        if (MathMod (TimeYear (iTimeMN1), TimeYear (iTime (symbol, PERIOD_MN1, i - 1))) != 0)
         {
          Switch_Q1 = true; // Èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ ïåðâîãî êâàðòàëà.
          Switch_Q2 = true; // Èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ âòîðîãî êâàðòàëà.
          Switch_Q3 = true; // Èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ òðåòüåãî êâàðòàëà.
          Switch_Q4 = true; // Èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ ÷åòâ¸ðòîãî êâàðòàëà.
         }
       }
      // Ïåðåêëþ÷àåì ïî íîìåðàì ìåñÿöåâ.
      switch (TimeMonth (iTimeMN1))
       {//----Ìåñÿöà 4-ãî êâàðòàëà.-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
        case 12:
        case 11:
        case 10:
         {
          Switch_Q3 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 3-ãî êâàðòàëà.
          Switch_Q2 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 2-ãî êâàðòàëà.
          Switch_Q1 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 1-ãî êâàðòàëà.
          if (Switch_Q4 == true)  // Åñëè ñ÷¸ò÷èê ðàçðåø¸í.
           {
            ShiftQ1++;            // Ñ÷èòàåì êâàðòàëüíûé áàð.
            FirstMonth = 10;      // Íîìåð ïåðâîãî ìåñÿöà êâàðòàëà.
            Switch_Q4 = false;    // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
            break;                // Âûõîäèì èç ïåðåêëþ÷àòåëÿ.
           }
          else continue;          // Ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
         }
        //----Ìåñÿöà 3-ãî êâàðòàëà.-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
        case 9:
        case 8:
        case 7:
         {
          Switch_Q4 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 4-ãî êâàðòàëà.
          Switch_Q2 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 2-ãî êâàðòàëà.
          Switch_Q1 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 1-ãî êâàðòàëà.
          if (Switch_Q3 == true)  // Åñëè ñ÷¸ò÷èê ðàçðåø¸í.
           {
            ShiftQ1++;            // Ñ÷èòàåì êâàðòàëüíûé áàð.
            FirstMonth = 7;       // Íîìåð ïåðâîãî ìåñÿöà êâàðòàëà.
            Switch_Q3 = false;    // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
            break;                // Âûõîäèì èç ïåðåêëþ÷àòåëÿ.
           }
          else continue;          // Ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
         }
        //----Ìåñÿöà 2-ãî êâàðòàëà.-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
        case 6:
        case 5:
        case 4:
         {
          Switch_Q4 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 4-ãî êâàðòàëà.
          Switch_Q3 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 3-ãî êâàðòàëà.
          Switch_Q1 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 1-ãî êâàðòàëà.
          if (Switch_Q2 == true)  // Åñëè ñ÷¸ò÷èê ðàçðåø¸í.
           {
            ShiftQ1++;            // Ñ÷èòàåì êâàðòàëüíûé áàð.
            FirstMonth = 4;       // Íîìåð ïåðâîãî ìåñÿöà êâàðòàëà.
            Switch_Q2 = false;    // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
            break;                // Âûõîäèì èç ïåðåêëþ÷àòåëÿ.
           }
          else continue;          // Ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
         }
        //----Ìåñÿöà 1-ãî êâàðòàëà.-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
        case 3:
        case 2:
        case 1:
         {
          Switch_Q4 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 4-ãî êâàðòàëà.
          Switch_Q3 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 3-ãî êâàðòàëà.
          Switch_Q2 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 2-ãî êâàðòàëà.
          if (Switch_Q1 == true)  // Åñëè ñ÷¸ò÷èê ðàçðåø¸í.
           {
            ShiftQ1++;            // Ñ÷èòàåì êâàðòàëüíûé áàð.
            FirstMonth = 1;       // Íîìåð ïåðâîãî ìåñÿöà êâàðòàëà.
            Switch_Q1 = false;    // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
            break;                // Âûõîäèì èç ïåðåêëþ÷àòåëÿ.
           }
          else continue;          // Ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
         }
        //--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
       }
      if (shift == ShiftQ1) // Åñëè íàøëè íóæíûé áàð.
       {
        for (l = 0; l < 3; i++, l++)  // Èùèì ïåðâûé ìåñÿ÷íûé áàð êâàðòàëüíîãî áàðà.
         {
          iTimeMN1 = iTime (symbol, PERIOD_MN1, i);             // Âðåìÿ îòêðûòèÿ òóêóùåãî ìåñÿ÷íîãî áàðà.
          iTimeMN1_1 = iTime (symbol, PERIOD_MN1, i + 1);       // Âðåìÿ îòêðûòèÿ ñëåäóþùåãî ìåñÿ÷íîãî áàðà.
          ArHighMN1[l] = iHigh (symbol, PERIOD_MN1, i);         // Ñêëàäûâàåì ìàêñèìàëüíûå öåíû ìåñÿ÷íûûõ áàðîâ â òåõíè÷åñêèé ìàññèâ.
          // Äëÿ ïåðâîãî áàðà ïåðâîãî êâàòàëà îñîáûå óñëîâèÿ ïðîâåðêè íà÷àëà.
          if (FirstMonth == 1) {if (TimeMonth (iTimeMN1_1) > 3 || TimeYear (iTimeMN1) != TimeYear (iTimeMN1_1)) break;} // Îñòàíàâëèâàåì öèêë, åñëè ñëåäóþùèé áàð íàõîäèòñÿ â äðóãîì êâàðòàëå èëè ãîäó.
          else {if (TimeMonth (iTimeMN1_1) < FirstMonth || TimeYear (iTimeMN1) != TimeYear (iTimeMN1_1)) break;}        // Îñòàíàâëèâàåì öèêë, åñëè ñëåäóþùèé áàð íàõîäèòñÿ â äðóãîì êâàðòàëå èëè ãîäó.
         }
        return (ArHighMN1[ArrayMaximum (ArHighMN1, l + 1, 0)]); // Âîçâðàùàåì ìàêñèìàëüíóþ öåíó êâàðòàëüíîãî áàðà.
       }
     }
   }
 }
//ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
// 6. Ìèíèìàëüíàÿ öåíà âûáðàííîãî áàðà â ÒÔ Q1.
double iLow_Q1 (string symbol, // Ââàëþòíàÿ ïàðà.
                int    shift)  // Íîìåð áàðà.
 {
  bool     Switch_Q1 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà êâàðòàëüíûõ áàðîâ äëÿ ïåðâîãî êâàðòàëà.
  bool     Switch_Q2 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà êâàðòàëüíûõ áàðîâ äëÿ âòîðîãî êâàðòàëà.
  bool     Switch_Q3 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà êâàðòàëüíûõ áàðîâ äëÿ òðåòüåãî êâàðòàëà.
  bool     Switch_Q4 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà êâàðòàëüíûõ áàðîâ äëÿ ÷åòâ¸ðòîãî êâàðòàëà.
  datetime iTimeMN1;         // Âðåìÿ îòêðûòèÿ ìåñÿ÷íîãî áàðà.
  datetime iTimeMN1_1;       // Âðåìÿ îòêðûòèÿ ñëåäóþùåãî ìåñÿ÷íîãî áàðà.
  int      i, l;
  int      iBarsMN1 = iBars (symbol, PERIOD_MN1); // Êîëè÷åñòâî áàðîâ â ÒÔ MN1 òåêóùåãî èíñòðóìåíòà.
  int      iBarsQ1 = iBars_Q1 (symbol);           // Êîëè÷åñòâî áàðîâ â ÒÔ Q1.
  int      FirstMonth;                            // Íîìåð ïåðâîãî ìåñÿöà êâàðòàëà.
  int      ShiftQ1;                               // Òåêóùèé íîìåð áàðà ÒÔ Q1.
  // Ìàññèâû.
  double   ArLowMN1[3]; // Ìàññèâ ñ ìàêñèìàëüíûìè öåíàìè ìåñÿ÷íûõ áàðîâ â êâàðòàëüíîì áàðå.
  //----
  if (0 > shift || shift >= iBarsQ1) return (0); // Âîçâðàùàåì íîëü â ñëó÷àå îøèáêè.
  else                                           // Åñëè íîìåð áàðà íàõîäèòñÿ â ïðåäåëàõ èñòîðèè, èùåì åãî.
   {
    for (i = 0, ShiftQ1 = -1; i < iBarsMN1; i++) // Öèêë ïî íîìåðàì ìåñÿ÷íûõ áàðîâ.
     {
      iTimeMN1 = iTime (symbol, PERIOD_MN1, i);  // Âðåìÿ îòêðûòèÿ ìåñÿ÷íîãî áàðà.
      if (i > 0) // Íà ïåðâîé èòåðàöèè íå ïðîâåðÿì ñìåíó ãîäà.
       {// Åñëè ñìåíèëñÿ ãîä, èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ âî âñåõ êâàðòàëàõ. Ìîæåò ïðèãîäèòüñÿ ïðè îòñóòñòâèè áàðîâ âíóòðè ãîäà è íåñêîëüêèõ ëåò ïîäðÿä (äûðû â èñòîðèè).
        if (MathMod (TimeYear (iTimeMN1), TimeYear (iTime (symbol, PERIOD_MN1, i - 1))) != 0)
         {
          Switch_Q1 = true; // Èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ ïåðâîãî êâàðòàëà.
          Switch_Q2 = true; // Èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ âòîðîãî êâàðòàëà.
          Switch_Q3 = true; // Èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ òðåòüåãî êâàðòàëà.
          Switch_Q4 = true; // Èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ ÷åòâ¸ðòîãî êâàðòàëà.
         }
       }
      // Ïåðåêëþ÷àåì ïî íîìåðàì ìåñÿöåâ.
      switch (TimeMonth (iTimeMN1))
       {//----Ìåñÿöà 4-ãî êâàðòàëà.-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
        case 12:
        case 11:
        case 10:
         {
          Switch_Q3 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 3-ãî êâàðòàëà.
          Switch_Q2 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 2-ãî êâàðòàëà.
          Switch_Q1 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 1-ãî êâàðòàëà.
          if (Switch_Q4 == true)  // Åñëè ñ÷¸ò÷èê ðàçðåø¸í.
           {
            ShiftQ1++;            // Ñ÷èòàåì êâàðòàëüíûé áàð.
            FirstMonth = 10;      // Íîìåð ïåðâîãî ìåñÿöà êâàðòàëà.
            Switch_Q4 = false;    // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
            break;                // Âûõîäèì èç ïåðåêëþ÷àòåëÿ.
           }
          else continue;          // Ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
         }
        //----Ìåñÿöà 3-ãî êâàðòàëà.-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
        case 9:
        case 8:
        case 7:
         {
          Switch_Q4 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 4-ãî êâàðòàëà.
          Switch_Q2 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 2-ãî êâàðòàëà.
          Switch_Q1 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 1-ãî êâàðòàëà.
          if (Switch_Q3 == true)  // Åñëè ñ÷¸ò÷èê ðàçðåø¸í.
           {
            ShiftQ1++;            // Ñ÷èòàåì êâàðòàëüíûé áàð.
            FirstMonth = 7;       // Íîìåð ïåðâîãî ìåñÿöà êâàðòàëà.
            Switch_Q3 = false;    // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
            break;                // Âûõîäèì èç ïåðåêëþ÷àòåëÿ.
           }
          else continue;          // Ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
         }
        //----Ìåñÿöà 2-ãî êâàðòàëà.-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
        case 6:
        case 5:
        case 4:
         {
          Switch_Q4 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 4-ãî êâàðòàëà.
          Switch_Q3 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 3-ãî êâàðòàëà.
          Switch_Q1 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 1-ãî êâàðòàëà.
          if (Switch_Q2 == true)  // Åñëè ñ÷¸ò÷èê ðàçðåø¸í.
           {
            ShiftQ1++;            // Ñ÷èòàåì êâàðòàëüíûé áàð.
            FirstMonth = 4;       // Íîìåð ïåðâîãî ìåñÿöà êâàðòàëà.
            Switch_Q2 = false;    // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
            break;                // Âûõîäèì èç ïåðåêëþ÷àòåëÿ.
           }
          else continue;          // Ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
         }
        //----Ìåñÿöà 1-ãî êâàðòàëà.-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
        case 3:
        case 2:
        case 1:
         {
          Switch_Q4 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 4-ãî êâàðòàëà.
          Switch_Q3 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 3-ãî êâàðòàëà.
          Switch_Q2 = true;       // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 2-ãî êâàðòàëà.
          if (Switch_Q1 == true)  // Åñëè ñ÷¸ò÷èê ðàçðåø¸í.
           {
            ShiftQ1++;            // Ñ÷èòàåì êâàðòàëüíûé áàð.
            FirstMonth = 1;       // Íîìåð ïåðâîãî ìåñÿöà êâàðòàëà.
            Switch_Q1 = false;    // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
            break;                // Âûõîäèì èç ïåðåêëþ÷àòåëÿ.
           }
          else continue;          // Ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
         }
        //--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
       }
      if (shift == ShiftQ1) // Åñëè íàøëè íóæíûé áàð.
       {
        for (l = 0; l < 3; i++, l++) // Èùèì ïåðâûé ìåñÿ÷íûé áàð êâàðòàëüíîãî áàðà.
         {
          iTimeMN1 = iTime (symbol, PERIOD_MN1, i);            // Âðåìÿ îòêðûòèÿ ìåñÿ÷íîãî áàðà.
          iTimeMN1_1 = iTime (symbol, PERIOD_MN1, i + 1);      // Âðåìÿ îòêðûòèÿ ñëåäóþùåãî ìåñÿ÷íîãî áàðà.
          ArLowMN1[l] = iLow (symbol, PERIOD_MN1, i);          // Ñêëàäûâàåì ìèíèìàëüíûå öåíû ìåñÿ÷íûûõ áàðîâ â òåõíè÷åñêèé ìàññèâ.
          // Äëÿ ïåðâîãî áàðà ïåðâîãî êâàòàëà îñîáûå óñëîâèÿ ïðîâåðêè íà÷àëà.
          if (FirstMonth == 1) {if (TimeMonth (iTimeMN1_1) > 3 || TimeYear (iTimeMN1) != TimeYear (iTimeMN1_1)) break;} // Îñòàíàâëèâàåì öèêë, åñëè ñëåäóþùèé áàð íàõîäèòñÿ â äðóãîì êâàðòàëå èëè ãîäó.
          else {if (TimeMonth (iTimeMN1_1) < FirstMonth || TimeYear (iTimeMN1) != TimeYear (iTimeMN1_1)) break;}        // Îñòàíàâëèâàåì öèêë, åñëè ñëåäóþùèé áàð íàõîäèòñÿ â äðóãîì êâàðòàëå èëè ãîäó.
         }
        return (ArLowMN1[ArrayMinimum (ArLowMN1, l + 1, 0)]);  // Âîçâðàùàåì ìèíèìàëüíóþ öåíó êâàðòàëüíîãî áàðà.
       }
     }
   }
 }
//ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
// 7. Öåíà çàêðûòèÿ âûáðàííîãî áàðà â ÒÔ Q1.
double iClose_Q1 (string symbol, // Ñèìâîëüíîå èìÿ èíñòðóìåíòà.
                  int    shift)  // Íîìåð áàðà.
 {
  bool     Switch_Q1 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà êâàðòàëüíûõ áàðîâ äëÿ ïåðâîãî êâàðòàëà.
  bool     Switch_Q2 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà êâàðòàëüíûõ áàðîâ äëÿ âòîðîãî êâàðòàëà.
  bool     Switch_Q3 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà êâàðòàëüíûõ áàðîâ äëÿ òðåòüåãî êâàðòàëà.
  bool     Switch_Q4 = true; // Âûêëþ÷àòåëü ñ÷¸ò÷èêà êâàðòàëüíûõ áàðîâ äëÿ ÷åòâ¸ðòîãî êâàðòàëà.
  datetime iTimeMN1;         // Âðåìÿ îòêðûòèÿ ìåñÿ÷íîãî áàðà.
  int      i;
  int      iBarsMN1 = iBars (symbol, PERIOD_MN1); // Êîëè÷åñòâî áàðîâ â ÒÔ MN1 òåêóùåãî èíñòðóìåíòà.
  int      iBarsQ1 = iBars_Q1 (symbol);           // Êîëè÷åñòâî áàðîâ èëè íîìåð áàðà â ÒÔ Q1.
  // Ïðîâåðêà íà íåêîððåêòíîå çíà÷åíèå íàìåðà áàðà.
  if (0 > shift || shift >= iBarsQ1) return (0); // Âîçâðàùàåì íîëü â ñëó÷àå îøèáêè.
  else                                           // Åñëè íîìåð áàðà íàõîäèòñÿ â ïðåäåëàõ èñòîðèè, èùåì åãî.
   {
    iBarsMN1 = iBars (symbol, PERIOD_MN1);       // Êîëè÷åñòâî áàðîâ â ÒÔ MN1 òåêóùåãî èíñòðóìåíòà.
    for (i = 0, iBarsQ1 = -1; i < iBarsMN1; i++)
     {
      iTimeMN1 = iTime (symbol, PERIOD_MN1, i);  // Âðåìÿ îòêðûòèÿ ìåñÿ÷íîãî áàðà.
      if (i > 0) // Íà ïåðâîé èòåðàöèè íå ïðîâåðÿì ñìåíó ãîäà.
       {// Åñëè ñìåíèëñÿ ãîä, èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ âî âñåõ êâàðòàëàõ. Ìîæåò ïðèãîäèòüñÿ ïðè îòñóòñòâèè áàðîâ âíóòðè ãîäà è íåñêîëüêèõ ëåò ïîäðÿä (äûðû â èñòîðèè).
        if (MathMod (TimeYear (iTimeMN1), TimeYear (iTime (symbol, PERIOD_MN1, i - 1))) != 0)
         {
          Switch_Q1 = true; // Èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ ïåðâîãî êâàðòàëà.
          Switch_Q2 = true; // Èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ âòîðîãî êâàðòàëà.
          Switch_Q3 = true; // Èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ òðåòüåãî êâàðòàëà.
          Switch_Q4 = true; // Èíèöèàëèçèðóåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ ÷åòâ¸ðòîãî êâàðòàëà.
         }
       }
      // Ïåðåêëþ÷àåì ïî íîìåðàì ìåñÿöåâ.
      switch (TimeMonth (iTimeMN1))
       {//----Ìåñÿöà 4-ãî êâàðòàëà.-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
        case 12:
        case 11:
        case 10:
         {
          Switch_Q3 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 3-ãî êâàðòàëà.
          Switch_Q2 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 2-ãî êâàðòàëà.
          Switch_Q1 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 1-ãî êâàðòàëà.
          if (Switch_Q4 == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í.
           {
            iBarsQ1++;           // Ñ÷èòàåì êâàðòàëüíûé áàð.
            Switch_Q4 = false;   // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
            break;               // Âûõîäèì èç ïåðåêëþ÷àòåëÿ.
           }
          else continue;         // Ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
         }
        //----Ìåñÿöà 3-ãî êâàðòàëà.-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
        case 9:
        case 8:
        case 7:
         {
          Switch_Q4 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 4-ãî êâàðòàëà.
          Switch_Q2 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 2-ãî êâàðòàëà.
          Switch_Q1 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 1-ãî êâàðòàëà.
          if (Switch_Q3 == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í.
           {
            iBarsQ1++;           // Ñ÷èòàåì êâàðòàëüíûé áàð.
            Switch_Q3 = false;   // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
            break;               // Âûõîäèì èç ïåðåêëþ÷àòåëÿ.
           }
          else continue;         // Ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
         }
        //----Ìåñÿöà 2-ãî êâàðòàëà.-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
        case 6:
        case 5:
        case 4:
         {
          Switch_Q4 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 4-ãî êâàðòàëà.
          Switch_Q3 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 3-ãî êâàðòàëà.
          Switch_Q1 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 1-ãî êâàðòàëà.
          if (Switch_Q2 == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í.
           {
            iBarsQ1++;           // Ñ÷èòàåì êâàðòàëüíûé áàð.
            Switch_Q2 = false;   // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
            break;               // Âûõîäèì èç ïåðåêëþ÷àòåëÿ.
           }
          else continue;         // Ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
         }
        //----Ìåñÿöà 1-ãî êâàðòàëà.-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
        case 3:
        case 2:
        case 1:
         {
          Switch_Q4 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 4-ãî êâàðòàëà.
          Switch_Q3 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 3-ãî êâàðòàëà.
          Switch_Q2 = true;      // Ðàçðåøàåì ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ äëÿ 2-ãî êâàðòàëà.
          if (Switch_Q1 == true) // Åñëè ñ÷¸ò÷èê ðàçðåø¸í.
           {
            iBarsQ1++;           // Ñ÷èòàåì êâàðòàëüíûé áàð.
            Switch_Q1 = false;   // Çàïðåùàåì ñ÷èòàòü áàðû â ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
            break;               // Âûõîäèì èç ïåðåêëþ÷àòåëÿ.
           }
          else continue;         // Ñ÷¸ò÷èê êâàðòàëüíûõ áàðîâ çàïðåù¸í, ïåðåõîäèì ê ñëåäóþùåé èòåðàöèè ïî ìåñÿ÷íûì áàðàì.
         }
        //--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
       }
      if (shift == iBarsQ1) return (iClose (symbol, PERIOD_MN1, i)); // Åñëè íàøëè íóæíûé áàð. Âîçâðàùàåì âðåìÿ çàêðûòèÿ ìåñÿ÷íîãî áàðà.
     }
   }
 }
//ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
// 8. Âîçâðàùàåò òåêóùèé íîìåð øåñòè÷àñîâîãî áàðà â ñóòêàõ ïîñëåäíåãî èçâåñòíîãî ñåðâåðíîãî âðåìåíè.
int Quarter()
 {
  switch (Month())
   {
    case  1:
    case  2:
    case  3: return (1);
    case  4:
    case  5:
    case  6: return (2);
    case  7:
    case  8:
    case  9: return (3);
    case 10:
    case 11:
    case 12: return (4);
   }
 }
//ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
// 9. Âîçâðàùàåò íîìåð êâàðòàëà äëÿ óêàçàííîãî âðåìåíè.
int TimeQuarter (datetime time) // Äàòà, ïðåäñòàâëåííàÿ â âèäå êîëè÷åñòâà ñåêóíä, ïðîøåäøèõ ïîñëå 00:00 1 ÿíâàðÿ 1970 ãîäà.
 {
  switch (TimeMonth (time))
   {
    case  1:
    case  2:
    case  3: return (1);
    case  4:
    case  5:
    case  6: return (2);
    case  7:
    case  8:
    case  9: return (3);
    case 10:
    case 11:
    case 12: return (4);
   }
 }
//ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ

Comments