Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вы попробовали, определили ошибку?
Да. В тестере в некоторых случаях отдавались тики с запросом ненулевого 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 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, как это выведено в журнал)
Да. В тестере в некоторых случаях отдавались тики с запросом ненулевого 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 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. проблема сохранилась
https://www.mql5.com/ru/forum/160809/page3#comment_3834143
Можете поделиться ex5-файлом? Интересно было бы воспроизвести
Проверьте, пожалуйста, индикатор на предмет зацикленной инициализации.
1. Скомпилируйте;
2. Запустите на тест ранее сегодняшней даны по реальным тикам. РТС-12.16 М1;
3. В эксперте поставьте дату, равную установленной для начала тестирования;
Получаю в тестере зацикленную инициализацию, т.е. OnInit() вызывается много раз. Также пишет, что дата, установленная в настройках = дате компиляции, а не дате, установленной в настройках.
Проверял на 1455 билде. х64.