ZZ_Standard_Functions_TF_YR1_Lib





//+-----------------------------------------------------------------------------------------------+
//|                                                           ZZ_Standard_Functions_TF_YR1_Lib.mq4|
//|                                                           Copyright © Zhunko                  |
//|01.07.2007                                                 ÌF ZHUNKO zhunko@mail.ru            |
//+-----------------------------------------------------------------------------------------------+
//| Íàáîð ôóíêöèé äëÿ ÒÔ YR1.                                                                     |
//|1.Êîëè÷åñòâî áàðîâ â ÒÔ YR1.                                                                   |
//|  int iBars_YR1 (string Exchange);                                                             |
//|  iBarsYR (âàëþòíàÿ ïàðà);                                                                     |
//|2.Íîìåð áàðà ïî âðåìåíè â ÒÔ YR1.                                                              |
//|  int iBarShift_YR1 (string Exchange, datetime time, bool exact);                              |
//|  iBarShiftYR (âàëþòíàÿ ïàðà, çíà÷åíèå âðåìåíè äëÿ ïîèñêà, âîçâðàùàåìîå çíà÷åíèå åñëè áàð íå   |
//|               íàéäåí (FALSE - iBarShift âîçâðàùàåò áëèæàéøèé/TRUE - iBarShift âîçâðàùàåò -1));|
//|3.Âðåìÿ îòêðûòèÿ ïî íîìåðó áàðà â ÒÔ YR1.                                                      |
//|  datetime iTime_YR1 (string Exchange, int shift);                                             | 
//|  iCloseYR (âàëþòíàÿ ïàðà, íîìåð áàðà);                                                        |
//|4.Öåíà îòêðûòèÿ.                                                                               |
//|  double iOpen_YR1 (string Exchange, int shift);                                               | 
//|  iOpenYR (âàëþòíàÿ ïàðà, íîìåð áàðà);                                                         |
//|5.Ìàêñèìàëüíàÿ öåíà âûáðàííîãî áàðà â ÒÔ YR1.                                                  |
//|  double iHigh_YR1 (string Exchange, int shift);                                               |
//|  iHighYR (âàëþòíàÿ ïàðà, íîìåð áàðà);                                                         |
//|6.Ìèíèìàëüíàÿ öåíà âûáðàííîãî áàðà â ÒÔ YR1.                                                   |
//|  double iLow_YR1 (string Exchange, int shift);                                                |
//|  iLowYR (âàëþòíàÿ ïàðà, íîìåð áàðà);                                                          |
//|7.Öåíà çàêðûòèÿ.                                                                               |
//|  double iClose_YR1 (string Exchange, int shift);                                              |
//|  iCloseYR (âàëþòíàÿ ïàðà, íîìåð áàðà);                                                        |
//+-----------------------------------------------------------------------------------------------+
#property copyright "Copyright © 2006 Zhunko"
#property link      "zhunko@mail.ru"
#property library
//ææææÑòàíäàðäíûå áèáëèîòå÷íûå ôóíêöèè äëÿ ÒÔ YR1.æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
//====Êîëè÷åñòâî áàðîâ â ÒÔ YR1.===================================================================================================================================================
int iBars_YR1 (string Exchange) // iBarsYR (âàëþòíàÿ ïàðà);
 {
  int iBarsMN1;     // Êîëè÷åñòâî áàðîâ â ÒÔ MN1 òåêóùåãî èíñòðóìåíòà.
  int iBarsYR1 = 0; // Êîëè÷åñòâî áàðîâ â ÒÔ YR1.
  //----
  iBarsMN1 = iBars (Exchange, PERIOD_MN1); // Êîëè÷åñòâî áàðîâ â ÒÔ MN1 òåêóùåãî èíñòðóìåíòà.
  for (int i = 0; i < iBarsMN1; i++) if (MathMod (TimeYear (1.0 * iTime (Exchange, PERIOD_MN1, i)), 1.0 * TimeYear (iTime (Exchange, PERIOD_MN1, i + 1))) != 0) iBarsYR1++;
  return (iBarsYR1);
 }
//=================================================================================================================================================================================
//====Íîìåð áàðà ïî âðåìåíè â ÒÔ YR1.==============================================================================================================================================
int iBarShift_YR1 (string Exchange, datetime time, bool exact) // iBarShiftYR (âàëþòíàÿ ïàðà, çíà÷åíèå âðåìåíè äëÿ ïîèñêà, âîçâðàùàåìîå çíà÷åíèå åñëè áàð íå íàéäåí (FALSE - iBarShift âîçâðàùàåò áëèæàéøèé/TRUE - iBarShift âîçâðàùàåò -1);
 {
  bool     Coincidence = false;
  datetime iTimeMN1_0;   // Âðåìÿ îòêðûòèÿ òåêóùåãî áàðà íà MN1.
  datetime iTimeMN1_1;   // Âðåìÿ îòêðûòèÿ ïðåäûäóùåãî áàðà íà MN1.
  int      i;
  int      iBarsYR1 = 0; // Êîëè÷åñòâî áàðîâ â ÒÔ YR1.
  int      iBarsMN1;     // Êîëè÷åñòâî áàðîâ â ÒÔ MN1 òåêóùåãî èíñòðóìåíòà.
  int      FirstYear;    // Ïåðâûé ãîä íà÷àëà èñòîðèè ïàðû.  
  int      ShiftYR1 = 0; // Âîçâðàùàåìîå çíà÷åíèå.
  //----
  iBarsMN1 = iBars (Exchange, PERIOD_MN1);                       // Êîëè÷åñòâî áàðîâ â ÒÔ MN1 òåêóùåãî èíñòðóìåíòà.
  FirstYear = StrToInteger (StringSubstr (TimeToStr (iTime (Exchange, PERIOD_MN1, iBarsMN1 - 1), TIME_DATE), 0, 4)); // Ïåðâûé ãîä íà÷àëà èñòîðèè ïàðû.
  if (TimeYear (time) < FirstYear || Year() < TimeYear (time))   // Äëÿ ýêîíîìèè âðåìåíè íà öèêëàõ, ïðè âûáðàííîì âðåìåíè ñî çíà÷åíèåì ìåíüøåì âðåìåíè íà÷àëà èñòîðèè èëè áîëüøåì òåêóùåãî ãîäà. 
   {
    if (exact == false)                                          // Åñëè ïåðåêëþ÷àòåëü çàïðåùàåò, òî âîçâðàùàåì íîìåð áëèæàéøåãî áàðà (íîìåð ïåðâîãî áàðà â èñòîðèè).
     {
      if (TimeYear (time) < FirstYear) ShiftYR1 = Year() - FirstYear; // Åñëè âõîäíîå âðåìÿ ìåíüøå, ÷åì âðåìÿ íà÷àëî èñòîðèè, òî âîçâðàùàåìì íîìåð áàðà íà÷àëà èñòîðèè.
      if (TimeYear (time) > Year()) ShiftYR1 = 0;                // Åñëè âõîäíîå âðåìÿ áîëüøå, ÷åì âðåìÿ êîíöà èñòîðèè, òî âîçâðàùàåìì íîìåð áàðà êîíöà èñòîðèè.
     }
    else ShiftYR1 = -1;                                          // Åñëè ïåðåêëþ÷àòåëü ðàçðåøàåò, òî âîçâðàùàåì -1 â ñëó÷àå îòñóòñòâèÿ áàðà.
   }
  else                                                           // Åñëè âõîäíîå âðåìÿ áîëüøå èëè ðàâíî âðåìåíè íà÷àëà èñòîðèè, òî ïðîâåðÿåì âõîäíîå âðåìÿ íà ñîâïàäåíèå ñ ìåñÿ÷íîé èñòîðèåé.
   {
    if (exact == true)                                           // Åñëè ïåðåêëþ÷àòåëü ðàçðåøàåò, òî âîçâðàùàåì -1 â ñëó÷àå îòñóòñòâèÿ áàðà.
     {
      for (i = 0; i < iBarsMN1; i++)
       {
        if (MathMod (TimeYear (1.0 * iTime (Exchange, PERIOD_MN1, i)), 1.0 * TimeYear (iTime (Exchange, PERIOD_MN1, i + 1))) != 0) ShiftYR1++;
        if (TimeYear (time) == TimeYear (iTime (Exchange, PERIOD_MN1, i))) // Âûõîäèì èç öèêëà ïî óñëîâèþ ðàâåíñòâà âõîäíîãî ïàðàìåòðà íàéäåíîìó â öèêëå.
         {
          Coincidence = true;
          break;
         }
       }
      if (Coincidence == false) ShiftYR1 = -1;                   // Åñëè ñîâïàäåíèÿ â öèêëå íå ïðîèçîøëî, âîçâðàùàåì -1.
     }
    else                                                         // Åñëè ïåðåêëþ÷àòåëü çàïðåùàåò, òî âîçâðàùàåì áëèæàéøèé ïî õîäó öèêëà (ïðåäûäóùèé) áàð.
     {
      // Êîëè÷åñòâî áàðîâ â ÒÔ YR1.
      for (i = 0; i < iBarsMN1; i++) if (MathMod (TimeYear (1.0 * iTime (Exchange, PERIOD_MN1, i)), 1.0 * TimeYear (iTime (Exchange, PERIOD_MN1, i + 1))) != 0) iBarsYR1++;
      ShiftYR1 = -1;
      for (i = 0; i < iBarsMN1; i++)
       {
        iTimeMN1_0 = iTime (Exchange, PERIOD_MN1, i);
        iTimeMN1_1 = iTime (Exchange, PERIOD_MN1, i + 1);
        if (MathMod (TimeYear (1.0 * iTimeMN1_0), 1.0 * TimeYear (iTimeMN1_1)) != 0)
         {
          ShiftYR1++;
          if (ShiftYR1 == 0)                                     // Ñïåöèàëüíûå óñëîâèÿ äëÿ ïåðâîãî áàðà â èñòîðèè.
           {
            if (TimeYear (time) == TimeYear (iTimeMN1_0)) break; // Âûõîäèì èç öèêëà ïî óñëîâèþ ðàâåíñòâà âõîäíîãî ïàðàìåòðà íàéäåíîìó â öèêëå.
            else
             {
              if (TimeYear (iTimeMN1_1) < TimeYear (time))       // Íå ïðîâåðÿåì íà ïîñëåäóùèé áàð.
               {
                ShiftYR1++;                                      // Âîçâðàùàåì ïðåäûäóùèé áàð, ñîîòâåòñòâóþùèé ìëàäøåìó ãîäó.
                break;
               }
             }
           }
          if (0 < ShiftYR1 && ShiftYR1 < iBarsYR1)               // Ïðèìåíÿåì îáû÷íûå óñëîâèÿ "âîðîòà" äëÿ íå ïåðâîãî è íå ïîñëåäíåãî ãîäà â èñòîðèè.
           {
            if (TimeYear (time) == TimeYear (iTimeMN1_0)) break; // Âûõîäèì èç öèêëà ïî óñëîâèþ ðàâåíñòâà âõîäíîãî ïàðàìåòðà íàéäåíîìó â öèêëå.
            else                                                 // Åñëè èñêîìûé ãîä íå ðàâåí íàéäåíîìó, òî ïðîâåðÿåì íà îòñóòñòâèå áàðà.
             {
              if (TimeYear (iTimeMN1_1) < TimeYear (time) && TimeYear (time) < TimeYear (iTimeMN1_0))
               {
                ShiftYR1++;                                      // Âîçâðàùàåì ïðåäûäóùèé áàð, ñîîòâåòñòâóþùèé ìëàäøåìó ãîäó.
                break;
               }
             }
           }
          if (ShiftYR1 == iBarsYR1) break;                       // Åñëè áàð ïîñëåäíèé, òî âîçâðàùàåì òåêóùèé áàð, ñîîòâåòñòâóþùèé ìëàäøåìó ãîäó.
         }
       }
     }
   }
  return (ShiftYR1);
 }
//=================================================================================================================================================================================
//====Âðåìÿ îòêðûòèÿ ïî íîìåðó áàðà â ÒÔ YR1.======================================================================================================================================
datetime iTime_YR1 (string Exchange, int shift) // iCloseYR (âàëþòíàÿ ïàðà, íîìåð áàðà);
 {
  datetime TimeYR;        // Âîçâðàùàåìîå çíà÷åíèå.
  int      i;
  int      iBarsYR1;      // Êîëè÷åñòâî áàðîâ â ãîäîâîì ÒÔ.
  int      ShiftYR1 = -1; // Òåêóùèé íîìåð áàðà ÒÔ YR1.
  //----
  int iBarsMN1 = iBars (Exchange, PERIOD_MN1);                                     // Êîëè÷åñòâî áàðîâ â ÒÔ MN1 òåêóùåãî èíñòðóìåíòà.
  // Êîëè÷åñòâî áàðîâ â ÒÔ YR1 òåêóùåãî èíñòðóìåíòà.
  for (i = 0; i < iBarsMN1; i++) if (MathMod (TimeYear (1.0 * iTime (Exchange, PERIOD_MN1, i)), 1.0 * TimeYear (iTime (Exchange, PERIOD_MN1, i + 1))) != 0) iBarsYR1++;
  if (0 > shift || shift > iBarsYR1 - 1) TimeYR = 0;                               // Âîçâðàùàåì íîëü â ñëó÷àå îøèáêè.
  else
   {
    for (i = 0; i < iBarsMN1; i++)
     {
      datetime iTimeMN1_0 = iTime (Exchange, PERIOD_MN1, i);                       // Âðåìÿ îòêðûòèÿ òåêóùåãî áàðà íà MN1.
      datetime iTimeMN1_1 = iTime (Exchange, PERIOD_MN1, i + 1);                   // Âðåìÿ îòêðûòèÿ ïðåäûäóùåãî áàðà íà MN1.
      if (MathMod (TimeYear (1.0 * iTimeMN1_0), 1.0 * TimeYear (iTimeMN1_1)) != 0) // Åñëè îñòàòîê íå ðàâåí íóëþ, òî áàðû íàõîäÿòñÿ â ðàçíûõ ãîäàõ.
       {
        ShiftYR1++;
        if (shift == ShiftYR1)
         {
          TimeYR = iTimeMN1_0;
          break;
         }
       }
     }
   }
  return (TimeYR);
 }
//=================================================================================================================================================================================
//====Öåíà îòêðûòèÿ.===============================================================================================================================================================
double iOpen_YR1 (string Exchange, int shift) // iOpenYR (âàëþòíàÿ ïàðà, íîìåð áàðà);
 {
  double   OpenYR;        // Âîçâðàùàåìîå çíà÷åíèå.
  int      i;
  int      iBarsYR1;      // Êîëè÷åñòâî áàðîâ â ãîäîâîì ÒÔ.
  int      ShiftYR1 = -1; // Òåêóùèé íîìåð áàðà ÒÔ YR1.
  //----
  int iBarsMN1 = iBars (Exchange, PERIOD_MN1);                                     // Êîëè÷åñòâî áàðîâ â ÒÔ MN1 òåêóùåãî èíñòðóìåíòà.
  // Êîëè÷åñòâî áàðîâ â ÒÔ YR1 òåêóùåãî èíñòðóìåíòà.
  for (i = 0; i < iBarsMN1; i++) if (MathMod (TimeYear (1.0 * iTime (Exchange, PERIOD_MN1, i)), 1.0 * TimeYear (iTime (Exchange, PERIOD_MN1, i + 1))) != 0) iBarsYR1++;
  if (0 > shift || shift > iBarsYR1 - 1) OpenYR = 0;                               // Âîçâðàùàåì íîëü â ñëó÷àå îøèáêè.
  else
   {
    for (i = 0; i < iBarsMN1; i++)
     {
      datetime iTimeMN1_0 = iTime (Exchange, PERIOD_MN1, i);                       // Âðåìÿ îòêðûòèÿ òåêóùåãî áàðà íà MN1.
      datetime iTimeMN1_1 = iTime (Exchange, PERIOD_MN1, i + 1);                   // Âðåìÿ îòêðûòèÿ ïðåäûäóùåãî áàðà íà MN1.
      if (MathMod (TimeYear (1.0 * iTimeMN1_0), 1.0 * TimeYear (iTimeMN1_1)) != 0) // Åñëè îñòàòîê íå ðàâåí íóëþ, òî áàðû íàõîäÿòñÿ â ðàçíûõ ãîäàõ.
       {
        ShiftYR1++;
        if (shift == ShiftYR1) OpenYR = iOpen (Exchange, PERIOD_MN1, i);
       }
     }
   }
  return (OpenYR);
 }
//=================================================================================================================================================================================
//====Ìàêñèìàëüíàÿ öåíà âûáðàííîãî áàðà â ÒÔ YR1.==================================================================================================================================
double iHigh_YR1 (string Exchange, int shift) // iHighYR (âàëþòíàÿ ïàðà, íîìåð áàðà);
 {
  bool     Break = false;
  datetime iTimeMN1_0;
  datetime iTimeMN1_1;
  double   ArrayHighMN1[12]; // Òåõíè÷åñêèé ìàññèâ.
  double   HighYR;           // Âîçâðàùàåìîå çíà÷åíèå.
  int      count = -1;       // Êîëè÷åñòâî ýëåìåíòîâ äëÿ ïîèñêà.
  int      iBarsYR1;         // Êîëè÷åñòâî áàðîâ â ãîäîâîì ÒÔ.
  int      i, j;
  int      ShiftYR1 = 0;     // Òåêóùèé íîìåð áàðà ÒÔ YR1.
  //----
  int iBarsMN1 = iBars (Exchange, PERIOD_MN1);                                             // Êîëè÷åñòâî áàðîâ â ÒÔ MN1 òåêóùåãî èíñòðóìåíòà.
  // Êîëè÷åñòâî áàðîâ â ÒÔ YR1 òåêóùåãî èíñòðóìåíòà.
  for (i = 0; i < iBarsMN1; i++) if (MathMod (TimeYear (1.0 * iTime (Exchange, PERIOD_MN1, i)), 1.0 * TimeYear (iTime (Exchange, PERIOD_MN1, i + 1))) != 0) iBarsYR1++;
  if (0 > shift || shift > iBarsYR1 - 1) HighYR = 0;                                       // Âîçâðàùàåì íîëü â ñëó÷àå îøèáêè.
  else
   {
    if (shift == 0)                                                                        // Åñëè áàð íóëåâîé, òî ñ÷èòàåì óïîðîù¸ííûì ñïîñîáîì.
     {
      for (j = 0; j < 12; j++)
       {
        count++;                                                                           // Ñ÷¸ò÷èê çíà÷èìûõ áàðîâ.
        ArrayHighMN1[count] = iHigh (Exchange, PERIOD_MN1, j);
        iTimeMN1_0 = iTime (Exchange, PERIOD_MN1, j);                                      // Âðåìÿ îòêðûòèÿ òåêóùåãî áàðà íà MN1.
        iTimeMN1_1 = iTime (Exchange, PERIOD_MN1, j + 1);                                  // Âðåìÿ îòêðûòèÿ ïðåäûäóùåãî áàðà íà MN1.
        if (MathMod (TimeYear (1.0 * iTimeMN1_0), 1.0 * TimeYear (iTimeMN1_1)) != 0) break;// Åñëè îñòàòîê íå ðàâåí íóëþ, òî áàðû íàõîäÿòñÿ â ðàçíûõ ãîäàõ. Îñòàíàâëèâàåì ïîèñê.
       }
     }
    if (0 < shift || shift < iBarsMN1 - 1)
     {  
      for (i = 0; i < iBarsMN1; i++)
       {
        iTimeMN1_0 = iTime (Exchange, PERIOD_MN1, i);                                      // Âðåìÿ îòêðûòèÿ òåêóùåãî áàðà íà MN1.
        iTimeMN1_1 = iTime (Exchange, PERIOD_MN1, i + 1);                                  // Âðåìÿ îòêðûòèÿ ïðåäûäóùåãî áàðà íà MN1.
        if (MathMod (TimeYear (1.0 * iTimeMN1_0), 1.0 * TimeYear (iTimeMN1_1)) != 0)       // Åñëè îñòàòîê íå ðàâåí íóëþ, òî áàðû íàõîäÿòñÿ â ðàçíûõ ãîäàõ. Îñòàíàâëèâàåì ïîèñê.
         {
          ShiftYR1++;
          if (shift == ShiftYR1)
           {
            for (j = i + 1; j < i + 13; j++)
             {
              count++;                                                                     // Ñ÷¸ò÷èê çíà÷èìûõ áàðîâ.
              ArrayHighMN1[count] = iHigh (Exchange, PERIOD_MN1, j);
              iTimeMN1_0 = iTime (Exchange, PERIOD_MN1, j);                                // Âðåìÿ îòêðûòèÿ òåêóùåãî áàðà íà MN1.
              iTimeMN1_1 = iTime (Exchange, PERIOD_MN1, j + 1);                            // Âðåìÿ îòêðûòèÿ ïðåäûäóùåãî áàðà íà MN1.
              if (MathMod (TimeYear (1.0 * iTimeMN1_0), 1.0 * TimeYear (iTimeMN1_1)) != 0) // Åñëè îñòàòîê íå ðàâåí íóëþ, òî áàðû íàõîäÿòñÿ â ðàçíûõ ãîäàõ. Îñòàíàâëèâàåì ïîèñê.
               {
                Break = true;
                break;
               }
             }
            if (Break == true) break;
           }
         }
       }
     }
    HighYR = ArrayHighMN1[ArrayMaximum (ArrayHighMN1, count + 1, 0)];                      // Èùèì ìàêñèìàëüíîå çíà÷åíèå     
   }
//  Comment ("ArrayHighMN1[", count + 1, "] = {", ArrayHighMN1[0], ", ", ArrayHighMN1[1], ", ", ArrayHighMN1[2], ", ", ArrayHighMN1[3], ", ", ArrayHighMN1[4], ", ", ArrayHighMN1[5], ", ", ArrayHighMN1[6], ", ", ArrayHighMN1[7], ", ", ArrayHighMN1[8], ", ", ArrayHighMN1[9], ", ", ArrayHighMN1[10], ", ", ArrayHighMN1[11], "};");
  return (HighYR);
 }
//=================================================================================================================================================================================
//====Ìèíèìàëüíàÿ öåíà âûáðàííîãî áàðà â ÒÔ YR1.===================================================================================================================================
double iLow_YR1 (string Exchange, int shift) // iLowYR (âàëþòíàÿ ïàðà, íîìåð áàðà);
 {
  bool     Break = false;
  datetime iTimeMN1_0;
  datetime iTimeMN1_1;
  double   ArrayLowMN1[12]; // Òåõíè÷åñêèé ìàññèâ.
  double   LowYR;           // Âîçâðàùàåìîå çíà÷åíèå.
  int      count = -1;      // Êîëè÷åñòâî ýëåìåíòîâ äëÿ ïîèñêà.
  int      iBarsYR1;         // Êîëè÷åñòâî áàðîâ â ãîäîâîì ÒÔ.
  int      i, j;
  int      ShiftYR1 = 0;    // Òåêóùèé íîìåð áàðà ÒÔ YR1.
  //----
  int iBarsMN1 = iBars (Exchange, PERIOD_MN1);                                             // Êîëè÷åñòâî áàðîâ â ÒÔ MN1 òåêóùåãî èíñòðóìåíòà.
  // Êîëè÷åñòâî áàðîâ â ÒÔ YR1 òåêóùåãî èíñòðóìåíòà.
  for (i = 0; i < iBarsMN1; i++) if (MathMod (TimeYear (1.0 * iTime (Exchange, PERIOD_MN1, i)), 1.0 * TimeYear (iTime (Exchange, PERIOD_MN1, i + 1))) != 0) iBarsYR1++;
  if (0 > shift || shift > iBarsYR1 - 1) LowYR = 0;                                        // Âîçâðàùàåì íîëü â ñëó÷àå îøèáêè.
  else
   {
    if (shift == 0)                                                                        // Åñëè áàð íóëåâîé, òî ñ÷èòàåì óïîðîù¸ííûì ñïîñîáîì.
     {
      for (j = 0; j < 12; j++)
       {
        count++;                                                                           // Ñ÷¸ò÷èê çíà÷èìûõ áàðîâ.
        ArrayLowMN1[count] = iLow (Exchange, PERIOD_MN1, j);
        iTimeMN1_0 = iTime (Exchange, PERIOD_MN1, j);                                      // Âðåìÿ îòêðûòèÿ òåêóùåãî áàðà íà MN1.
        iTimeMN1_1 = iTime (Exchange, PERIOD_MN1, j + 1);                                  // Âðåìÿ îòêðûòèÿ ïðåäûäóùåãî áàðà íà MN1.
        if (MathMod (TimeYear (1.0 * iTimeMN1_0), 1.0 * TimeYear (iTimeMN1_1)) != 0) break;// Åñëè îñòàòîê íå ðàâåí íóëþ, òî áàðû íàõîäÿòñÿ â ðàçíûõ ãîäàõ. Îñòàíàâëèâàåì ïîèñê.
       }
     }
    if (0 < shift || shift < iBarsMN1 - 1)
     {
      for (i = 0; i < iBarsMN1; i++)
       {
        iTimeMN1_0 = iTime (Exchange, PERIOD_MN1, i);                                      // Âðåìÿ îòêðûòèÿ òåêóùåãî áàðà íà MN1.
        iTimeMN1_1 = iTime (Exchange, PERIOD_MN1, i + 1);                                  // Âðåìÿ îòêðûòèÿ ïðåäûäóùåãî áàðà íà MN1.
        if (MathMod (TimeYear (1.0 * iTimeMN1_0), 1.0 * TimeYear (iTimeMN1_1)) != 0)       // Åñëè îñòàòîê íå ðàâåí íóëþ, òî áàðû íàõîäÿòñÿ â ðàçíûõ ãîäàõ. Îñòàíàâëèâàåì ïîèñê.
         {
          ShiftYR1++;
          if (shift == ShiftYR1)
           {
            for (j = i + 1; j < i + 13; j++)
             {
              count++;                                                                     // Ñ÷¸ò÷èê çíà÷èìûõ áàðîâ.
              ArrayLowMN1[count] = iLow (Exchange, PERIOD_MN1, j);
              iTimeMN1_0 = iTime (Exchange, PERIOD_MN1, j);                                // Âðåìÿ îòêðûòèÿ òåêóùåãî áàðà íà MN1.
              iTimeMN1_1 = iTime (Exchange, PERIOD_MN1, j + 1);                            // Âðåìÿ îòêðûòèÿ ïðåäûäóùåãî áàðà íà MN1.
              if (MathMod (TimeYear (1.0 * iTimeMN1_0), 1.0 * TimeYear (iTimeMN1_1)) != 0) // Åñëè îñòàòîê íå ðàâåí íóëþ, òî áàðû íàõîäÿòñÿ â ðàçíûõ ãîäàõ. Îñòàíàâëèâàåì ïîèñê.
               {
                Break = true;
                break;
               }
             }
            if (Break == true) break;
           }
         }
       }
     }
    LowYR = ArrayLowMN1[ArrayMinimum (ArrayLowMN1, count + 1, 0)];                         // Èùèì ìàêñèìàëüíîå çíà÷åíèå     
   }
//  Comment ("ArrayLowMN1[", count + 1, "] = {", ArrayLowMN1[0], ", ", ArrayLowMN1[1], ", ", ArrayLowMN1[2], ", ", ArrayLowMN1[3], ", ", ArrayLowMN1[4], ", ", ArrayLowMN1[5], ", ", ArrayLowMN1[6], ", ", ArrayLowMN1[7], ", ", ArrayLowMN1[8], ", ", ArrayLowMN1[9], ", ", ArrayLowMN1[10], ", ", ArrayLowMN1[11], "};");
  return (LowYR);
 }
//=================================================================================================================================================================================
//====Öåíà çàêðûòèÿ.===============================================================================================================================================================
double iClose_YR1 (string Exchange, int shift) // iCloseYR (âàëþòíàÿ ïàðà, íîìåð áàðà);
 {
  double CloseYR;      // Âîçâðàùàåìîå çíà÷åíèå.
  int    i;
  int    iBarsYR1;     // Êîëè÷åñòâî áàðîâ â ãîäîâîì ÒÔ.
  int    ShiftYR1 = 0; // Òåêóùèé íîìåð áàðà ÒÔ YR1.
  //----
  int iBarsMN1 = iBars (Exchange, PERIOD_MN1);                                       // Êîëè÷åñòâî áàðîâ â ÒÔ MN1 òåêóùåãî èíñòðóìåíòà.
  // Êîëè÷åñòâî áàðîâ â ÒÔ YR1 òåêóùåãî èíñòðóìåíòà.
  for (i = 0; i < iBarsMN1; i++) if (MathMod (TimeYear (1.0 * iTime (Exchange, PERIOD_MN1, i)), 1.0 * TimeYear (iTime (Exchange, PERIOD_MN1, i + 1))) != 0) iBarsYR1++;
  if (0 > shift || shift > iBarsYR1 - 1) CloseYR = 0;                                // Âîçâðàùàåì íîëü â ñëó÷àå îøèáêè.
  else
   {
    if (shift == 0) CloseYR = iClose (Exchange, PERIOD_MN1, 0);                      // Åñëè áàð íóëåâîé, òî öåíà çàêðûòèÿ ãîäîâîãî áàðà ðàâíà öåíå çàêðûòèÿ ìåñÿ÷íîãî áàðà.
    else                                                                             // Åñëè áàð íå íóëåâîé, èùåì â öèêëå íåñîâïàäåíèÿ ãîäà âðåìåíè îòêðûòèÿ ñîñåäíèõ áàðîâ.
     {
      for (i = 0; i < iBarsMN1; i++)
       {
        datetime iTimeMN1_0 = iTime (Exchange, PERIOD_MN1, i);                       // Âðåìÿ îòêðûòèÿ òåêóùåãî áàðà íà MN1.
        datetime iTimeMN1_1 = iTime (Exchange, PERIOD_MN1, i + 1);                   // Âðåìÿ îòêðûòèÿ ïðåäûäóùåãî áàðà íà MN1.
        if (MathMod (TimeYear (1.0 * iTimeMN1_0), 1.0 * TimeYear (iTimeMN1_1)) != 0) // Åñëè îñòàòîê íå ðàâåí íóëþ, òî áàðû íàõîäÿòñÿ â ðàçíûõ ãîäàõ.
         {
          ShiftYR1++;
          if (shift == ShiftYR1) CloseYR = iClose (Exchange, PERIOD_MN1, i + 1);
         }
       }
     }
   }
  return (CloseYR);
 }
//=================================================================================================================================================================================
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ

//+------------------------------------------------------------------+
//|                                          ZZ_Check TF YR1.mq4     |
//|                                          Copyright © Zhunko      |
//|01.07.2007                                ÌF ZHUNKO zhunko@mail.ru|
//+------------------------------------------------------------------+
//|ÈÍÄÈÊÀÒÎÐ ÄËß ÊÎÍÒÐÎËß ÔÓÍÊÖÈÉ ÄËß ÒÔ YR1 èç áèáëèîòåêè           |
//|"ZZ_Standard_Functions_TF_YR1_Lib.ex4"                            |
//+------------------------------------------------------------------+
/*#property copyright "Copyright © 2006 Zhunko"
#property link      "zhunko@mail.ru"
//----
#property indicator_chart_window
#import "ZZ_Standard_Functions_TF_YR1_Lib.ex4"
// Êîëè÷åñòâî áàðîâ â ÒÔ YR1.
  int iBars_YR1 (string Exchange);                                // iBars_YR (âàëþòíàÿ ïàðà);
// Íîìåð áàðà ïî âðåìåíè â ÒÔ YR1.
  int iBarShift_YR1 (string Exchange, datetime time, bool exact); // iBarShift_YR (âàëþòíàÿ ïàðà, çíà÷åíèå âðåìåíè äëÿ ïîèñêà, âîçâðàùàåìîå çíà÷åíèå åñëè áàð íå íàéäåí (FALSE - iBarShift âîçâðàùàåò áëèæàéøèé/TRUE - iBarShift âîçâðàùàåò -1));|
// Âðåìÿ îòêðûòèÿ ïî íîìåðó áàðà â ÒÔ YR1.
  datetime iTime_YR1 (string Exchange, int shift);                // iTime_YR (âàëþòíàÿ ïàðà, íîìåð áàðà);   
// Öåíà îòêðûòèÿ.
  double iOpen_YR1 (string Exchange, int shift);                  // iOpen_YR (âàëþòíàÿ ïàðà, íîìåð áàðà);
// Ìàêñèìàëüíàÿ öåíà âûáðàííîãî áàðà â ÒÔ YR1.
  double iHigh_YR1 (string Exchange, int shift);                  // iHigh_YR (âàëþòíàÿ ïàðà, íîìåð áàðà);
// Ìèíèìàëüíàÿ öåíà âûáðàííîãî áàðà â ÒÔ YR1.
  double iLow_YR1 (string Exchange, int shift);                   // iLow_YR (âàëþòíàÿ ïàðà, íîìåð áàðà);
// Öåíà çàêðûòèÿ.
  double iClose_YR1 (string Exchange, int shift);                 // iClose_YR (âàëþòíàÿ ïàðà, íîìåð áàðà);
#import
//====
extern int    Number_Bar = 40;
extern string TimeYR1    = "2006.01.01 00:00";
extern bool   Exact      = false;
//====
string ArrayTimfram_str[9] = {"M1", "M5", "M15", "M30", "H1", "H4", "D1", "W1", "MN1"};
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
 {
  int      iBarsYR1 = iBars_YR1 (Symbol());
  int      iBarShiftYR1 = iBarShift_YR1 (Symbol(), StrToTime (TimeYR1), Exact);
  datetime iTimeYR = iTime_YR1 (Symbol(), Number_Bar);
  double   iOpenYR1 = iOpen_YR1 (Symbol(), Number_Bar);
  double   iHighYR1 = iHigh_YR1 (Symbol(), Number_Bar);
  double   iLowYR1 = iLow_YR1 (Symbol(), Number_Bar);
  double   iCloseYR1 = iClose_YR1 (Symbol(), Number_Bar);
  string   TF;
  //----
  if (Period() ==     1) TF = ArrayTimfram_str[0];
  if (Period() ==     5) TF = ArrayTimfram_str[1];
  if (Period() ==    15) TF = ArrayTimfram_str[2];
  if (Period() ==    30) TF = ArrayTimfram_str[3];
  if (Period() ==    60) TF = ArrayTimfram_str[4];
  if (Period() ==   240) TF = ArrayTimfram_str[5];
  if (Period() ==  1440) TF = ArrayTimfram_str[6];
  if (Period() == 10080) TF = ArrayTimfram_str[7];
  if (Period() == 43200) TF = ArrayTimfram_str[8];
  
  Comment ("Èíñòðóìåíò ", Symbol(), " ", TF,
           "\nÊîëè÷åñòâî áàðîâ = ", iBarsYR1,
           "\nÍîìåð áàðà ïî âðåìåíè = ", iBarShiftYR1, " (", TimeYR1, ")",
           "\nÂðåìÿ îòêðûòèÿ ïî íîìåðó áàðà = ", TimeToStr (iTimeYR, TIME_DATE|TIME_MINUTES), " (", Number_Bar, ")",
           "\nÖåíà îòêðûòèÿ = ", iOpenYR1, "(", Number_Bar, ")",
           "\nÌàêñèìàëüíàÿ öåíà = ", iHighYR1, "(", Number_Bar, ")",
           "\nÌèíèìàëüíàÿ öåíà = ", iLowYR1, "(", Number_Bar, ")",
           "\nÖåíà çàêðûòèÿ = ", iCloseYR1, "(", Number_Bar, ")");
//  iHighYR1 = iHigh_YR1 (Symbol(), Number_Bar);
//  iLow_YR1 (Symbol(), Number_Bar);
  return(0);
 }*/
//===================================================================================================================



Sample





Analysis



Market Information Used:



Indicator Curves created:


Indicators Used:



Custom Indicators Used:
ZZ_Standard_Functions_TF_YR1_Lib

Order Management characteristics:

Other Features: