ZH_StandardFunctionsTfYR1.lib





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



Sample





Analysis



Market Information Used:



Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: