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

 
Vladislav Andruschenko:

не работает :-)

в тестере нет цен (профита) советник открывает сделку и получает всегда прибыль 0. 

По ссылке пройдите.

 

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

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

fxsaber, 2018.02.22 08:22

Давно отметил такое поведение MT5, но сейчас решил написать.

Работаю в ME и MT5+тестер. Иногда не подключиться к Агенту и требуется перезагрузка Терминала. К этому багу привык, поэтому речь не о нем.

Итак, закрываю Терминал, а в ME жму F4 - открыть Терминал. И вот здесь начинается какая-то ерунда.

ME несколько раз погружается в состояние "Не отвечает". Терминал не запускается. Через несколько секунд жму повторно F4 - реакция, как и до этого.

По итогу секунд через 20 (минимум) на не слабой машине (куча памяти, SSD, 95% CPU свободно) Терминал все же запускается.

Если сравнивать с MT4 - небо и земля. MT4 почти мгновенно запускается по F4 из ME. MT5 - как какое-то супер-сырое приложение стартует.

Ничего, кроме матов в адрес MT5, рядом со мной сейчас не услышать.

 
fxsaber:

Ничего, кроме матов в адрес MT5, рядом со мной сейчас не услышать.

Может на поведение мт 5 влияет что то извне ?

Фаервол, антивирус ? Иной анализатор софта ...

 
Vladimir Pastushak:

Может на поведение мт 5 влияет что то извне ?

Фаервол, антивирус ? Иной анализатор софта ...

Ничего не стоит из этого. На самом деле неадекватность MT5 стал встречать подозрительно часто. Видимо, критическая масса сложности продукта взяла верх над стабильностью.

Например, возьмите json-конфиг символа отсюда. И сделайте следующее

  1. Создайте символ на основе импорта конфига.
  2. Зайдите во вкладку баров и сделайте запрос - должно быть пусто и быстро отработать.
  3. Удалите символ.
  4. Вернитесь к первому пункту. Во втором при запросе увидите длительность его выполнения секунд в 5-10. Там, где нет ничего!

Много раз сталкиваюсь с "Не отвечает". Иногда приходится прибивать Терминал. После захода некоторые пользовательские символы исчезают. Весело, в общем.

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

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

fxsaber, 2017.12.26 15:33

Какие данные предоставить, чтобы победить это?
2017.12.26 16:29:42.588 Tester  register MQL5.community account and use MQL5 Cloud Network to speed up optimizations
2017.12.26 16:29:42.745 Tester  Experts\Examples\Moving Average\Moving Average.ex5 on EURUSD,H4 from 2017.01.01 00:00 to 2017.12.26 00:00
2017.12.26 16:29:42.745 Tester  EURUSD: history data begins from 2002.04.12 00:00
2017.12.26 16:29:42.745 Tester  complete optimization started
2017.12.26 16:29:42.745 Tester  size of initial task batch is 512
2017.12.26 16:29:42.795 Core 1  agent process started
2017.12.26 16:29:51.851 Core 1  connecting to 127.0.0.1:3000
2017.12.26 16:30:43.012 Tester  tester agent Core 1 cannot connect
2017.12.26 16:30:43.012 Core 1  connection closed

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

Новая версия платформы MetaTrader 5 build 1755

fxsaber, 2018.01.20 10:40

Этот баг когда будет побежден.

2018.01.20 11:38:31.470 Core 1  agent process started
2018.01.20 11:38:41.466 Core 1  connecting to 127.0.0.1:3000
2018.01.20 11:39:00.318 Core 1  tester agent authorization error

Невозможно нормально тестер использовать!

tester agent authorization error
tester agent authorization error
  • 2017.06.14
  • www.mql5.com
Задрала уже эта хрень! По несколько раз приходится тыкать, чтоб тестирование запустить! Как это лечить...
 
В Тестере выбран Moving Average, в исходниках которого первой строкой стоит
#property tester_file __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

Разве это правильно?

 

Терминал 1755

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

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

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

 
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" для получения суммы чисел. Абсурд, короче.

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