Советники: Программирование на MQL5 для трейдеров — исходные коды из книги. Часть 7 - страница 5

 
thelux9 #:

Это именно то, что мне было нужно.

Пожалуйста, убедитесь, что вы получили последнее обновление, потому что вы процитировали не самое последнее обновление, опубликованное в этой теме.

 
Просьба починить.
//+------------------------------------------------------------------+
//| Main class to read opt-file and export it to CSVs                |
//+------------------------------------------------------------------+
class OptReader
{
   TesterOptCacheHeader header;
   TestCacheInputExtended inputs[];
   uchar bufferOfInputs[];
   int shapshot[];
   AutoPtr<RecordBase> records;
   
   bool read(const int handle)
   {
      SAFE(FileReadStruct(handle, header));
      if(header.parameters_total)
      {
         TestCacheInput temp[];
         SAFE(FileReadArray(handle, temp, 0, header.parameters_total));
         const int n = ArrayResize(inputs, header.parameters_total);
         for(int i = 0; i < n; ++i)
         {
            inputs[i] = temp[i]; // cannot convert parameter 'TestCacheInput' to 'const TestCacheInputExtended&'
            inputs[i].extend();
         }
      }


//+------------------------------------------------------------------+
//| Input struct with stringified fields                             |
//+------------------------------------------------------------------+
struct TestCacheInputExtended: public TestCacheInput
{
   using TestCacheInput::operator=;
 
fxsaber #:
Просьба починить.


Спасибо. Поправил немного по другому.

struct TestCacheInputExtended: public TestCacheInput
{
   ...   
   void operator=(const TestCacheInput &other)
   {
      TestCacheInput::operator=(other);
      extend();
   }
};

Так удобнее и логичнее, потому что extend() не надо явно вызывать.

NB: приложенный файл содержит прочие полезные правки.

Файлы:
OptReader.mqh  24 kb
 
Stanislav Korotky #:

Спасибо. Поправил немного по другому.

Так удобнее и логичнее, потому что extend() не надо явно вызывать.

NB: приложенный файл содержит прочие полезные правки.

Спасибо, теперь еще и практичнее.
 

Перенесено из другой темы:

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

CalendarRecordById.mq5 - Ошибки

Ryan L Johnson, 2025.12.19 17:44

@MetaQuotes Support, вышеупомянутый индикатор календаря, опубликованный в материалах MQL5 Book, похоже, содержит устаревший код.

Ссылка на файл находится по адресу: Чтение записей событий по ID - Расширенные инструменты языка - Программирование на MQL5 для трейдеров.

Сам файл находится по адресу: https: //www.mql5.com/en/code/download/45596/CalendarRecordById.mq5.

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

ошибки

Лично я использовал обходной путь, чтобы получить то, что мне нужно в моем коде. Моя цель - убедиться, что документация поддерживается в актуальном состоянии.


 
Ryan L Johnson #:

Перенесено из другой темы:

Конечно, MQL5 постоянно меняется, и, к сожалению, MQ делает это таким образом, что часто нарушает обратную совместимость. Я не думаю, что это правильный способ улучшения платформы, но в любом случае - единственное, что мы можем сделать - это исправить проблемы патчами, в соответствии с новым синтаксисом. Например, в этом случае просто добавьте одну строчку:

struct MqlCalendarRecord: public MqlCalendarValue
{
   using MqlCalendarValue::operator=;
   ...
};
Просто следите за официальными новостями об изменениях в синтаксисе MQL5.