Новая версия платформы MetaTrader 5 build 4260: общие улучшения - страница 12

 
traveller00 #:

1. Параметр оптимизировался от 1 до 100 с шагом 1. Оптимизация закончилась. Оставляю всё тоже самое, но выбираю от 1 до 10 с шагом 1, жму Старт. В принципе параметры изменились, и логично, что оптимизация идёт заново. Но ведь можно было и не начинать, а взять из старой.

Архитектурно сделано так, что создается тестерный хэш из хэша советника и параметров Тестера. Этот хэш файл прописывается в названии opt-файла. Поэтому при нажатии на Старт Тестер проверяет наличие этого файла по названию. Есть - берет данные оттуда, нет - заново считает.


Для реализации логичного поведения в п.1. нужно бежать по всем opt-файлам и проверять их содержимое. Это очень дорого. И почти всегда нецелесообразно.

2. Остановил оптимизацию посреди дела. Исправил советник и пересобрал. Нажал снова Старт - оптимизация продолжила. Почему? Советник же поменялся.

3. При попытке показать результаты в 3Д, краш терминала. Не знаю, мне "повезло" или это часть вообще отвалилась.

Оба поведения - баг.

 
b4274, необъяснимые записи в журнале ME.

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

Ошибки, баги, вопросы

fxsaber, 2024.01.28 15:21

Иногда в журнале ME вижу такое.
MQL5 debugger   array range 2 is too large (2682258448)
Что это?
 

b4274, при запрете использования DLL в Тестере зависает Оптимизация, если в советнике есть вызов DLL.

#include <WinAPI\WinAPI.mqh>

input int inRange = 0;

void OnInit()
{
  user32::GetDlgItem(0, 0);
}

При этом еще количество заданий (выбран полный перебор) на Агента выдается непонятное.

Строка для поискаOshibka 108.

 
b4274, MQL_OPTIMIZATION может выдавать true в одиночных прогонах.
input int inRange = 0;

bool Func()
{
  if (MQLInfoInteger(MQL_OPTIMIZATION))
    ExpertRemove(); // https://www.mql5.com/ru/forum/1111/page2310#comment_9017409
  
  return(true);
}

const bool Init = Func() && MQLInfoInteger(MQL_OPTIMIZATION);

double OnTester()
{
  Print(Init);
  
  return(0);
}


  1. Запустить оптимизацию этого советника.
  2. Запустить одиночный проход.

2024.04.11 16:15:49.545 Core 1  EURUSD : real ticks begin from 2024.04.10 00:00:00
2024.04.11 16:15:49.545 Core 1  2024.04.10 23:59:57   true
2024.04.11 16:15:49.545 Core 1  final balance 10000.00 pips
2024.04.11 16:15:49.545 Core 1  OnTester result 0


Следующие одиночные проходы будут выдавать верный результат.

2024.04.11 16:17:33.766 Core 1  EURUSD : real ticks begin from 2024.04.10 00:00:00
2024.04.11 16:17:33.766 Core 1  2024.04.10 23:59:57   false
2024.04.11 16:17:33.766 Core 1  final balance 10000.00 pips
2024.04.11 16:17:33.766 Core 1  OnTester result 0

Строка для поискаOshibka 109.

 
fxsaber #:
b4274, MQL_OPTIMIZATION может выдавать true в одиночных прогонах.


  1. Запустить оптимизацию этого советника.
  2. Запустить одиночный проход.


Следующие одиночные проходы будут выдавать верный результат.

Строка для поискаOshibka 109.

Не воспроизводится, b4274.

Но я заменил ExpertRemove() пустышкой.

2024.04.11 07:24:24.516 Tester  "advisorTest.ex5" 64 bit
2024.04.11 07:24:24.713 Tester  register MQL5.community account and use MQL5 Cloud Network to speed up optimizations
2024.04.11 07:24:24.735 Tester  Experts\advisorTest.ex5 on EURUSD,H1 from 2024.04.01 00:00 to 2024.04.10 00:00
2024.04.11 07:24:24.735 Tester  EURUSD: history data begins from 2022.06.03 00:00
2024.04.11 07:24:24.736 Tester  EURUSD: preliminary downloading of history ticks started, it may take quite a long time
2024.04.11 07:24:24.736 Tester  EURUSD: preliminary downloading of history ticks completed
2024.04.11 07:24:24.736 Tester  EURUSD: ticks data begins from 2024.04.01 00:00
2024.04.11 07:24:24.736 Tester  EURUSD: history data begins from 2022.06.03 00:00
2024.04.11 07:24:24.736 Tester  EURUSD: preliminary downloading of history ticks started, it may take quite a long time
2024.04.11 07:24:24.736 Tester  EURUSD: preliminary downloading of history ticks completed
2024.04.11 07:24:24.736 Tester  EURUSD: ticks data begins from 2024.04.01 00:00
2024.04.11 07:24:24.736 Tester  complete optimization started
2024.04.11 07:24:24.740 Core 1  agent process started on 127.0.0.1:3000
2024.04.11 07:24:24.744 Core 2  agent process started on 127.0.0.1:3001
2024.04.11 07:24:24.749 Core 3  agent process started on 127.0.0.1:3002
2024.04.11 07:24:24.754 Core 4  agent process started on 127.0.0.1:3003
2024.04.11 07:24:24.762 Core 5  agent process started on 127.0.0.1:3004
2024.04.11 07:24:24.773 Core 6  agent process started on 127.0.0.1:3005
2024.04.11 07:24:24.779 Core 7  agent process started on 127.0.0.1:3006
2024.04.11 07:24:24.792 Core 8  agent process started on 127.0.0.1:3007
2024.04.11 07:24:25.069 Core 2  connecting to 127.0.0.1:3001
2024.04.11 07:24:25.073 Core 2  connected
2024.04.11 07:24:25.079 Core 2  authorized (agent build 4274)
2024.04.11 07:24:25.081 Core 2  common synchronization completed
2024.04.11 07:24:25.095 Core 2  EURUSD: ticks synchronized already [43 bytes]
2024.04.11 07:24:25.101 Core 1  connecting to 127.0.0.1:3000
2024.04.11 07:24:25.105 Core 1  connected
2024.04.11 07:24:25.110 Core 1  authorized (agent build 4274)
2024.04.11 07:24:25.111 Core 5  connecting to 127.0.0.1:3004
2024.04.11 07:24:25.114 Core 5  connected
2024.04.11 07:24:25.118 Core 1  common synchronization completed
2024.04.11 07:24:25.121 Core 5  authorized (agent build 4274)
2024.04.11 07:24:25.125 Core 5  common synchronization completed
2024.04.11 07:24:25.133 Core 1  EURUSD: ticks synchronized already [43 bytes]
2024.04.11 07:24:25.137 Core 5  EURUSD: ticks synchronized already [43 bytes]
2024.04.11 07:24:25.180 Core 3  connecting to 127.0.0.1:3002
2024.04.11 07:24:25.183 Core 3  connected
2024.04.11 07:24:25.189 Core 3  authorized (agent build 4274)
2024.04.11 07:24:25.193 Core 3  common synchronization completed
2024.04.11 07:24:25.205 Core 3  EURUSD: ticks synchronized already [43 bytes]
2024.04.11 07:24:25.211 Core 4  connecting to 127.0.0.1:3003
2024.04.11 07:24:25.214 Core 4  connected
2024.04.11 07:24:25.220 Core 4  authorized (agent build 4274)
2024.04.11 07:24:25.223 Core 4  common synchronization completed
2024.04.11 07:24:25.234 Core 4  EURUSD: ticks synchronized already [43 bytes]
2024.04.11 07:24:25.242 Core 6  connecting to 127.0.0.1:3005
2024.04.11 07:24:25.246 Core 6  connected
2024.04.11 07:24:25.246 Core 8  connecting to 127.0.0.1:3007
2024.04.11 07:24:25.250 Core 8  connected
2024.04.11 07:24:25.253 Core 6  authorized (agent build 4274)
2024.04.11 07:24:25.257 Core 6  common synchronization completed
2024.04.11 07:24:25.258 Core 8  authorized (agent build 4274)
2024.04.11 07:24:25.262 Core 8  common synchronization completed
2024.04.11 07:24:25.268 Core 6  EURUSD: ticks synchronized already [43 bytes]
2024.04.11 07:24:25.272 Core 7  connecting to 127.0.0.1:3006
2024.04.11 07:24:25.273 Core 8  EURUSD: ticks synchronized already [43 bytes]
2024.04.11 07:24:25.276 Core 7  connected
2024.04.11 07:24:25.282 Core 7  authorized (agent build 4274)
2024.04.11 07:24:25.285 Core 7  common synchronization completed
2024.04.11 07:24:25.296 Core 7  EURUSD: ticks synchronized already [43 bytes]
2024.04.11 07:24:25.530 Tester  optimization finished, total passes 11
2024.04.11 07:24:25.541 Statistics      optimization done in 0 minutes 01 seconds
2024.04.11 07:24:25.541 Statistics      shortest pass 0:00:00.053, longest pass 0:00:00.280, average pass 0:00:00.201
2024.04.11 07:24:25.541 Statistics      local 11 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
2024.04.11 07:24:25.545 Tester  11 new records saved to cache file 'tester\cache\advisorTest.EURUSD.H1.20240401.20240410.40.E415F787BBBCE67C438526613B41CB4F.opt'
2024.04.11 07:24:25.545 Core 1  connection closed
2024.04.11 07:24:25.545 Core 2  connection closed
2024.04.11 07:24:25.546 Core 3  connection closed
2024.04.11 07:24:25.546 Core 4  connection closed
2024.04.11 07:24:25.546 Core 5  connection closed
2024.04.11 07:24:25.546 Core 6  connection closed
2024.04.11 07:24:25.546 Core 7  connection closed
2024.04.11 07:24:25.547 Core 8  connection closed
2024.04.11 07:25:25.612 Tester  "advisorTest.ex5" 64 bit
2024.04.11 07:25:25.816 Tester  EURUSD: history data begins from 2022.06.03 00:00
2024.04.11 07:25:25.816 Tester  EURUSD: ticks data begins from 2024.04.01 00:00
2024.04.11 07:25:25.816 Tester  EURUSD: history data begins from 2022.06.03 00:00
2024.04.11 07:25:25.816 Tester  EURUSD: ticks data begins from 2024.04.01 00:00
2024.04.11 07:25:25.816 Core 1  connecting to 127.0.0.1:3000
2024.04.11 07:25:25.819 Core 1  connected
2024.04.11 07:25:25.821 Core 1  authorized (agent build 4274)
2024.04.11 07:25:25.839 Tester  EURUSD,H1 (MetaQuotes-Demo): testing of Experts\advisorTest.ex5 from 2024.04.01 00:00 to 2024.04.10 00:00
2024.04.11 07:25:25.844 Core 1  common synchronization completed
2024.04.11 07:25:25.881 Core 1  1478 bytes of tester parameters loaded
2024.04.11 07:25:25.881 Core 1  708 bytes of input parameters loaded
2024.04.11 07:25:25.881 Core 1  11918 Mb available, 148 blocks set for ticks generating
2024.04.11 07:25:25.881 Core 1  initial deposit 10000.00 USD, leverage 1:100
2024.04.11 07:25:25.881 Core 1  successfully initialized
2024.04.11 07:25:25.881 Core 1  664 bytes of total initialization data received
2024.04.11 07:25:25.881 Core 1  Intel Core i7-7700  @ 3.60GHz, 16035 MB
2024.04.11 07:25:25.881 Core 1  EURUSD: symbol to be synchronized
2024.04.11 07:25:25.881 Core 1  EURUSD: symbol synchronized already, 18 bytes received
2024.04.11 07:25:25.881 Core 1  EURUSD,H1: history cached from 2023.01.02 07:00
2024.04.11 07:25:25.881 Core 1  EURUSD,H1 (MetaQuotes-Demo): generating based on real ticks
2024.04.11 07:25:25.881 Core 1  EURUSD,H1: testing of Experts\advisorTest.ex5 from 2024.04.01 00:00 to 2024.04.10 00:00 started with inputs:
2024.04.11 07:25:25.881 Core 1    inRange=0
2024.04.11 07:25:25.881 Core 1  EURUSD : real ticks begin from 2024.04.01 00:00:00
2024.04.11 07:25:25.881 Core 1  2024.04.09 23:59:55   Init = false
2024.04.11 07:25:25.881 Core 1  final balance 10000.00 USD
2024.04.11 07:25:25.881 Core 1  OnTester result 0
2024.04.11 07:25:25.881 Core 1  EURUSD,H1: 362076 ticks, 168 bars generated. Environment synchronized in 0:00:00.024. Test passed in 0:00:00.035.
2024.04.11 07:25:25.881 Core 1  EURUSD,H1: total time from login to stop testing 0:00:00.059 (including 0:00:00.024 for history data synchronization)
2024.04.11 07:25:25.881 Core 1  311 Mb memory used including 0.47 Mb of history data, 64 Mb of tick data
2024.04.11 07:25:25.881 Core 1  log file "20240411.log" written
2024.04.11 07:25:25.885 Core 1  connection closed
input int inRange = 0;

void temp() {}
#define ExpertRemove temp

bool Func()
{
  if (MQLInfoInteger(MQL_OPTIMIZATION))
    ExpertRemove();
  
  return(true);
}

const bool Init = Func() && MQLInfoInteger(MQL_OPTIMIZATION);

double OnTester()
{
  Print("Init = ", Init);
  
  return(0);
}
 
Vladislav Boyko #:

заменил ExpertRemove() пустышкой.

Зачем?

 
fxsaber #:

Зачем?

Не понял, для чего он нужен. Но судя по вашему ответу, он нужен для воспроизведения бага.

Вернул ExpertRemove, результат такой-же:

2024.04.11 07:45:44.461 Core 1  2024.04.09 23:59:55   Init = false

Файлы прикрепил.

Файлы:
20240411.log  16 kb
 
Vladislav Boyko #:

Вернул ExpertRemove, результат такой-же

Предполагаю, что зависит от конфигурации Агентов. Возможно, будет воспроизведение, если оставить включенным только один Агент, как на картинке.
 
fxsaber #:
Предполагаю, что зависит от конфигурации Агентов. Возможно, будет воспроизведение, если оставить включенным только один Агент, как на картинке.

Да, с одним агентом воспроизвел.

Файлы:
20240411.log  10 kb
 
Vladislav Boyko #:

Да, с одним агентом воспроизвел.

Трудноуловимый баг. С трудом выловил.

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