Especialistas: Programação no MQL5 para traders: códigos-fonte retirados do livro. Parte 7 - página 5

 
thelux9 #:

Isso é exatamente o que eu precisava.

Certifique-se de ter recebido a atualização mais recente, pois você citou não a mais recente publicada neste tópico.

 
Por favor, conserte isso.
//+------------------------------------------------------------------+
//| Classe principal para ler o opt-file e exportá-lo para 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]; // não é possível converter o parâmetro 'TestCacheInput' em 'const TestCacheInputExtended&'
            inputs[i].extend();
         }
      }


//+------------------------------------------------------------------+
//| Estrutura de entrada com campos em formato de string
//+------------------------------------------------------------------+
struct TestCacheInputExtended: public TestCacheInput
{
   using TestCacheInput::operator=;
 
fxsaber #:
Por favor, conserte isso.


Obrigado. Fiz a correção de forma um pouco diferente.

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

É mais conveniente e lógico, porque extend() não precisa ser chamado explicitamente.

NB: o arquivo anexado contém outras edições úteis.

Arquivos anexados:
OptReader.mqh  24 kb
 
Stanislav Korotky #:

Obrigado. Corrigi de forma um pouco diferente.

É mais conveniente e lógico, porque extend() não precisa ser chamado explicitamente.

NB: o arquivo anexado contém outras edições úteis.

Obrigado, agora está ainda mais prático.
 

Encaminhado de outro tópico:

Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação

CalendarRecordById.mq5 - Erros

Ryan L Johnson, 2025.12.19 17:44

@MetaQuotes Support, o indicador de calendário mencionado acima, publicado no conteúdo do livro MQL5, parece conter código obsoleto.

O arquivo é referenciado em Reading event records by ID - Advanced language tools - MQL5 Programming for Traders.

O arquivo, em si, está em: https: //www.mql5.com/en/code/download/45596/CalendarRecordById.mq5.

Obviamente, você precisará fazer o download dos arquivos de biblioteca incluídos para reproduzir os problemas.

erros

Pessoalmente, usei uma solução alternativa para obter o que preciso em meu código. Meu objetivo aqui é garantir que a documentação seja mantida atualizada.


 
Ryan L Johnson #:

Encaminhado de outro tópico:

É claro que o MQL5 está mudando constantemente e, infelizmente, o MQ faz isso de uma forma que muitas vezes quebra a compatibilidade com versões anteriores. Eu não acho que essa seja uma maneira adequada de melhorar a plataforma, mas de qualquer forma - a única coisa que podemos fazer é corrigir os problemas por meio de patches, de acordo com a nova sintaxe. Por exemplo, nesse caso, basta adicionar uma única linha:

struct MqlCalendarRecord: public MqlCalendarValue
{
   using MqlCalendarValue::operator=;
   ...
};
Basta seguir as notícias oficiais sobre as alterações na sintaxe MQL5.