Ошибки, баги, вопросы - страница 2150

 
Vladislav Andruschenko:

Терминал 1755

При работе с экспертом и компиляции - его обновленная версия появляется на графике - все ок

но в тестере я выбираю этого эксперта и после компиляции выбирается другой (прошлый) эксперт.

После перезапуска - все нормально. 

Древняя проблема.

 

Несколько tester_file-багов. Воспроизведение по шагам

  1. Оставить один работающий локальный Агент и почистить Песочницу Терминала - MQL5\Files\*.*
  2. Скомпилировать советник
    #property tester_file __FILE__
    
    sinput uint Range = 100; // Входной параметр для Оптимизации
    
    #define SETRANGE(A, START, STEP, END) ParameterSetRange(#A, true, A, START, STEP, END)
    
    void OnTesterInit()
    {
      SETRANGE(Range, 0, 1, Range);
      
      const int handle = FileOpen(__FILE__, FILE_WRITE | FILE_BIN );
      
      // Создаем файл на 4 байта
      if (handle != INVALID_HANDLE)
      {
        FileWriteInteger(handle, 0);
        
        FileClose(handle);
      }
    }
    
    void OnTesterDeinit() { ChartClose(); }
    
    #define TOSTRING(A) #A + " = " + (string)(A) + " "
    
    void OnTesterPass()
    {
      ulong Pass;
      string Name;
      long ID;
      double dOnTester;
      uchar Data[];
    
      while (FrameNext(Pass, Name, ID, dOnTester, Data))
        Print(TOSTRING(Pass) + TOSTRING(ID)); // Распечатываем размер файла на Агенте
    
      return;
    }
    
    double OnTester()
    {
      const int handle = FileOpen(__FILE__, FILE_READ | FILE_WRITE | FILE_BIN );
    
      const int i = (int)((handle != INVALID_HANDLE) ? FileSize(handle) : -1);
      
      // Делаем файл 4 байта, делаем - 8.
      if ((handle != INVALID_HANDLE) && (FileSize(handle) == INT_VALUE))
      {
        FileSeek(handle, 0, SEEK_END);
        FileWriteInteger(handle, 0);
              
        FileClose(handle);
      }
    
      uchar Data[];    
      FrameAdd(NULL, i, 0, Data); // Передаем размер файла до изменений.
      
      return(0);
    }

  3. При этом в логах Тестера появится сообщение, что tester_file еще не существует
    2018.02.28 08:37:29.574 Moving Average  tester_file 'Moving Average.mq5' is not exist
    2018.02.28 08:37:29.574 Moving Average  tester_file 'Moving Average.mq5' is not exist

  4. Запустить по ценам открытия советник в Тестере в режиме Оптимизации полного перебора. Получим в логе Тестера
    2018.02.28 21:20:24.424 Statistics      optimization done in 0 minutes 03 seconds
    2018.02.28 21:20:24.424 Statistics      local 101 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

  5. Сразу повторно запустить эту же Оптимизацию, нажав "Старт". Мы получим замедление Оптимизации в 30 раз - баг!
    2018.02.28 21:23:02.219 Statistics      optimization done in 1 minutes 06 seconds
    2018.02.28 21:23:02.219 Statistics      local 101 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)


  6. Результаты Frame-советника будут показывать, что имеющийся файл не передается, т.к. компиляция происходила без него (см. п.3). Баг или фича?
  7. Перекомпилировать советник. При этом мы не получим сообщений, что указаны в п.3. Что есть правильно.
  8. Запустить Оптимизацию. Frame-советник покажет, что tester_file передался на Агента
    2018.02.28 21:28:33.449 Moving Average (EURUSD,M1)      Pass = 0 ID = 4 
    2018.02.28 21:28:33.472 Moving Average (EURUSD,M1)      Pass = 1 ID = 8 
    2018.02.28 21:28:33.495 Moving Average (EURUSD,M1)      Pass = 2 ID = 8 
    2018.02.28 21:28:33.519 Moving Average (EURUSD,M1)      Pass = 3 ID = 8 

  9. Запустить повторную Оптимизацию. Получим замедление, как в п.4. Но еще во Frame-режиме увидим, что tester_file не передался на втором запуске Оптимизатора - баг!
    2018.02.28 21:28:43.727 Moving Average (EURUSD,M1)      Pass = 0 ID = 8 
    2018.02.28 21:28:43.797 Moving Average (EURUSD,M1)      Pass = 1 ID = 8 
    2018.02.28 21:28:43.834 Moving Average (EURUSD,M1)      Pass = 2 ID = 8 
    2018.02.28 21:28:43.864 Moving Average (EURUSD,M1)      Pass = 3 ID = 8 


  10. Запускаем третью Оптимизацию, получая результат, что в п.8.
  11. Четвертую - получаем, что в п.9.
  12. Итак каждый нечетный запуск Оптимизации дает результат из п.8, четная - п.9. Что, конечно, есть баг!

Что делает советник. Во фрейм-режиме в OnTesterInit он создает файл 4 байта и передает его через tester_file-механизм на Агента. Агент открывает его и если видит, что его размер 4 байта, дописывает его до 8-ми байт. Сам Агент через фрейм передает исходный размер файла в байтах. Тем самым проверяется, что файл передан на первом проходе Оптимизатора, а остальные проходы работают уже с тем файлом, что временно лежит в Песочнице самого Агента.

В общем, несколько багов получилось воспроизвести.

 

может этот вопрос уже был, но все же:

можно в MQL5 вызвать окно параметров индикатора?

 

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

Обсуждение статьи "Кроссплатформенный торговый советник: Введение"

fxsaber, 2016.08.17 16:51

Резанул пример со StringConcatenate. Сложно понять людей, которые пользуются в MT4/5 этой функцией. Мало того, что это громоздко, так это еще и не наглядно. Объединение строк ВСЕГДА достигалось в обеих платформах через оператор +.  Поэтому использование для строк StringConcatenate сравнимо с использованием функции "NumberSummary" для получения суммы чисел. Абсурд, короче.

Мало того, что абсурдная, так еще и не кроссплатформенная.

 
Andrii Djola:

может этот вопрос уже был, но все же:

можно в MQL5 вызвать окно параметров индикатора?

На сколько известно, в MQL нет такого функционала.
Но через WinAPI можно открыть список всех индикаторов, перебрать дерево индикаторов и найти нужный...

 
Andrii Djola:

может этот вопрос уже был, но все же:

можно в MQL5 вызвать окно параметров индикатора?

В сервис-деске обещали подумать над такой функцией.

 

Почему возникает такое?

2018.03.01 06:54:04.342 Tester debug version of "MQL5\Experts\МойЕксперт.ex5" can be optimized on local agents only, no Cloud, no Farm

Как исправить?


 
Nexxtor:

Почему возникает такое?

2018.03.01 06:54:04.342 Tester debug version of "MQL5\Experts\МойЕксперт.ex5" can be optimized on local agents only, no Cloud, no Farm

Как исправить?


Скомпилировать сначала, потом уже запускать оптимизацию.

 
В папке "Bases\MetaQuotes-Demo\history\" появилась папка с 2018.hcc, относящаяся к кастомному символу. Баг.
 

В продолжение этой замечательной особенности Тестера. Запускаю Оптимизацию, получаую такое


Лог Core1

KE      0       14:23:25.855    Startup MetaTester 5 x64 build 1755 (18 Jan 2018)
KP      0       14:23:25.862    Server  MetaTester 5 started on 127.0.0.1:3000
OJ      0       14:23:25.862    Startup initialization finished
JQ      0       14:23:25.871    127.0.0.1       login (build 1755)
HG      0       14:23:38.760    Network 38520 bytes of account info loaded
JP      0       14:23:38.760    Network 1482 bytes of tester parameters loaded
QG      0       14:23:38.760    Network 2236 bytes of input parameters loaded
OP      0       14:23:38.771    Network 4605 bytes of symbols list loaded
NK      0       14:23:38.771    Tester  expert file added: Experts\fxsaber\Test.ex5. 115516 bytes loaded
NM      0       14:23:38.771    Network 1368 bytes of optimized inputs info loaded
CH      0       14:23:38.774    Tester  successfully initialized
HL      0       14:23:38.774    Network 118 Kb of total initialization data received
JF      0       14:23:38.775    Tester  Intel Core i7-2700K  @ 3.50GHz, 16301 MB
KL      0       14:23:38.775    Tester  optimization pass 0 started (batch of 30 tasks)


Лог Core2

CQ      0       14:25:27.983    Startup MetaTester 5 x64 build 1755 (18 Jan 2018)
MD      0       14:25:27.988    Server  MetaTester 5 started on 127.0.0.1:3001
FO      0       14:25:27.989    Startup initialization finished
FM      0       14:25:29.021    127.0.0.1       login (build 1755)
HK      0       14:25:29.026    Network 38520 bytes of account info loaded
IL      0       14:25:29.026    Network 1482 bytes of tester parameters loaded
RK      0       14:25:29.026    Network 2236 bytes of input parameters loaded
QL      0       14:25:29.029    Network 4605 bytes of symbols list loaded
PG      0       14:25:29.030    Tester  expert file added: Experts\fxsaber\Test.ex5. 115516 bytes loaded
DI      0       14:25:29.030    Network 1368 bytes of optimized inputs info loaded
HL      0       14:25:29.032    Tester  successfully initialized
GP      0       14:25:29.032    Network 118 Kb of total initialization data received
JR      0       14:25:29.032    Tester  Intel Core i7-2700K  @ 3.50GHz, 16301 MB
KI      0       14:25:29.033    Tester  optimization pass 180 started (batch of 30 tasks)


Все Агенты перед стартом были Ready. Визуализатора не было. Core2 (и Core2 - см. скрин) запустился аж через две минуты после старта. Давайте решать проблему!

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