На огромном файле начало появления старых тиков не смог посмотреть. Вот для примера начало появления старых тиков на коротком тесте с 2016-09-30 по 2016-01-02 (с пятницы до воскресенья):
23:10:00.896 Core 1 2016.09.30 20:55:32 order performed sell 0.01 at 1.12317 [#16 sell 0.01 EURUSD at 1.12317] - последняя пятничная сделка
23:10:00.896 Core 1 EURUSD : real ticks begin from 2016.09.01 00:00:00
23:10:00.896 Core 1 old tick EURUSD 2016.09.30 00:00:13 (2016.09.30 23:59:59) - системное сообщение о старом тике 2016.09.30 00:00:13
23:10:00.896 Core 1 old tick EURUSD 2016.09.30 00:00:31 (2016.09.30 23:59:59)
23:10:00.896 Core 1 old tick EURUSD 2016.09.30 00:00:32 (2016.09.30 23:59:59)
23:10:00.896 Core 1 old tick EURUSD 2016.09.30 00:00:32 (2016.09.30 23:59:59)
23:10:00.896 Core 1 old tick EURUSD 2016.09.30 00:00:33 (2016.09.30 23:59:59)
...................
23:10:09.757 Core 1 old tick EURUSD 2016.09.30 23:59:56 (2016.09.30 23:59:59)
23:10:09.757 Core 1 old tick EURUSD 2016.09.30 23:59:56 (2016.09.30 23:59:59)
23:10:09.757 Core 1 2016.09.30 23:59:59 position closed due end of test at 1.12434 [#12 sell 0.03 EURUSD 1.12156111]
23:10:09.757 Core 1 2016.09.30 23:59:59 deal #17 buy 0.03 EURUSD at 1.12434 done (based on order #17)
23:10:09.757 Core 1 2016.09.30 23:59:59 deal performed [#17 buy 0.03 EURUSD at 1.12434]
23:10:09.757 Core 1 2016.09.30 23:59:59 order performed buy 0.03 at 1.12434 [#17 buy 0.03 EURUSD at 1.12434]
Старых тиков приходит огромное количество, не исключено, что приходят абсолютно все тики второй раз, т.к. начинаются с 2016.09.30 00:00:13, т.е. с начала тестирования.
Для отлавливания старых тиков добавил такой код:
datetime last_tick_time=0;
void OnTick()
{
if(last_tick_time>TimeCurrent()){return;}//old tick - старый тик
last_tick_time=TimeCurrent();
.....
}
Надеялся, что if(last_tick_time>TimeCurrent()){return;} исправит ситуацию, но это не помогло, т.к. старые тики меняют цену в тестере, и завершающим трейдом становится закрытие позиции по неверной цене.
Система - Win7. MT5 - 1455. Ситуация наблюдалась и на др билдах и др. советнике. Но только сейчас разобрался и понял, что старые тики меняют результат тестирования и оптимизации.
У меня одного такое или у кого-то еще бывает?
Система - Win7. MT5 - 1455. Ситуация наблюдалась и на др билдах и др. советнике. Но только сейчас разобрался и понял, что старые тики меняют результат тестирования и оптимизации.
У меня одного такое или у кого-то еще бывает?
Система - Win7. MT5 - 1455. Ситуация наблюдалась и на др билдах и др. советнике. Но только сейчас разобрался и понял, что старые тики меняют результат тестирования и оптимизации.
У меня одного такое или у кого-то еще бывает?
У меня то же самое. Причем появилось недавно, на прошлой неделе. Оптимизирую постоянно на реальных тиках, с различными конечными датами и раньше никогда такого не было. Варианта два. Либо это что-то с базой тиков у Робофорекса, либо баг МТ5.
А если тестировать больше недели, на выходные реагирует? Я такого не замечал, правда и не ставил дату окончания на выходные. Напишите в сервисдек со скриншотами, логом и номером билда.
Реагирует на выходные при любом периоде тестирования. Я тоже специально не ставил конец тестирования на выходной, просто по привычке выставляю дату окончания тестирования "сегодня" и как-то занимаясь в выходные и попал на этот глюк.
У меня то же самое. Причем появилось недавно, на прошлой неделе. Оптимизирую постоянно на реальных тиках, с различными конечными датами и раньше никогда такого не было. Варианта два. Либо это что-то с базой тиков у Робофорекса, либо баг МТ5.
А если тестировать больше недели, на выходные реагирует?
Да. В первом примере тест за 2 месяца. Во втором за 2 дня. В обоих этот глюк.
Ситуацию наблюдаю с самого появления реальной тиковой истории в МТ5. Так что это не что-то новое... я тестирую на Ал...ри, итого по 2-м разным брокерам наблюдается - значит проблема в МТ5.
1. На каком торговом сервере наблюдается описанная проблема? Какой символ? Кроме EURUSD на каком-либо символе воспроизводится?
2. Битность тестера? x86/x64 или без разницы
3. Будут ли ошибки old tick, если тестировать "пустого" эксперта (не производящего торговых операций)?
4. Попробуйте стереть подпапку bases в папке тестера. Запустить тестирование.
5. Попробуйте стереть подпапку bases в папке тестера и подпапку bases\<имя торгового сервера>\ticks. Запустить терминал, запустить тестирование
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте,
заметил такую особенность нарушающую результаты тестов.
Если провести тестирование по реальным тикам и конечная дата тестирования попадает на воскресенье или понедельник (т.е. пытаемся тестировать в субботу или воскресенье), то после последнего пятничного тика появляются старые тики.
Вот как нарушаются результаты тестирования и оптимизации (оптимизация или тест с 2016-09-01 по 2016-10-31):
После последнего пятничного тика 2016-10-28 пошли старые тики, на рисунке это видно в конце как ровную линию баланса и прыгающий эквити. И в конце при завершении расчета происходит закрытие открытой позиции по цене случайного старого тика и убыточный результат теста становится прибыльным. (При последней пятничной сделке был убыток в $100, а старые тики подняли эквити на $200) В результате оптимизация получается неправильной.
Концовка лог файла из терминала (начала не могу увидеть, т.к. файл раздут до 2,3 Гг сообщениями о старых тиках, текстовые редакторы отказываются открывать такой файл)
2016.11.07 23:53:54 Core 1 old tick EURUSD 2016.10.04 23:59:59 (2016.10.28 23:59:59)
2016.11.07 23:53:54 Core 1 old tick EURUSD 2016.10.04 23:59:59 (2016.10.28 23:59:59)
2016.11.07 23:53:54 Core 1 2016.10.04 23:59:59 position closed due end of test at 1.12025 [#320 buy 0.08 EURUSD 1.09107947]
2016.11.07 23:53:54 Core 1 2016.10.04 23:59:59 deal #536 sell 0.08 EURUSD at 1.12025 done (based on order #536)
2016.11.07 23:53:54 Core 1 2016.10.04 23:59:59 deal performed [#536 sell 0.08 EURUSD at 1.12025]
2016.11.07 23:53:54 Core 1 2016.10.04 23:59:59 order performed sell 0.08 at 1.12025 [#536 sell 0.08 EURUSD at 1.12025]
....
2016.11.07 23:53:54 Core 1 final balance 1130.55 USD
Пишет, что последняя сделка была по цене от 2016.10.04 23:59:59 Close= 1.12025, но должно быть по цене от 2016.10.28 23:59:59 Close = 1,09822 . Отсюда и появились лишние $200.
Проблема решается установкой конца тестирования на любые кроме воскресенья или понедельника даты (чтобы не было прохода по субботе или воскресенью). Тест с 2016-09-01 по 2016-10-29 завершился нормально, без старых тиков.
2016.11.08 00:24:24.346 Core 1 2016.10.28 23:46:53 market sell 0.01 EURUSD (1.09864 / 1.09867 / 1.09864)
2016.11.08 00:24:24.346 Core 1 2016.10.28 23:46:53 deal #535 sell 0.01 EURUSD at 1.09864 done (based on order #535)
2016.11.08 00:24:24.346 Core 1 2016.10.28 23:46:53 deal performed [#535 sell 0.01 EURUSD at 1.09864]
2016.11.08 00:24:24.346 Core 1 2016.10.28 23:46:53 order performed sell 0.01 at 1.09864 [#535 sell 0.01 EURUSD at 1.09864]
2016.11.08 00:24:24.346 Core 1 2016.10.28 23:59:56 position closed due end of test at 1.09816 [#320 buy 0.08 EURUSD 1.09107947]
2016.11.08 00:24:24.346 Core 1 2016.10.28 23:59:56 deal #536 sell 0.08 EURUSD at 1.09816 done (based on order #536)
2016.11.08 00:24:24.346 Core 1 2016.10.28 23:59:56 deal performed [#536 sell 0.08 EURUSD at 1.09816]
2016.11.08 00:24:24.346 Core 1 2016.10.28 23:59:56 order performed sell 0.08 at 1.09816 [#536 sell 0.08 EURUSD at 1.09816]
2016.11.08 00:24:24.346 Core 1 final balance 953.83 USD