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

 
Slava:

Всегда надо дочитывать фреймы в OnTesterDeinit. Это как отче наш

Зачем?

Потом жалуются на пропажу фреймов

У меня ничего не пропадает.


mqd-файл отлично (без потерь) формируется даже таким советником

input int Range = 1; // 1..10

double OnTester()
{
  uchar Data[];
  
  FrameAdd(NULL, 0, 0, Data);
  
  return(0);
}


После чего читаю его через выложенную библу на раз-два.

 
fxsaber:

Зачем?

У меня ничего не пропадает.


mqd-файл отлично (без потерь) формируется даже таким советником


После чего читаю его через выложенную библу на раз-два.

Фреймы пропадают даже на быстрых математических вычислениях, если не дочитывать их после завершения оптимизации.

Сеть не идеальна
Распределенные вычисления в сети MQL5 Cloud Network
Распределенные вычисления в сети MQL5 Cloud Network
  • cloud.mql5.com
Большую часть времени современные компьютеры простаивают и не используют всех возможностей процессора. Мы предлагаем задействовать их с пользой. Вы можете сдавать мощности вашего компьютера другим участникам нашей сети для выполнения разнообразных...
 
Slava:

Фреймы пропадают даже на быстрых математических вычислениях, если не дочитывать их после завершения оптимизации.

Сеть не идеальна

Видимо, мои представления о фреймах ошибочны, раз кажется, что ерунду говорите.

Чтобы фреймы записывались, читать их не нужно. Расскажите тогда, как это устроено на самом деле. Через Облако не работал с фреймами.

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

 
fxsaber:

Видимо, мои представления о фреймах ошибочны, раз кажется, что ерунду говорите.

Чтобы фреймы записывались, читать их не нужно. Расскажите тогда, как это устроено на самом деле. Через Облако не работал с фреймами.

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

Всё правильно. Фрейм доступен при условии его добавки в mqd-файл. Именно оттуда он и вычитывается фреймовыми функциями

 
Slava:

Всё правильно. Фрейм доступен при условии его добавки в mqd-файл. Именно оттуда он и вычитывается фреймовыми функциями

Тогда, если правильно понимаю, тем, кто утверждает о потерях фреймов, стоит проверить их наличие в OnTesterDeinit.

У меня такой проблемы не было. Библиотеку писал для доступа к фреймам в обычном режиме советника в Терминале.


Не разобрался, за что отвечают последние 16 байтов.

struct FRAME
{
  ulong Pass;
  long ID;
  short String[64];
  double Value;
  int SizeOfArray;
  long Tmp[2];
 
Slava:

Всегда надо дочитывать фреймы в OnTesterDeinit. Это как отче наш

Потом жалуются на пропажу фреймов

Впервые слышу про этот "отче наш". Где об этом сказано?   Разве OnTesterDeinit не должен вызываться после получения всех фрэймов в терминал? Или он может перескакивать через другие события (в частности OnTesterPass), находящиеся в очереди событий?  Если так, то это следовало бы прописать в документации, ибо это нетипичное поведение.

Если же вы имеете ввиду принудительную остановку тестирования самим пользователем, то здесь о пропаже фрэймов вообще нет смысла говорить.

 
Alexey Navoykov:

Впервые слышу про этот "отче наш". Где об этом сказано?   Разве OnTesterDeinit не должен вызываться после получения всех фрэймов в терминал? Или он может перескакивать через другие события (в частности OnTesterPass), находящиеся в очереди событий?  Если так, то это следовало бы прописать в документации, ибо это нетипичное поведение.

Если же вы имеете ввиду принудительную остановку тестирования самим пользователем, то здесь о пропаже фрэймов вообще нет смысла говорить.

OnTesterPass может запросто вызваться по окончанию прохода, но к этому моменту фрейм-данные прохода могут не дойти из-за неидеальности сети.

Когда народ говорит, что фреймы теряются, он чаще всего имеет в виду, что в OnTesterPass не все получилось поймать.

Так вот дополучить можно всегда в OnTesterDeinit, т.к. Оптимизатор на стороне Терминала прекращает свою работу не тогда, когда Агенты все посчитали, а когда дождался прихода всех фреймов.

 
fxsaber:

OnTesterPass может запросто вызваться по окончанию прохода, но к этому моменту фрейм-данные прохода могут не дойти из-за неидеальности сети.

Т.е. OnTesterPass вызывается без наличия фрэймов?  Ну тогда это очевидная ошибка.  Данное событие означает получение фрэйма, а не окончание прохода.

Все фрэймы должны придти в OnTesterPass до того, как вызывать событие OnTesterDeinit. Это нормальная здоровая логика.   Если, повторюсь, речь не идёт о принудительном прерывании тестирования.

 
Alexey Navoykov:

Т.е. OnTesterPass вызывается без наличия фрэймов?  Ну тогда это очевидная ошибка.  Данное событие означает получение фрэйма, а не окончание прохода.

Все фрэймы должны придти в OnTesterPass до того, как вызывать событие OnTesterDeinit. Это нормальная здоровая логика.   Если, повторюсь, речь не идёт о принудительном прерывании тестирования.

Видимо, я ошибся. Думал, что TesterPass-событие - поступление данных прохода

Core 1  pass 0 returned result 100000.00 in 0:00:00.433
Core 1  pass 1 returned result 100000.00 in 0:00:00.001
Core 1  pass 2 returned result 100000.00 in 0:00:00.001
Core 1  pass 3 returned result 100000.00 in 0:00:00.001
 
Кто бы opt-формат вскрыл...
Причина обращения: