"Old tick" при тестировании на реальных тиках - страница 4

 
Alexey Kozitsyn:
Вы попробовали, определили ошибку?

Да. В тестере в некоторых случаях отдавались тики с запросом ненулевого from_msc без учёта миллисекунд, поэтому и возникали так называемые перескоки.

Однако, и у Вас в коде где-то есть ошибка. Вот такое изменение (для поиска проблемы)

      //--- Проверяем "перескок" тиков
      if(_lastTickTime>ticks.GetTickTimeMs(i))   // Если время предыдущего тика больше времени текущего - ОШИБКА
        {
         Print(__FUNCTION__,": ОШИБКА ПЕРЕСКОКА! Время предыдущего = "+GetMsToStringTime(_lastTickTime)+
               ", время текущего = "+GetMsToStringTime(ticks.GetTickTimeMs(i)));
         Print("ticks total ",limit+1,"  from ",ticks.GetFrom()," (",GetMsToStringTime(ticks.GetFrom()),")  count ",ticks.GetCount());
         for(int j=0; j<=limit; j++)
            Print(IntegerToString(j,5,' ')," ",GetMsToStringTime(ticks.GetTickTimeMs(j)));
        }
      //else                                  // Если время предыдущего тика не больше времени текущего
      _lastTickTime=ticks.GetTickTimeMs(i);   // Запоминаем время текущего тика

Выдал такой лог

2016.11.14 15:14:03.400 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00   ModeSingle: ОШИБКА ПЕРЕСКОКА! Время предыдущего = 2016.11.01 09:00:00.199 ms, время текущего = 2016.11.01 09:00:00.0 ms
2016.11.14 15:14:03.400 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00   ticks total 30  from 1477990800291 (2016.11.01 09:00:00.291 ms)  count 4000
2016.11.14 15:14:03.400 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00       0 2016.11.01 09:00:00.199 ms
2016.11.14 15:14:03.400 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00       1 2016.11.01 09:00:00.0 ms
2016.11.14 15:14:03.400 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00       2 2016.11.01 09:00:00.0 ms
2016.11.14 15:14:03.400 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00       3 2016.11.01 09:00:00.0 ms
2016.11.14 15:14:03.400 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00       4 2016.11.01 09:00:00.0 ms
2016.11.14 15:14:03.400 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00       5 2016.11.01 09:00:00.0 ms
2016.11.14 15:14:03.400 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00       6 2016.11.01 09:00:00.0 ms
2016.11.14 15:14:03.400 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00       7 2016.11.01 09:00:00.0 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00       8 2016.11.01 09:00:00.0 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00       9 2016.11.01 09:00:00.0 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      10 2016.11.01 09:00:00.71 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      11 2016.11.01 09:00:00.71 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      12 2016.11.01 09:00:00.71 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      13 2016.11.01 09:00:00.71 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      14 2016.11.01 09:00:00.71 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      15 2016.11.01 09:00:00.71 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      16 2016.11.01 09:00:00.71 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      17 2016.11.01 09:00:00.71 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      18 2016.11.01 09:00:00.71 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      19 2016.11.01 09:00:00.71 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      20 2016.11.01 09:00:00.81 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      21 2016.11.01 09:00:00.81 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      22 2016.11.01 09:00:00.81 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      23 2016.11.01 09:00:00.81 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      24 2016.11.01 09:00:00.81 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      25 2016.11.01 09:00:00.81 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      26 2016.11.01 09:00:00.95 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      27 2016.11.01 09:00:00.120 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      28 2016.11.01 09:00:00.120 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      29 2016.11.01 09:00:00.291 ms

В отладчике было всего 2 запроса с from_msc=2016.11.01 09:00:00.291. При этом на первый запрос был отдан 1 тик, на второй запрос - 2 тика (но никак не 30, как это выведено в журнал)

 
Slawa:

Да. В тестере в некоторых случаях отдавались тики с запросом ненулевого from_msc без учёта миллисекунд, поэтому и возникали так называемые перескоки.

Однако, и у Вас в коде где-то есть ошибка. Вот такое изменение (для поиска проблемы)

      //--- Проверяем "перескок" тиков
      if(_lastTickTime>ticks.GetTickTimeMs(i))   // Если время предыдущего тика больше времени текущего - ОШИБКА
        {
         Print(__FUNCTION__,": ОШИБКА ПЕРЕСКОКА! Время предыдущего = "+GetMsToStringTime(_lastTickTime)+
               ", время текущего = "+GetMsToStringTime(ticks.GetTickTimeMs(i)));
         Print("ticks total ",limit+1,"  from ",ticks.GetFrom()," (",GetMsToStringTime(ticks.GetFrom()),")  count ",ticks.GetCount());
         for(int j=0; j<=limit; j++)
            Print(IntegerToString(j,5,' ')," ",GetMsToStringTime(ticks.GetTickTimeMs(j)));
        }
      //else                                  // Если время предыдущего тика не больше времени текущего
      _lastTickTime=ticks.GetTickTimeMs(i);   // Запоминаем время текущего тика

Выдал такой лог

2016.11.14 15:14:03.400 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00   ModeSingle: ОШИБКА ПЕРЕСКОКА! Время предыдущего = 2016.11.01 09:00:00.199 ms, время текущего = 2016.11.01 09:00:00.0 ms
2016.11.14 15:14:03.400 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00   ticks total 30  from 1477990800291 (2016.11.01 09:00:00.291 ms)  count 4000
2016.11.14 15:14:03.400 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00       0 2016.11.01 09:00:00.199 ms
2016.11.14 15:14:03.400 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00       1 2016.11.01 09:00:00.0 ms
2016.11.14 15:14:03.400 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00       2 2016.11.01 09:00:00.0 ms
2016.11.14 15:14:03.400 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00       3 2016.11.01 09:00:00.0 ms
2016.11.14 15:14:03.400 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00       4 2016.11.01 09:00:00.0 ms
2016.11.14 15:14:03.400 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00       5 2016.11.01 09:00:00.0 ms
2016.11.14 15:14:03.400 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00       6 2016.11.01 09:00:00.0 ms
2016.11.14 15:14:03.400 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00       7 2016.11.01 09:00:00.0 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00       8 2016.11.01 09:00:00.0 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00       9 2016.11.01 09:00:00.0 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      10 2016.11.01 09:00:00.71 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      11 2016.11.01 09:00:00.71 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      12 2016.11.01 09:00:00.71 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      13 2016.11.01 09:00:00.71 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      14 2016.11.01 09:00:00.71 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      15 2016.11.01 09:00:00.71 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      16 2016.11.01 09:00:00.71 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      17 2016.11.01 09:00:00.71 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      18 2016.11.01 09:00:00.71 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      19 2016.11.01 09:00:00.71 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      20 2016.11.01 09:00:00.81 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      21 2016.11.01 09:00:00.81 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      22 2016.11.01 09:00:00.81 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      23 2016.11.01 09:00:00.81 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      24 2016.11.01 09:00:00.81 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      25 2016.11.01 09:00:00.81 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      26 2016.11.01 09:00:00.95 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      27 2016.11.01 09:00:00.120 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      28 2016.11.01 09:00:00.120 ms
2016.11.14 15:14:03.401 Delta_v2 (RTS-12.16,H1) 2016.11.01 09:00:00      29 2016.11.01 09:00:00.291 ms

В отладчике было всего 2 запроса с from_msc=2016.11.01 09:00:00.291. При этом на первый запрос был отдан 1 тик, на второй запрос - 2 тика (но никак не 30, как это выведено в журнал)

Хорошо, проверю свой код. К билду 1470 какие-то изменения в CopyTicks() есть? Если да, то определить их можно на текущей версии серверов брокера (Открытие/БКС) или изменения также и ее затрагивают?
 
ivanivan_11:

билд 1470. проблема сохранилась

https://www.mql5.com/ru/forum/160809/page3#comment_3834143

Можете поделиться ex5-файлом? Интересно было бы воспроизвести
 
Slawa:
Можете поделиться ex5-файлом? Интересно было бы воспроизвести
1 раз при тестировании видел,сразу написал. 15 мин он пытался тестировать с выводом сообщений про олд тикс,как я как показывал выше. затем еще 1 раз видел такое сообщение,но без зацикливания,т.е. просто проскочила такая строчка, и дальше тест прошел без проблем. я пытался затем при тех же параметрах воспроизвести, больше олд тикс не появлялись пока. код тот уже был переделан.
 
Slawa:

Проверьте, пожалуйста, индикатор на предмет зацикленной инициализации.

1. Скомпилируйте;

2. Запустите на тест ранее сегодняшней даны по реальным тикам. РТС-12.16 М1;

3. В эксперте поставьте дату, равную установленной для начала тестирования;

Получаю в тестере зацикленную инициализацию, т.е. OnInit() вызывается много раз. Также пишет, что дата, установленная в настройках = дате компиляции, а не дате, установленной в настройках. 

Проверял на 1455 билде. х64. 

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