Array out of range in Нужна Помощь - страница 5

 
Ihor Herasko:

Даже не знаю, что еще добавить... В принципе основные примеры дал. Это и есть код. Поэтому спрашивайте, что именно неясно. 

  Приветствую ! Игорь наглядный пример как получить значение . Есть линия  Low_D1_Level найти ближайший бар в истории, значение которого будет меньше чем  Low_D1_Level  

  Если без массива у меня что-то там получалось работа с Структурой , то результат получался тоже что и в прошлом коде. выход за пределы массива.

  Напишите пример , и если не затруднит описание .  

//+------------------------------------------------------------------+
//|                                                   Dark_Level.mq4 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

double Low_D1_Level;

struct BarData
{ 
   datetime time;         // время начала периода 
   double   open;         // цена открытия 
   double   high;         // наивысшая цена за период 
   double   low;          // наименьшая цена за период 
   double   close;        // цена закрытия 
   long     tick_volume;  // тиковый объем 
};
BarData Bar_data_D1[]; // обьявляем массив структуры в памяти 
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{

 return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
 Low_D1_Level   = iLow (_Symbol,PERIOD_D1,1);   // Возвращает значение минимальной цены бара  D1
 
// Bar_data_D1.low [i]; //Минимум свечи
// Bar_data_D1.low [i]= iLow (_Symbol,PERIOD_D1,1);
}
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
One Click Close The script allows users to easily close positions if their profit/loss reaches or exceeds a value specified in pips. Please set slippage value first. Sometimes some positions do not close due to high volatility of the market. Please set larger slippage or restart the script. The free demo version is: ...
 
Dark Kchlyzov:

Тут вроде само по смыслу напрашивается, если Low_D1_Level это уровень предыдущего дня, то Min_D_Level начинаем искать от  Low_D1_Level а она равна i=1  вроде так , или я ошибаюсь ?

Прошу прощения, я не вникал в код, спросил чтобы удостоверится, что Вы это делаете осознано.

Можете сказать, что Вы хотите получить в итоге. Какие-то дневные уровни или что? Глядя на первую строку, постоянно копировать массив в ArrayCopyRates и потом проходить его в цикле - не самый экономный вариант. Можно найти более элегантное решение.

 
Aleksei Stepanenko:

Прошу прощения, я не вникал в код, спросил чтобы удостоверится, что Вы это делаете осознано.

Можете сказать, что Вы хотите получить в итоге. Какие-то дневные уровни или что? Глядя на первую строку, постоянно копировать массив в ArrayCopyRates и потом проходить его в цикле - не самый экономный вариант. Можно найти более элегантное решение.

На бирже уже более 5 лет , этим на данный момент и живу полностью ( Вы это делаете осознано ). Год назад когда понимание о торговли на бирже уже более менее окрепло , 

Было принято решение автоматизировать свои знания в торговли , хочешь сделать хорошо сделай сам .

Вот так осознано и пришел ко мне MQL4 , на данный момент советник 6000 + строк.

вот пример  кода когда расчета лота 1 год назад.

// Примитивно но работало 
//+-------------------------------------------------------------------------+
//                       Функция расчета лота от прибыли                    +                                                   +
//+-------------------------------------------------------------------------+
// double Lots;    
//string lots;      
double FloatingLots()
  {
   double Lots1=1200,Lots2=2200,Lots3=3200,Lots4=4200,Lots5=5200,Lots6=6200,Lots7=7200,Lots8=8200,Lots9=9200,Lots10=10200;
   if(AccountBalance()<=Lots1){Lots=0.1;}
   if(AccountBalance()>=Lots1 && AccountBalance()<=Lots2){Lots=0.2;}
   if(AccountBalance()>=Lots2 && AccountBalance()<=Lots3){Lots=0.3;}
   if(AccountBalance()>=Lots3 && AccountBalance()<=Lots4){Lots=0.4;}
   if(AccountBalance()>=Lots4 && AccountBalance()<=Lots5){Lots=0.5;}
   if(AccountBalance()>=Lots5 && AccountBalance()<=Lots6){Lots=0.6;}
   if(AccountBalance()>=Lots6 && AccountBalance()<=Lots7){Lots=0.7;}
   if(AccountBalance()>=Lots7 && AccountBalance()<=Lots8){Lots=0.8;}
   if(AccountBalance()>=Lots8 && AccountBalance()<=Lots9){Lots=0.9;}
   if(AccountBalance()>=Lots9){Lots=1;}
   return(Lots);
  } 

  А вот та же функция спустя пол года 

//+-------------------------------------------------------------------------+
//                  Функция расчета лота от прибыли  V 1.1                                                        +
//+-------------------------------------------------------------------------+
//double Lots; // переменная для расчёта лота и вывода в кнопке   
double FloatingLots()
{
 double S_lots = 0.1;
 double i;
 for( i = 1000; i <= AccountBalance();i+=1000)
    {
     if(i > (AccountBalance())-1000)
       {
        Lots = S_lots;break;
       }
     else S_lots+=0.1;
    }
 return(S_lots);

А вот собственно причина создания этой темы 

Заметил чисто случайно причем визуально когда начал прогонять советника на больших периодах,  если в цикле убрать второе условие возникала ошибка (выход за массив) а второе условие просто маскировала посути ошибку .

Вот Функция которую надо отладить , да и пришло время изучить Структуры, Классы.

 Не судите строго за написание кода -:)

глоб. переменные
//+------------------------------------------------------------------+
//|                        Функция Level 
//+------------------------------------------------------------------+
double   Bar_data_D1 [][6]; // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров D1
double   Bar_data_W1 [][6]; // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров W1
double   Bar_data_MN [][6];
double   High_D1_Level;     // Возвращает значение максимальной цены бара D1
double   Low_D1_Level;      // Возвращает значение минимальной цены бара  D1
double   High_W1_Level;     // Возвращает значение максимальной цены бара W1
double   Low_W1_Level ;     // Возвращает значение минимальной цены бара  W1
double   High_MN1_Level;    // Возвращает значение максимальной цены бара MN1
double   Low_MN1_Level;     // Возвращает значение минимальной цены бара  MN1
double   Max_D_Level;       // ближайшей максимальный D уровень
double   Min_D_Level ;      // ближайшей минимальный  D уровень
double   Max_W_Level ;      // ближайшей максимальный W уровень
double   Min_W_Level ;      // ближайшей минимальный  W уровень
double   Max_MN_Level ;     // ближайшей максимальный MN уровень
double   Min_MN_Level ;     // ближайшей минимальный  MN уровень

int      Max_D_Num ;        // ближайшей максимальный день (номер бара)  
int      Min_D_Num ;        // ближайшей минимальный  день (номер бара)
int      Max_D_Volume ;     // ближайшей максимальный день (Объём)  
int      Min_D_Volume ;     // ближайшей минимальный  день (Объём)
datetime Max_D_Time;        // 
datetime Min_D_Time;        //
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//|                        Функция Level v 1.0
//+------------------------------------------------------------------+
void Level()
{
 ArrayCopyRates(Bar_data_D1,_Symbol,PERIOD_D1); // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров
 ArrayCopyRates(Bar_data_W1,_Symbol,PERIOD_W1); // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров
 ArrayCopyRates(Bar_data_MN,_Symbol,PERIOD_MN1); // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров
 
 High_D1_Level  = iHigh(_Symbol,PERIOD_D1,1);   // Возвращает значение максимальной цены бара D1
 Low_D1_Level   = iLow (_Symbol,PERIOD_D1,1);   // Возвращает значение минимальной цены бара  D1
 High_W1_Level  = iHigh(_Symbol,PERIOD_W1,1);   // Возвращает значение максимальной цены бара W1
 Low_W1_Level   = iLow (_Symbol,PERIOD_W1,1);   // Возвращает значение минимальной цены бара  W1 
 High_MN1_Level = iHigh(_Symbol,PERIOD_MN1,1);  // Возвращает значение максимальной цены бара MN1
 Low_MN1_Level  = iLow (_Symbol,PERIOD_MN1,1);  // Возвращает значение минимальной цены бара  MN1
 
//--- Max_D_Level
 for(int i = 1; i<ArrayRange(Bar_data_D1,0) ;i++)
    {
     //Print(" i = ",i);
     if(Bar_data_D1 [i][3]>=0)
       {
        if(Bar_data_D1 [i][3] > High_D1_Level)  
          {
           Max_D_Level = Bar_data_D1 [i][3];break;
          }
       }
    } 
    
//--- Min_D_Leve  
 for(int i = 1; i<ArrayRange(Bar_data_D1,0) ;i++)
    {
     Print("i = ",i," Bar_data_D1 [i][2] = ",Bar_data_D1 [i][2]);
     if(Bar_data_D1 [i][2]>=0)
       {
        if( Bar_data_D1 [i][2] < Low_D1_Level)
          {
           Min_D_Level = Bar_data_D1 [i][2];break;
          }
       }   
    } 
    
    
//--- Max_W_Level
 for(int i = 1; i<ArrayRange(Bar_data_D1,0) ;i++)
    {
     //Print(" i = ",i);
     if(Bar_data_D1 [i][3]>=0)
       {
        if(Bar_data_W1 [i][3] > High_W1_Level)    
          {
           Max_W_Level = Bar_data_W1 [i][3];break;
          }
       }  
    } 
    
//--- Min_W_Level 
 for(int i = 1; i<ArrayRange(Bar_data_D1,0) ;i++)
    {
    // Print(" i = ",i);
     if(Bar_data_D1 [i][2]>=0)
       {
        if(Bar_data_W1 [i][2] < Low_W1_Level)
          {
           Min_W_Level = Bar_data_W1 [i][2];break;
          }
       }  
    } 

 //+-----------------------High_D1_Level-----------------------------+  
 if(ObjectFind("High_D1")!=High_D1_Level) 
   {
    ObjectDelete("High_D1");
    if(ObjectFind("High_D1")!=0)
      {
       ObjectCreate("High_D1",OBJ_HLINE, 0, Time[0],High_D1_Level);
       ObjectSet("High_D1", OBJPROP_COLOR, clrMaroon);
       ObjectSet("High_D1", OBJPROP_WIDTH, 1);
      }
   } 
 if(ObjectFind("High_D1_label")!=High_D1_Level)
   {
    ObjectDelete("High_D1_label"); 
    if(ObjectFind("High_D1_label") != 0)
      {
       ObjectCreate("High_D1_label", OBJ_TEXT, 0, Time[13], High_D1_Level);
       ObjectSetText("High_D1_label", "High_D1: " + DoubleToStr(High_D1_Level,_Digits), 8,"Verdana", Brown);
      }
   } 
 //+-------------------------Low_D1_Level----------------------------+ 
 if(ObjectFind("Low_D1")!=Low_D1_Level) 
   {
    ObjectDelete("Low_D1");
    if(ObjectFind("Low_D1")!=0)
      {
       ObjectCreate("Low_D1",OBJ_HLINE, 0, Time[0],Low_D1_Level);
       ObjectSet("Low_D1", OBJPROP_COLOR, clrMaroon);
       ObjectSet("Low_D1", OBJPROP_WIDTH, 1);
      }
   } 
   
 if(ObjectFind("Low_D1_label")!=Low_D1_Level)
   {
    ObjectDelete("Low_D1_label"); 
    if(ObjectFind("Low_D1_label") != 0)
      {
       ObjectCreate("Low_D1_label", OBJ_TEXT, 0, Time[13], Low_D1_Level);
       ObjectSetText("Low_D1_label", "Low_D1: " + DoubleToStr(Low_D1_Level,_Digits), 8,"Verdana", Brown);
      }
   } 
   
     //+-----------------------Max_D_Level-----------------------------+  
 if(ObjectFind("Max_D")!=Max_D_Level) 
   {
    ObjectDelete("Max_D");
    if(ObjectFind("Max_D")!=0)
      {
       ObjectCreate("Max_D",OBJ_HLINE, 0, Time[0],Max_D_Level);
       ObjectSet("Max_D", OBJPROP_COLOR, clrMaroon);
       ObjectSet("Max_D", OBJPROP_WIDTH, 1);
      }
   } 
 if(ObjectFind("Max_D_label")!=Max_D_Level)
   {
    ObjectDelete("Max_D_label"); 
    if(ObjectFind("Max_D_label") != 0)
      {
       ObjectCreate("Max_D_label", OBJ_TEXT, 0, Time[30], Max_D_Level);
       ObjectSetText("Max_D_label", "Max_D: " + DoubleToStr(Max_D_Level,_Digits), 8,"Verdana", Brown);
      }
   } 
 //+-------------------------Min_D_Level----------------------------+ 
 if(ObjectFind("Min_D")!= Min_D_Level) 
   {
    ObjectDelete("Min_D");
    if(ObjectFind("Min_D")!=0)
      {
       ObjectCreate("Min_D",OBJ_HLINE, 0, Time[0],Min_D_Level);
       ObjectSet("Min_D", OBJPROP_COLOR, clrMaroon);
       ObjectSet("Min_D", OBJPROP_WIDTH, 1);
      }
   } 
   
 if(ObjectFind("Min_D_label")!=Min_D_Level)
   {
    ObjectDelete("Min_D_label"); 
    if(ObjectFind("Min_D_label") != 0)
      {
       ObjectCreate("Min_D_label", OBJ_TEXT, 0, Time[30], Min_D_Level);
       ObjectSetText("Min_D_label", "Min_D: " + DoubleToStr(Min_D_Level,_Digits), 8,"Verdana", Brown);
      }
   }  
 //+-----------------------High_W1_Level-----------------------------+         
 if(ObjectFind("High_W1")!=High_W1_Level) 
   {
    ObjectDelete("High_W1");
    if(ObjectFind("High_W1")!=0)
      {
       ObjectCreate("High_W1",OBJ_HLINE, 0, Time[0],High_W1_Level);
       ObjectSet("High_W1", OBJPROP_COLOR, clrMaroon);
       ObjectSet("High_W1", OBJPROP_WIDTH, 1);
      }
   } 
 if(ObjectFind("High_W1_label")!=High_W1_Level)
   {
    ObjectDelete("High_W1_label"); 
    if(ObjectFind("High_W1_label") != 0)
      {
       ObjectCreate("High_W1_label", OBJ_TEXT, 0, Time[47], High_W1_Level);
       ObjectSetText("High_W1_label", "High_W1: " + DoubleToStr(High_W1_Level,_Digits), 8,"Verdana", Brown);
      }
   } 
 //+-------------------------Low_W1_Level----------------------------+       
 if(ObjectFind("Low_W1")!=Low_W1_Level) 
   {
    ObjectDelete("Low_W1");
    if(ObjectFind("Low_W1")!=0)
      {
       ObjectCreate("Low_W1",OBJ_HLINE, 0, Time[0],Low_W1_Level);
       ObjectSet("Low_W1", OBJPROP_COLOR, clrMaroon);
       ObjectSet("Low_W1", OBJPROP_WIDTH, 1);
      }
   } 
   
 if(ObjectFind("Low_W1_label")!=Low_W1_Level)
   {
    ObjectDelete("Low_W1_label"); 
    if(ObjectFind("Low_W1_label") != 0)
      {
       ObjectCreate("Low_W1_label", OBJ_TEXT, 0, Time[47], Low_W1_Level);
       ObjectSetText("Low_W1_label", "Low_W1: " + DoubleToStr(Low_W1_Level,_Digits), 8,"Verdana", Brown);
      }
   }  
   
   
 //+-----------------------Max_W_Level-----------------------------+         
 if(ObjectFind("Max_W")!=Max_W_Level) 
   {
    ObjectDelete("Max_W");
    if(ObjectFind("Max_W")!=0)
      {
       ObjectCreate("Max_W",OBJ_HLINE, 0, Time[0],Max_W_Level);
       ObjectSet("Max_W", OBJPROP_COLOR, clrMaroon);
       ObjectSet("Max_W", OBJPROP_WIDTH, 1);
      }
   } 
 if(ObjectFind("Max_W_label")!= Max_W_Level)
   {
    ObjectDelete("Max_W_label"); 
    if(ObjectFind("Max_W_label") != 0)
      {
       ObjectCreate("Max_W_label", OBJ_TEXT, 0, Time[64], Max_W_Level);
       ObjectSetText("Max_W_label", "Max_W: " + DoubleToStr(Max_W_Level,_Digits), 8,"Verdana", Brown);
      }
   } 
 //+-------------------------Min_W_Level----------------------------+       
 if(ObjectFind("Min_W")!=Min_W_Level) 
   {
    ObjectDelete("Min_W");
    if(ObjectFind("Min_W")!=0)
      {
       ObjectCreate("Min_W",OBJ_HLINE, 0, Time[0],Min_W_Level);
       ObjectSet("Min_W", OBJPROP_COLOR, clrMaroon);
       ObjectSet("Min_W", OBJPROP_WIDTH, 1);
      }
   } 
   
 if(ObjectFind("Min_W_label")!= Min_W_Level)
   {
    ObjectDelete("Min_W_label"); 
    if(ObjectFind("Min_W_label") != 0)
      {
       ObjectCreate("Min_W_label", OBJ_TEXT, 0, Time[64], Min_W_Level);
       ObjectSetText("Min_W_label", "Min_W: " + DoubleToStr(Min_W_Level,_Digits), 8,"Verdana", Brown);
      }
   }
 //+-----------------------High_MN1_Level-----------------------------+         
 if(ObjectFind("High_MN1")!=High_MN1_Level) 
   {
    ObjectDelete("High_MN1");
    if(ObjectFind("High_MN1")!=0)
      {
       ObjectCreate("High_MN1",OBJ_HLINE, 0, Time[0],High_MN1_Level);
       ObjectSet("High_MN1", OBJPROP_COLOR, clrMaroon);
       ObjectSet("High_MN1", OBJPROP_WIDTH, 1);
      }
   } 
 if(ObjectFind("High_MN1_label")!=High_MN1_Level)
   {
    ObjectDelete("High_MN1_label"); 
    if(ObjectFind("High_MN1_label") != 0)
      {
       ObjectCreate("High_MN1_label", OBJ_TEXT, 0, Time[81], High_MN1_Level);
       ObjectSetText("High_MN1_label", "High_MN1: " + DoubleToStr(High_MN1_Level,_Digits), 8,"Verdana", Brown);
      }
   } 
 //+-------------------------Low_MN1_Level----------------------------+       
 if(ObjectFind("Low_MN1")!=Low_MN1_Level) 
   {
    ObjectDelete("Low_MN1");
    if(ObjectFind("Low_MN1")!=0)
      {
       ObjectCreate("Low_MN1",OBJ_HLINE, 0, Time[0],Low_MN1_Level);
       ObjectSet("Low_MN1", OBJPROP_COLOR, clrMaroon);
       ObjectSet("Low_MN1", OBJPROP_WIDTH, 1);
      }
   } 
   
 if(ObjectFind("Low_MN1_label")!=Low_MN1_Level)
   {
    ObjectDelete("Low_MN1_label"); 
    if(ObjectFind("Low_MN1_label") != 0)
      {
       ObjectCreate("Low_MN1_label", OBJ_TEXT, 0, Time[81], Low_MN1_Level);
       ObjectSetText("Low_MN1_label", "Low_MN1: " + DoubleToStr(Low_MN1_Level,_Digits), 8,"Verdana", Brown);
      }
   }       
}
 
Dark Kchlyzov:
   

Вот Функция которую надо отладить

Ок, а Вы можете сказать, что хотите получить в итоге?

 
Aleksei Stepanenko:

Ок, а Вы можете сказать, что хотите получить в итоге?

Вот укороченная версия запустите на AUDUSD 2020

Почему не идет дальше по массиву ?



//+------------------------------------------------------------------+
//|                                                   Test_Level.mq4 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
double   Bar_data_D1 [][6]; // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров D1
double   Low_D1_Level;      // Возвращает значение минимальной цены бара  D1
double   Min_D_Level ;      // ближайшей минимальный  D уровень
datetime  Time_Day;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   Level();
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {

   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
  On_Timer();
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                        Функция Level 
//+------------------------------------------------------------------+
void Level()
{
 ArrayCopyRates(Bar_data_D1,_Symbol,PERIOD_D1); // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров

 Low_D1_Level   = iLow (_Symbol,PERIOD_D1,1);   // Возвращает значение минимальной цены бара  D1
    
//--- Min_D_Leve  
 //for(int i = 1; i<ArrayRange(Bar_data_D1,0) ;i++)
 for(int i = 1; ;i++)
    {
     Print(" i = ",i," Bar_data_D1 [i][2] = ",Bar_data_D1 [i][2]);
     if(Bar_data_D1 [i][2]>=0)
       {
        if( Bar_data_D1 [i][2] < Low_D1_Level)
          {
           Min_D_Level = Bar_data_D1 [i][2];break;
          }
       }   
    } 

 //+-------------------------Low_D1_Level----------------------------+ 
 if(ObjectFind("Low_D1")!=Low_D1_Level) 
   {
    ObjectDelete("Low_D1");
    if(ObjectFind("Low_D1")!=0)
      {
       ObjectCreate("Low_D1",OBJ_HLINE, 0, Time[0],Low_D1_Level);
       ObjectSet("Low_D1", OBJPROP_COLOR, clrMaroon);
       ObjectSet("Low_D1", OBJPROP_WIDTH, 1);
      }
   } 
   
 if(ObjectFind("Low_D1_label")!=Low_D1_Level)
   {
    ObjectDelete("Low_D1_label"); 
    if(ObjectFind("Low_D1_label") != 0)
      {
       ObjectCreate("Low_D1_label", OBJ_TEXT, 0, Time[13], Low_D1_Level);
       ObjectSetText("Low_D1_label", "Low_D1: " + DoubleToStr(Low_D1_Level,_Digits), 8,"Verdana", Brown);
      }
   } 
   
 //+-------------------------Min_D_Level----------------------------+ 
 if(ObjectFind("Min_D")!= Min_D_Level) 
   {
    ObjectDelete("Min_D");
    if(ObjectFind("Min_D")!=0)
      {
       ObjectCreate("Min_D",OBJ_HLINE, 0, Time[0],Min_D_Level);
       ObjectSet("Min_D", OBJPROP_COLOR, clrMaroon);
       ObjectSet("Min_D", OBJPROP_WIDTH, 1);
      }
   } 
   
 if(ObjectFind("Min_D_label")!=Min_D_Level)
   {
    ObjectDelete("Min_D_label"); 
    if(ObjectFind("Min_D_label") != 0)
      {
       ObjectCreate("Min_D_label", OBJ_TEXT, 0, Time[30], Min_D_Level);
       ObjectSetText("Min_D_label", "Min_D: " + DoubleToStr(Min_D_Level,_Digits), 8,"Verdana", Brown);
      }
   }  
 
}
//+------------------------------------------------------------------+
//|        функция удаление всех объектов созданных советником
//+------------------------------------------------------------------+
void DestroyObject()
{
 int tot=ObjectsTotal();
 for( int i=tot; i>=0; i--)
    {
     
     if(ObjectName(i)=="Low_MN1"){ObjectDelete(0,"Low_MN1");Print("<< Объект Low_MN удалён >>");}
     if(ObjectName(i)=="Low_MN1_label"){ObjectDelete(0,"Low_MN1_label");Print("<< Объект Low_MN1_label удалён >>");}
     

     if(ObjectName(i)=="Min_D"){ObjectDelete(0,"Min_D");Print("<< Объект Min_D удалён >>");}
     if(ObjectName(i)=="Min_D_label"){ObjectDelete(0,"Min_D_label");Print("<< Объект Min_D_label удалён >>");}


   }
}
//+-------------------------------------------------------------------------+   
//                         функция Timer                    
//+-------------------------------------------------------------------------+
void On_Timer()
{

     
 if(Day()!= Time_Day)
   {
    Level();
    Time_Day = Day();
   }
}
 

Вы меня спрашиваете почему не работает, а я пытаюсь понять суть словами, потому, что может быть лучшее решение Вашей задачи, которую я и пытаюсь узнать.

Объясните, что Вы хотите получить.
 
Aleksei Stepanenko:

Вы меня спрашиваете почему не работает, а я пытаюсь понять суть словами, потому, что может быть лучшее решение Вашей задачи, которую я и пытаюсь узнать.

Объясните, что Вы хотите получить.

Пока вижу _так_

 
Vitaly Muzichenko:

Пока вижу _так_

Да, так устроено восприятие человека. Я тоже, когда сильно увлечён идеей, практически не слышу доводов другого. Селяви..

 
Vitaly Muzichenko:

Пока вижу _так_

есть уровень  Low_D1_Level , далее нам нужно получить значение следующего уровня   Min_D_Level  , которое будит  ближайшее  минимальное в истории и будет  меньше чем  Low_D1_Level .

Блин дальше не знаю как объяснить . Если запустить код в тестере с визуализацией по-моему  все видно. 

Да и вообще если зашли в пост , будьте так любезны соизвольте хоть  прочтите суть .

Вот это совсем не в тему :

Что за «Проблема XY»?

Это ошибка, которая зачастую приводит к бессмысленной трате времени как просящего о помощи, так и тех, кто пытается ему отвечать. Её ещё называют «Проблемой Молотка». Суть её, если коротко, заключается в том, что люди склонны спрашивать о своих неудачных попытках решить проблему, а не о самой проблеме. В итоге получается примерно так:

  • Человек хочет сделать  X.
  • Он не знает, как сделать  X, но догадывается, что к успеху может привести выполнение  Y.
  • Тем не менее, человек не знает и то, как сделать  Y.
  • В этот момент он решает попросить помощи у других людей.
  • Все пытаются помочь человеку с проблемой  Y, удивляясь из-за того, что непонятно, зачем кому-то вообще может быть необходимо такое.
  • После длительных расспросов и ценой уймы потерянного времени наконец-то становится понятно, что человек на самом деле хотел решить  X, а  Y вовсе никак ему помочь не сможет.
 
Vitaly Muzichenko:

Пока вижу _так_

Так полагаю вы свой X и Y так и не нашли !!!