Sergey Gridnev #: Какой же это косяк, когда именно такой результат от него ожидается?
Это GetMicrosecondCount() возвращает значения от старта эксперта.
оптимизатор(и тестер) делает виртуальное окружение.Как-будто бы софт только-что запущен очень давно. И подаёт котировки/эвенты на вход как новое.
GetTickCount, GetMicrosecondCount должны соответствовать. Экземпляры запускаются в разных агентах. Поэтому на вхоже OnInit в оптимизации должны быть идентичны. Иначе косяк.
и тут просто философски-технический вопрос - для многих алгоритмов необходим рандом, вне зависимости от проходов, виртуального или реального времени, момента запуска MT, он должен остаться случайным.
иначе алгоритмы а-ля Монте-Карло покажут дырку от бублика а не результат "оптимизаций"
оптимизатор(и тестер) делает виртуальное окружение.Как-будто бы софт только-что запущен очень давно. И подаёт котировки/эвенты на вход как новое.
GetTickCount, GetMicrosecondCount должны соответствовать. Экземпляры запускаются в разных агентах. Поэтому на вхоже OnInit в оптимизации должны быть идентичны. Иначе косяк.
и тут просто философски-технический вопрос - для многих алгоритмов необходим рандом, вне зависимости от проходов, виртуального или реального времени, момента запуска MT, он должен остаться случайным.
иначе алгоритмы а-ля Монте-Карло покажут дырку от бублика а не результат "оптимизаций"
Если всё так плохо, можно попробовать снять значение счётчика микросекунд в миллисекундном либо в секундном таймере. Микросекунды должны "плавать".
Потребовалась функция ГСЧ с гнерацией числа Int от 0 до любого значения. Получилась такая функция. Думаю распределение получилось равномерным. int RandomInteger(int max_vl){return
Как накосячили ?
void OnInit() {
tick=GetTickCount(); // должен давать близкие (вообще идентичные) значения в проходах оптимизатора.
}
вот если он сильно разный и действительно в оптимизаторе показывает "кол-во тиков (мсек) со старта запустившей программы" - вот это будет косяк.
Какой же это косяк, когда именно такой результат от него ожидается?
оптимизатор(и тестер) делает виртуальное окружение.Как-будто бы софт только-что запущен очень давно. И подаёт котировки/эвенты на вход как новое.
GetTickCount, GetMicrosecondCount должны соответствовать. Экземпляры запускаются в разных агентах. Поэтому на вхоже OnInit в оптимизации должны быть идентичны. Иначе косяк.
и тут просто философски-технический вопрос - для многих алгоритмов необходим рандом, вне зависимости от проходов, виртуального или реального времени, момента запуска MT, он должен остаться случайным.
иначе алгоритмы а-ля Монте-Карло покажут дырку от бублика а не результат "оптимизаций"
оптимизатор(и тестер) делает виртуальное окружение.Как-будто бы софт только-что запущен очень давно. И подаёт котировки/эвенты на вход как новое.
GetTickCount, GetMicrosecondCount должны соответствовать. Экземпляры запускаются в разных агентах. Поэтому на вхоже OnInit в оптимизации должны быть идентичны. Иначе косяк.
и тут просто философски-технический вопрос - для многих алгоритмов необходим рандом, вне зависимости от проходов, виртуального или реального времени, момента запуска MT, он должен остаться случайным.
иначе алгоритмы а-ля Монте-Карло покажут дырку от бублика а не результат "оптимизаций"
Посмотрите мои эксперименты https://www.mql5.com/ru/blogs/post/735953