Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5 - страница 111

 
Aleksei Stepanenko:

Немного поспешил радоваться :)

Функция ObjectFind теперь работает быстрее, но всё равно значительно медленнее, чем до 1968

Сейчас в четвёрке время выполнения 0.

и функции ObjectGetInteger и ObjectGetString стали "поджирать" время

Пофиксили в 1972:

test (EURUSD,H1)        Время выполнения: 593
 
Renat Fatkhullin:
Нашли проблему, пофиксим.

Отлично. А это воспроизвели? Отладку делать не получается.

 
fxsaber:

Советник (только выставляет в OnInit заданное (Amount) количество позиций)


Amount = 0

2019.01.15 23:34:23.184 Core 1  pass 0 returned result 10764.00 in 0:00:10.951
2019.01.15 23:34:23.184 Core 1  pass 1 started
2019.01.15 23:34:27.696 Core 1  pass 1 returned result 4462.00 in 0:00:04.509
2019.01.15 23:34:27.696 Core 1  pass 2 started
2019.01.15 23:34:31.823 Core 1  pass 2 returned result 4088.00 in 0:00:04.119
2019.01.15 23:34:31.823 Core 1  pass 3 started
2019.01.15 23:34:37.633 Core 1  pass 3 returned result 5725.00 in 0:00:05.803
2019.01.15 23:34:37.633 Core 1  pass 4 started
2019.01.15 23:34:41.550 Core 1  pass 4 returned result 3868.00 in 0:00:03.916
2019.01.15 23:34:41.550 Tester  optimization finished, total passes 5
2019.01.15 23:34:41.560 Statistics      optimization done in 0 minutes 30 seconds
2019.01.15 23:34:41.560 Statistics      shortest pass 0:00:03.916, longest pass 0:00:10.951, average pass 0:00:05.859
2019.01.15 23:34:41.560 Statistics      local 5 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

Amount = 1

2019.01.15 23:20:59.851 Core 1  pass 0 returned result 15959.00 in 0:00:16.068
2019.01.15 23:20:59.851 Core 1  pass 1 started
2019.01.15 23:21:11.453 Core 1  pass 1 returned result 11559.00 in 0:00:11.606
2019.01.15 23:21:11.453 Core 1  pass 2 started
2019.01.15 23:21:22.423 Core 1  pass 2 returned result 10935.00 in 0:00:10.967
2019.01.15 23:21:22.423 Core 1  pass 3 started
2019.01.15 23:21:33.993 Core 1  pass 3 returned result 11513.00 in 0:00:11.560
2019.01.15 23:21:33.993 Core 1  pass 4 started
2019.01.15 23:21:45.126 Core 1  pass 4 returned result 11091.00 in 0:00:11.122
2019.01.15 23:21:45.127 Tester  optimization finished, total passes 5
2019.01.15 23:21:45.137 Statistics      optimization done in 1 minutes 02 seconds
2019.01.15 23:21:45.137 Statistics      shortest pass 0:00:10.967, longest pass 0:00:16.068, average pass 0:00:12.264
2019.01.15 23:21:45.137 Statistics      local 5 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

Amount = 5

2019.01.15 23:22:52.868 Core 1  pass 0 returned result 38595.00 in 0:00:38.766
2019.01.15 23:22:52.868 Core 1  pass 1 started
2019.01.15 23:23:34.517 Core 1  pass 1 returned result 41574.00 in 0:00:41.636
2019.01.15 23:23:34.517 Core 1  pass 2 started
2019.01.15 23:24:05.763 Core 1  pass 2 returned result 31153.00 in 0:00:31.231
2019.01.15 23:24:05.763 Core 1  pass 3 started
2019.01.15 23:24:34.933 Core 1  pass 3 returned result 29126.00 in 0:00:29.173
2019.01.15 23:24:34.933 Core 1  pass 4 started
2019.01.15 23:25:03.608 Core 1  pass 4 returned result 28627.00 in 0:00:28.673
2019.01.15 23:25:03.609 Tester  optimization finished, total passes 5
2019.01.15 23:25:03.619 Statistics      optimization done in 2 minutes 50 seconds
2019.01.15 23:25:03.619 Statistics      shortest pass 0:00:28.673, longest pass 0:00:41.636, average pass 0:00:33.895
2019.01.15 23:25:03.619 Statistics      local 5 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

Только один локальный Агент для замера использовался. Папка tester на виртуальном диске в ОЗУ. Режим по реальным тикам (Hedge), кастомный символ (чтобы кроссов избежать). Количество тиков


По логам видно, что 26.5 млн тиков "пустышка" проходит почти за 4 секунды. Быстро это или нет?


11 секунд для Amount = 1. И 28 секунд для Amount = 5. Такое замедление - нормально?


Дело в том, что сравнивал с другим "Тестером" и там такого сильного замедления не происходит. Подробности здесь.


ЗЫ Не могу понять, почему в Тестере такой сильный разброс по времени выполнения проходов. Почти в 1.5 раза.

Вот результаты на 1972 в режиме оптимизации со следующими настройками: начало темы тут


EURUSD,H1: 15 515 304 ticks, 4 663 bars generated

Windows 10 (build 17763) x64, IE 11, UAC, Intel Xeon  E5-2690 v3 @ 2.60GHz, Memory: 66635 / 98215 Mb


Amount 0

2019.01.16 22:08:25.667 Core 01 pass 0 returned result 1719.00 in 0:00:01.750
2019.01.16 22:08:25.668 Core 01 pass 1 returned result 1703.00 in 0:00:01.703
2019.01.16 22:08:25.668 Core 01 pass 2 returned result 1875.00 in 0:00:01.891
2019.01.16 22:08:25.668 Core 01 pass 3 returned result 1734.00 in 0:00:01.734
2019.01.16 22:08:25.668 Core 01 pass 4 returned result 1844.00 in 0:00:01.844
2019.01.16 22:08:25.668 Tester  optimization finished, total passes 5
2019.01.16 22:08:25.679 Statistics      optimization done in 0 minutes 09 seconds
2019.01.16 22:08:25.679 Statistics      shortest pass 0:00:01.703, longest pass 0:00:01.891, average pass 0:00:01.784

Amount 1

2019.01.16 22:11:40.131 Core 01 pass 0 returned result 2828.00 in 0:00:02.860
2019.01.16 22:11:40.131 Core 01 pass 1 returned result 2797.00 in 0:00:02.812
2019.01.16 22:11:40.131 Core 01 pass 2 returned result 2813.00 in 0:00:02.828
2019.01.16 22:11:40.131 Core 01 pass 3 returned result 2797.00 in 0:00:02.797
2019.01.16 22:11:42.962 Core 01 pass 4 returned result 2812.00 in 0:00:02.812
2019.01.16 22:11:42.962 Tester  optimization finished, total passes 5
2019.01.16 22:11:42.972 Statistics      optimization done in 0 minutes 14 seconds
2019.01.16 22:11:42.972 Statistics      shortest pass 0:00:02.797, longest pass 0:00:02.860, average pass 0:00:02.821

Amount 5

2019.01.16 22:12:47.545 Core 01 pass 0 returned result 5453.00 in 0:00:05.469
2019.01.16 22:12:47.545 Core 01 pass 1 returned result 5469.00 in 0:00:05.469
2019.01.16 22:12:58.470 Core 01 pass 2 returned result 5469.00 in 0:00:05.469
2019.01.16 22:12:58.470 Core 01 pass 3 returned result 5453.00 in 0:00:05.453
2019.01.16 22:13:03.929 Core 01 pass 4 returned result 5453.00 in 0:00:05.453
2019.01.16 22:13:03.929 Tester  optimization finished, total passes 5
2019.01.16 22:13:03.939 Statistics      optimization done in 0 minutes 27 seconds
2019.01.16 22:13:03.939 Statistics      shortest pass 0:00:05.453, longest pass 0:00:05.469, average pass 0:00:05.462

Выводы:

  1. время в проходах оптимизации стабильное, разброса нет
  2. увеличение затрат времени на фоновой просчет 0, 1, 5 открытых позиций разумное
 
fxsaber:

Отлично. А это воспроизвели? Отладку делать не получается.

Разберемся обязательно.
 
Renat Fatkhullin:

Вот результаты на 1972 в режиме оптимизации со следующими настройками: начало темы тут

  1. время в проходах оптимизации стабильное, разброса нет
Один Агент?
  1. увеличение затрат времени на фоновой просчет 0, 1, 5 открытых позиций разумное

Есть вариант с отложками.

 
fxsaber:
Один Агент?

Да. Core 01.

 
Как это объяснить?

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5

Renat Fatkhullin, 2019.01.16 21:18

2019.01.16 22:12:47.545 Core 01 pass 0 returned result 5453.00 in 0:00:05.469
2019.01.16 22:12:47.545 Core 01 pass 1 returned result 5469.00 in 0:00:05.469
2019.01.16 22:12:58.470 Core 01 pass 2 returned result 5469.00 in 0:00:05.469
2019.01.16 22:12:58.470 Core 01 pass 3 returned result 5453.00 in 0:00:05.453
2019.01.16 22:13:03.929 Core 01 pass 4 returned result 5453.00 in 0:00:05.453
2019.01.16 22:13:03.929 Tester  optimization finished, total passes 5
2019.01.16 22:13:03.939 Statistics      optimization done in 0 minutes 27 seconds
2019.01.16 22:13:03.939 Statistics      shortest pass 0:00:05.453, longest pass 0:00:05.469, average pass 0:00:05.462

Два последовательных пятисекундных прохода от одного Агента приходят в одно и то же время. OnTesterPass тормозит или особенности логирования?

 
Renat Fatkhullin:

Подскажите, как правильно воспроизвести отсутствие разброса? У меня не получается (Amount = 5)

2019.01.16 22:27:33.862 Core 1  pass 0 returned result 6084.00 in 0:00:06.317
2019.01.16 22:27:33.862 Core 1  pass 1 returned result 4867.00 in 0:00:04.867
2019.01.16 22:27:44.451 Core 1  pass 2 returned result 5039.00 in 0:00:05.039
2019.01.16 22:27:44.451 Core 1  pass 3 returned result 5554.00 in 0:00:05.554
2019.01.16 22:27:49.284 Core 1  pass 4 returned result 4836.00 in 0:00:04.836
2019.01.16 22:27:49.284 Tester  optimization finished, total passes 5
2019.01.16 22:27:49.294 Statistics      optimization done in 0 minutes 28 seconds
2019.01.16 22:27:49.294 Statistics      shortest pass 0:00:04.836, longest pass 0:00:06.317, average pass 0:00:05.322
2019.01.16 22:27:49.298 Statistics      local 5 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

Фоновые приложения?

 
fxsaber:
Как это объяснить?

Два последовательных пятисекундных прохода от одного Агента приходят в одно и то же время. OnTesterPass тормозит или особенности логирования?

Особенность логгирования пакетируемых данных.

Мы не шлем микропакеты в ответах агентов, а пакетируем их с нарезкой по времени.

 
fxsaber:

Подскажите, как правильно воспроизвести отсутствие разброса? У меня не получается (Amount = 5)

Фоновые приложения?

Чистота экспериментов сейчас сложно поддерживается.

Cx стейты надо отключать в биосе, чтобы процессор не игрался бустом частоты. Но и это не всегда помогает.

Processor states

The CPU power states C0–C3 are defined as follows:

    C0 is the operating state.
    C1 (often known as Halt) is a state where the processor is not executing instructions, but can return to an executing state essentially instantaneously. 
        All ACPI-conformant processors must support this power state. Some processors, such as the Pentium 4, also support an Enhanced C1 state 
       (C1E or Enhanced Halt State) for lower power consumption.[25]
    C2 (often known as Stop-Clock) is a state where the processor maintains all software-visible state, but may take longer to wake up.
        This processor state is optional.
    C3 (often known as Sleep) is a state where the processor does not need to keep its cache coherent, but maintains other state. 
        Some processors have variations on the C3 state (Deep Sleep, Deeper Sleep, etc.) that differ in how long it takes to wake the processor.
        This processor state is optional.

    Additional states are defined by manufacturers for some processors. For example, Intel's Haswell platform has states up to C10, where 
    it distinguishes core states and package states.

Отключив C стейты, вы получите стабильную рабочую частоту и только тогда можно сказать, что первое условие для тестов производительности соблюдено:


В обычном случае у вас там плавающая частота, растущая с запозданием от появления реальной нагрузки. Это полностью убивает замеры.

Конечно, на ноутбуке нельзя отключать Cx стейты, иначе он от батареи работать будет очень мало.

Плюс конечно фоновая активность, включая антивирусы.