Ошибки, баги, вопросы - страница 2387

 

Ошибка в стандартной библиотеке

2019.02.19 13:52:20.974 Test_4G_CB (Si Splice,H1)       zero divide in 'Curve.mqh' (696,60)

Связана с кодом

      CCurve *A=graphicL.CurveAdd(X,Y,ColorToARGB(Green,256),CURVE_POINTS,"Logist");//Создает и добавляет кривую на график
      A.PointsFill(false);//Устанавливает флаг, указывающий, нужно ли выполнять заливку для точек, определяющих кривую при отрисовке точками. 
      A.PointsType(POINT_CIRCLE);//Устанавливает флаг, указывающий на тип точек, использующихся при отрисовке кривой точками.
      A.TrendLineVisible(true);//Устанавливает флаг, который определяет видимость трендовой линии
      A.TrendLineColor(ColorToARGB(Red,256));//Устанавливает цвет трендовой линии для кривой

Причину пока не понимаю - вероятно массив с координатой (0;0)...

Проверка на размер массива помогла - строим линию только при больше чем одной точки. 
 
Dmitriy Burlachenko:

Всем привет.

Разработчики и гуру подскажите. CopyTicksRange в тестере на исторических данных в режиме "Все тики" и "Каждый тик на основе реальных тиков" возвращает 0 тиков и код ошибки 0 - почему?

MT5 build 1996. Символ RTS-3.19.Брокер - Открытие. Счёт - реал. Интервал времени верный. История за этот период есть.

"Ошибка получения тиковой истории! С 2019.02.08 11:16 по 2019.02.14 23:48. Код ошибки: 0. Операция выполнена успешно."  :)

При этом, тот же код честно отдаёт все тики в тестере на реальных данных и в онлайне работает без проблем. Что я делаю не так?
В какое тестерное время? Это тестерное время позже 2019.02.14 23:48?
 

Ан нет, опять ошибка вылезла там же...

Вероятно точки только с одинаковыми координатами... почему этой проверки нет в классе...

 
Dmitriy Burlachenko:

Всем привет.

Разработчики и гуру подскажите. CopyTicksRange в тестере на исторических данных в режиме "Все тики" и "Каждый тик на основе реальных тиков" возвращает 0 тиков и код ошибки 0 - почему?

MT5 build 1996. Символ RTS-3.19.Брокер - Открытие. Счёт - реал. Интервал времени верный. История за этот период есть.

"Ошибка получения тиковой истории! С 2019.02.08 11:16 по 2019.02.14 23:48. Код ошибки: 0. Операция выполнена успешно."  :)

При этом, тот же код честно отдаёт все тики в тестере на реальных данных и в онлайне работает без проблем. Что я делаю не так?

Написал на коленке проверочного эксперта

//+------------------------------------------------------------------+
//|                                           TestCopyTicksRange.mq5 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

datetime ExtNextBar=0;
datetime ExtTimes[];
MqlTick  ExtTicksAll[];
MqlTick  ExtTicksTrade[];
MqlTick  ExtTicksInfo[];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   ExtNextBar=NextBarTime(TimeCurrent(),_Period);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   datetime from=D'2019.02.08 11:16';
   datetime to=D'2019.02.14 23:48';
   ulong    from_msc=from*1000;
   ulong    to_msc=to*1000;
   int      ticks_trade=CopyTicksRange(_Symbol,ExtTicksTrade,COPY_TICKS_TRADE,from_msc,to_msc);
   int      ticks_info=CopyTicksRange(_Symbol,ExtTicksInfo,COPY_TICKS_INFO,from_msc,to_msc);
   int      ticks_all=CopyTicksRange(_Symbol,ExtTicksAll,COPY_TICKS_ALL,from_msc,to_msc);
   PrintFormat("%s - %s  ticks_trade=%d  ticks_info=%d  ticks_all=%d",TimeToString(from),TimeToString(to),ticks_trade,ticks_info,ticks_all);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(TimeCurrent()<ExtNextBar)
      return;
//---
   ExtNextBar=NextBarTime(TimeCurrent(),_Period);
   int copied=CopyTime(_Symbol,_Period,0,7,ExtTimes);
   if(copied>1)
     {
      ulong from_msc=ExtTimes[0]*1000;
      ulong to_msc=ExtTimes[copied-1]*1000;
      int   ticks_trade=CopyTicksRange(_Symbol,ExtTicksTrade,COPY_TICKS_TRADE,from_msc,to_msc);
      int   ticks_info=CopyTicksRange(_Symbol,ExtTicksInfo,COPY_TICKS_INFO,from_msc,to_msc);
      int   ticks_all=CopyTicksRange(_Symbol,ExtTicksAll,COPY_TICKS_ALL,from_msc,to_msc);
      PrintFormat("%s - %s  ticks_trade=%d  ticks_info=%d  ticks_all=%d",TimeToString(ExtTimes[0]),TimeToString(ExtTimes[copied-1]),ticks_trade,ticks_info,ticks_all);
     }
   else
      PrintFormat("copied=%d  last_error=%d",copied,GetLastError());
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
datetime NextBarTime(datetime last_time,ENUM_TIMEFRAMES period)
  {
   int         period_seconds=PeriodSeconds(period);
   int         shift;
   MqlDateTime str_time;
//---
   switch(period)
     {
      case PERIOD_MN1 :
         TimeToStruct(last_time,str_time);
         str_time.day=1;
         str_time.hour=0;
         str_time.min=0;
         str_time.sec=0;
         str_time.mon++;
         if(str_time.mon>12)
           {
            str_time.mon=1;
            str_time.year++;
           }
         last_time=StructToTime(str_time);
         break;
      case PERIOD_W1 :
         shift=int(last_time%period_seconds);
         shift+=(shift>=(3*86400))?(-3*86400):(4*86400);
         last_time-=shift;
         last_time+=period_seconds;
         break;
      default :
         last_time/=period_seconds;
         last_time++;
         last_time*=period_seconds;
     }
//---
   return(last_time);
  }
//+------------------------------------------------------------------+

В OnDeinit "контрольный выстрел" по Вашим датам

Вот лог тестирования

2019.02.19 15:12:32.360 127.0.0.1       login (build 1996)
2019.02.19 15:12:32.386 Network 3860 bytes of account info loaded
2019.02.19 15:12:32.386 Network 1482 bytes of tester parameters loaded
2019.02.19 15:12:32.386 Network 188 bytes of input parameters loaded
2019.02.19 15:12:32.429 Network 26288 bytes of symbols list loaded
2019.02.19 15:12:32.429 Tester  expert file added: Experts\Tester\TestCopyTicksRange.ex5. 16251 bytes loaded
2019.02.19 15:12:32.446 Tester  initial deposit 100000.00 RUR, leverage 1:100
2019.02.19 15:12:32.451 Tester  successfully initialized
2019.02.19 15:12:32.451 Network 35 Kb of total initialization data received
2019.02.19 15:12:32.451 Tester  Intel Xeon  E5-2630 v4 @ 2.20GHz, 65457 MB
2019.02.19 15:12:32.455 Symbols RTS-3.19: symbol to be synchronized
2019.02.19 15:12:32.455 Symbols RTS-3.19: symbol synchronized, 3864 bytes of symbol info received
2019.02.19 15:12:32.460 History RTS-3.19: load 31 bytes of history data to synchronize in 0:00:00.003
2019.02.19 15:12:32.460 History RTS-3.19: history synchronized from 2017.05.04 to 2019.02.18
2019.02.19 15:12:32.460 Ticks   RTS-3.19: ticks synchronization started
2019.02.19 15:12:32.467 Ticks   RTS-3.19: load 38 bytes of tick data to synchronize in 0:00:00.000
2019.02.19 15:12:32.467 Ticks   RTS-3.19: history ticks synchronized from 2019.01.03 to 2019.02.15
2019.02.19 15:12:32.500 History RTS-3.19,Daily: history cache allocated for 174 bars and contains 162 bars from 2018.01.03 00:00 to 2019.01.31 00:00
2019.02.19 15:12:32.500 History RTS-3.19,Daily: history begins from 2018.01.03 00:00
2019.02.19 15:12:32.579 Tester  RTS-3.19,Daily (Open-Broker): generating based on real ticks
2019.02.19 15:12:32.579 Tester  RTS-3.19,Daily: testing of Experts\Tester\TestCopyTicksRange.ex5 from 2019.02.01 00:00 to 2019.02.18 00:00 started
2019.02.19 15:12:33.020 Ticks   RTS-3.19 : real ticks begin from 2019.01.03 00:00:00
2019.02.19 15:12:33.780 TestCopyTicksRange (RTS-3.19,D1)        2019.02.04 09:45:01   2019.01.24 00:00 - 2019.02.01 00:00  ticks_trade=946026  ticks_info=309512  ticks_all=1255538
2019.02.19 15:12:34.370 TestCopyTicksRange (RTS-3.19,D1)        2019.02.05 00:00:41   2019.01.25 00:00 - 2019.02.04 00:00  ticks_trade=915869  ticks_info=297066  ticks_all=1212935
2019.02.19 15:12:34.938 TestCopyTicksRange (RTS-3.19,D1)        2019.02.06 00:00:30   2019.01.28 00:00 - 2019.02.05 00:00  ticks_trade=907758  ticks_info=287220  ticks_all=1194978
2019.02.19 15:12:35.517 TestCopyTicksRange (RTS-3.19,D1)        2019.02.07 00:02:28   2019.01.29 00:00 - 2019.02.06 00:00  ticks_trade=897199  ticks_info=280798  ticks_all=1177997
2019.02.19 15:12:36.086 TestCopyTicksRange (RTS-3.19,D1)        2019.02.08 00:03:00   2019.01.30 00:00 - 2019.02.07 00:00  ticks_trade=858459  ticks_info=270151  ticks_all=1128610
2019.02.19 15:12:36.639 TestCopyTicksRange (RTS-3.19,D1)        2019.02.11 09:45:04   2019.01.31 00:00 - 2019.02.08 00:00  ticks_trade=847118  ticks_info=265898  ticks_all=1113016
2019.02.19 15:12:37.160 TestCopyTicksRange (RTS-3.19,D1)        2019.02.12 00:04:45   2019.02.01 00:00 - 2019.02.11 00:00  ticks_trade=804551  ticks_info=248516  ticks_all=1053067
2019.02.19 15:12:37.683 TestCopyTicksRange (RTS-3.19,D1)        2019.02.13 00:00:58   2019.02.04 00:00 - 2019.02.12 00:00  ticks_trade=800227  ticks_info=237735  ticks_all=1037962
2019.02.19 15:12:38.304 TestCopyTicksRange (RTS-3.19,D1)        2019.02.14 00:02:42   2019.02.05 00:00 - 2019.02.13 00:00  ticks_trade=842496  ticks_info=243062  ticks_all=1085558
2019.02.19 15:12:38.992 TestCopyTicksRange (RTS-3.19,D1)        2019.02.15 00:04:54   2019.02.06 00:00 - 2019.02.14 00:00  ticks_trade=922073  ticks_info=258989  ticks_all=1181062
2019.02.19 15:12:39.017 Tester  final balance 100000.00 RUR
2019.02.19 15:12:39.512 TestCopyTicksRange (RTS-3.19,D1)        2019.02.15 23:49:59   2019.02.08 11:16 - 2019.02.14 23:48  ticks_trade=856695  ticks_info=240266  ticks_all=1096961
2019.02.19 15:12:39.578 Tester  RTS-3.19,Daily: 2187070 ticks, 11 bars generated. Environment synchronized in 0:00:00.101. Test passed in 0:00:07.118 (including ticks preprocessing 0:00:00.453).
2019.02.19 15:12:39.578 Tester  RTS-3.19,Daily: total time from login to stop testing 0:00:07.219 (including 0:00:00.101 for history data synchronization)
2019.02.19 15:12:39.578 Tester  570 Mb memory used including 0.47 Mb of history data, 128 Mb of tick data
2019.02.19 15:12:39.578 Tester  log file "E:\MetaTrader5\Client\MetaTrader5Terminal\Final\Tester\Agent-127.0.0.1-3000\logs\20190219.log" written
2019.02.19 15:12:39.594         test Experts\Tester\TestCopyTicksRange.ex5 on RTS-3.19,Daily thread finished
2019.02.19 15:12:44.676 127.0.0.1       prepare for shutdown

Всё копируется.

 
Slava:

Написал на коленке проверочного эксперта

Хреново, что полный код для воспроизведения не предоставляют те, кто репортит.

 
Aleksey Vyazmikin:

Ан нет, опять ошибка вылезла там же...

Вероятно точки только с одинаковыми координатами... почему этой проверки нет в классе...

Такая проверка помогла

int Size_arr_X=ArraySize(X);

   if(Size_arr_X>1)
     {
      int Marker=0;
      for(int i=0;i<Size_arr_X;i++)
        {
         if(X[0]!=X[i] && Y[0]!=Y[i]){Marker=1;break;}
        }
      if(Marker>0)
        {
         A.PointsFill(false);//Устанавливает флаг, указывающий, нужно ли выполнять заливку для точек, определяющих кривую при отрисовке точками. 
         A.PointsType(POINT_CIRCLE);//Устанавливает флаг, указывающий на тип точек, использующихся при отрисовке кривой точками.

         A.TrendLineVisible(true);//Устанавливает флаг, который определяет видимость трендовой линии
         A.TrendLineColor(ColorToARGB(Red,256));//Устанавливает цвет трендовой линии для кривой
        }
     }
 
Slava:

Написал на коленке проверочного эксперта

В OnDeinit "контрольный выстрел" по Вашим датам

Вот лог тестирования

Всё копируется.

У меня не эксперт, а индикатор! Думаю, что от этого и другой результат.

 
Slava:
В какое тестерное время? Это тестерное время позже 2019.02.14 23:48?

Да, тестерное время позже.

 
Dmitriy Burlachenko:

У меня не эксперт, а индикатор! Думаю, что от этого и другой результат.

Я не видел Вашего высказывания про индикатор
 
Dmitriy Burlachenko:

У меня не эксперт, а индикатор! Думаю, что от этого и другой результат.

Не вопрос. Вот индикатор

//+------------------------------------------------------------------+
//|                                           TestCopyTicksRange.mq5 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
datetime ExtNextBar=0;
datetime ExtTimes[];
MqlTick  ExtTicksAll[];
MqlTick  ExtTicksTrade[];
MqlTick  ExtTicksInfo[];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   ExtNextBar=NextBarTime(TimeCurrent(),_Period);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| deinitialization function                                        |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   datetime from=D'2019.02.08 11:16';
   datetime to=D'2019.02.14 23:48';
   ulong    from_msc=from*1000;
   ulong    to_msc=to*1000;
   int      ticks_trade=CopyTicksRange(_Symbol,ExtTicksTrade,COPY_TICKS_TRADE,from_msc,to_msc);
   int      ticks_info=CopyTicksRange(_Symbol,ExtTicksInfo,COPY_TICKS_INFO,from_msc,to_msc);
   int      ticks_all=CopyTicksRange(_Symbol,ExtTicksAll,COPY_TICKS_ALL,from_msc,to_msc);
   PrintFormat("%s - %s  ticks_trade=%d  ticks_info=%d  ticks_all=%d",TimeToString(from),TimeToString(to),ticks_trade,ticks_info,ticks_all);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   if(TimeCurrent()<ExtNextBar)
      return(rates_total);
//---
   ExtNextBar=NextBarTime(TimeCurrent(),_Period);
   int copied=CopyTime(_Symbol,_Period,0,7,ExtTimes);
   if(copied>1)
     {
      ulong from_msc=ExtTimes[0]*1000;
      ulong to_msc=ExtTimes[copied-1]*1000;
      int   ticks_trade=CopyTicksRange(_Symbol,ExtTicksTrade,COPY_TICKS_TRADE,from_msc,to_msc);
      int   ticks_info=CopyTicksRange(_Symbol,ExtTicksInfo,COPY_TICKS_INFO,from_msc,to_msc);
      int   ticks_all=CopyTicksRange(_Symbol,ExtTicksAll,COPY_TICKS_ALL,from_msc,to_msc);
      PrintFormat("%s - %s  ticks_trade=%d  ticks_info=%d  ticks_all=%d",TimeToString(ExtTimes[0]),TimeToString(ExtTimes[copied-1]),ticks_trade,ticks_info,ticks_all);
     }
   else
      PrintFormat("copied=%d  last_error=%d",copied,GetLastError());
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
datetime NextBarTime(datetime last_time,ENUM_TIMEFRAMES period)
  {
   int         period_seconds=PeriodSeconds(period);
   int         shift;
   MqlDateTime str_time;
//---
   switch(period)
     {
      case PERIOD_MN1 :
         TimeToStruct(last_time,str_time);
         str_time.day=1;
         str_time.hour=0;
         str_time.min=0;
         str_time.sec=0;
         str_time.mon++;
         if(str_time.mon>12)
           {
            str_time.mon=1;
            str_time.year++;
           }
         last_time=StructToTime(str_time);
         break;
      case PERIOD_W1 :
         shift=int(last_time%period_seconds);
         shift+=(shift>=(3*86400))?(-3*86400):(4*86400);
         last_time-=shift;
         last_time+=period_seconds;
         break;
      default :
         last_time/=period_seconds;
         last_time++;
         last_time*=period_seconds;
     }
//---
   return(last_time);
  }
//+------------------------------------------------------------------+

Вот логи

2019.02.19 17:17:41.653 Startup MetaTester 5 x64 build 1996 (18 Feb 2019)
2019.02.19 17:17:41.666 Server  MetaTester 5 started on 127.0.0.1:3000
2019.02.19 17:17:41.666 Startup initialization finished
2019.02.19 17:17:42.116 127.0.0.1       login (build 1996)
2019.02.19 17:17:42.193 Network 3860 bytes of account info loaded
2019.02.19 17:17:42.193 Network 1482 bytes of tester parameters loaded
2019.02.19 17:17:42.193 Network 188 bytes of input parameters loaded
2019.02.19 17:17:42.226 Network 26303 bytes of symbols list loaded
2019.02.19 17:17:42.226 Tester  expert file added: Indicators\TestCopyTicksRange.ex5. 15937 bytes loaded
2019.02.19 17:17:42.261 Tester  successfully initialized
2019.02.19 17:17:42.261 Network 35 Kb of total initialization data received
2019.02.19 17:17:42.261 Tester  Intel Xeon  E5-2630 v4 @ 2.20GHz, 65457 MB
2019.02.19 17:17:42.286 Symbols RTS-3.19: symbol to be synchronized
2019.02.19 17:17:42.287 Symbols RTS-3.19: symbol synchronized, 3864 bytes of symbol info received
2019.02.19 17:17:42.288 History RTS-3.19: history synchronization started
2019.02.19 17:17:42.294 History RTS-3.19: load 31 bytes of history data to synchronize in 0:00:00.004
2019.02.19 17:17:42.294 History RTS-3.19: history synchronized from 2017.05.04 to 2019.02.18
2019.02.19 17:17:42.294 Ticks   RTS-3.19: ticks synchronization started
2019.02.19 17:17:44.303 Ticks   RTS-3.19: load 38 bytes of tick data to synchronize in 0:00:02.016
2019.02.19 17:17:44.303 Ticks   RTS-3.19: history ticks synchronized from 2019.01.03 to 2019.02.15
2019.02.19 17:17:44.351 History RTS-3.19,Daily: history cache allocated for 174 bars and contains 162 bars from 2018.01.03 00:00 to 2019.01.31 00:00
2019.02.19 17:17:44.351 History RTS-3.19,Daily: history begins from 2018.01.03 00:00
2019.02.19 17:17:44.430 Tester  RTS-3.19,Daily (Open-Broker): generating based on real ticks
2019.02.19 17:17:44.430 Tester  RTS-3.19,Daily: testing of Indicators\TestCopyTicksRange.ex5 from 2019.02.01 00:00 to 2019.02.18 00:00 started
2019.02.19 17:17:44.939 Ticks   RTS-3.19 : real ticks begin from 2019.01.03 00:00:00
2019.02.19 17:17:45.938 TestCopyTicksRange (RTS-3.19,D1)        2019.02.04 09:45:05   2019.01.24 00:00 - 2019.02.01 00:00  ticks_trade=946026  ticks_info=309512  ticks_all=1255538
2019.02.19 17:17:46.741 TestCopyTicksRange (RTS-3.19,D1)        2019.02.05 00:04:00   2019.01.25 00:00 - 2019.02.04 00:00  ticks_trade=915869  ticks_info=297066  ticks_all=1212935
2019.02.19 17:17:47.554 TestCopyTicksRange (RTS-3.19,D1)        2019.02.06 00:00:32   2019.01.28 00:00 - 2019.02.05 00:00  ticks_trade=907758  ticks_info=287220  ticks_all=1194978
2019.02.19 17:17:48.324 TestCopyTicksRange (RTS-3.19,D1)        2019.02.07 00:02:28   2019.01.29 00:00 - 2019.02.06 00:00  ticks_trade=897199  ticks_info=280798  ticks_all=1177997
2019.02.19 17:17:49.128 TestCopyTicksRange (RTS-3.19,D1)        2019.02.08 00:03:17   2019.01.30 00:00 - 2019.02.07 00:00  ticks_trade=858459  ticks_info=270151  ticks_all=1128610
2019.02.19 17:17:49.927 TestCopyTicksRange (RTS-3.19,D1)        2019.02.11 09:45:57   2019.01.31 00:00 - 2019.02.08 00:00  ticks_trade=847118  ticks_info=265898  ticks_all=1113016
2019.02.19 17:17:50.666 TestCopyTicksRange (RTS-3.19,D1)        2019.02.12 09:45:00   2019.02.01 00:00 - 2019.02.11 00:00  ticks_trade=804551  ticks_info=248516  ticks_all=1053067
2019.02.19 17:17:51.380 TestCopyTicksRange (RTS-3.19,D1)        2019.02.13 00:00:59   2019.02.04 00:00 - 2019.02.12 00:00  ticks_trade=800227  ticks_info=237735  ticks_all=1037962
2019.02.19 17:17:52.268 TestCopyTicksRange (RTS-3.19,D1)        2019.02.14 09:46:55   2019.02.05 00:00 - 2019.02.13 00:00  ticks_trade=842496  ticks_info=243062  ticks_all=1085558
2019.02.19 17:17:53.255 TestCopyTicksRange (RTS-3.19,D1)        2019.02.15 09:45:19   2019.02.06 00:00 - 2019.02.14 00:00  ticks_trade=922073  ticks_info=258989  ticks_all=1181062
2019.02.19 17:17:53.460 Tester  RTS-3.19,Daily: 2187070 ticks, 11 bars generated. Environment synchronized in 0:00:02.179. Test passed in 0:00:09.167 (including ticks preprocessing 0:00:00.454).
2019.02.19 17:17:53.460 Tester  RTS-3.19,Daily: total time from login to stop testing 0:00:11.346 (including 0:00:02.179 for history data synchronization)
2019.02.19 17:17:53.460 Tester  585 Mb memory used including 0.47 Mb of history data, 128 Mb of tick data
2019.02.19 17:17:53.460 Tester  log file "E:\MetaTrader5\Client\MetaTrader5Terminal\Final\Tester\Agent-127.0.0.1-3000\logs\20190219.log" written
2019.02.19 17:17:53.476         test Indicators\TestCopyTicksRange.ex5 on RTS-3.19,Daily thread finished
2019.02.19 17:17:56.526 127.0.0.1       prepare for shutdown
2019.02.19 17:18:07.970 Tester  close visual tester window
2019.02.19 17:18:07.970 Tester  shutdown tester machine
2019.02.19 17:18:08.951 Server  MetaTester 5 stopped

Правда OnDeinit с контрольным запросом не отработал. Потому что тестирование индикатора. OnDeinit только при отладке

Причина обращения: