Sistemi Esperti: MQL5 Programming for Traders – Source Codes from the Book. Parte 7 - pagina 5

 
thelux9 #:

È esattamente ciò di cui avevo bisogno.

Per favore, assicuratevi di aver ricevuto l'ultimo aggiornamento, perché non avete citato il più recente pubblicato su questo thread.

 
Per favore, correggetelo.
//+------------------------------------------------------------------+
//| Classe principale per leggere il file opt e esportarlo in CSV.
//+------------------------------------------------------------------+
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]; // non è possibile convertire il parametro 'TestCacheInput' in 'const TestCacheInputExtended&'.
            inputs[i].extend();
         }
      }


//+------------------------------------------------------------------+
//| Struttura di input con campi stringati |
//+------------------------------------------------------------------+
struct TestCacheInputExtended: public TestCacheInput
{
   using TestCacheInput::operator=;
 
fxsaber #:
Per favore, correggetelo.


Grazie. L'ho sistemato in modo un po' diverso.

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

È più comodo e logico, perché extend() non deve essere chiamato esplicitamente.

NB: il file allegato contiene altre utili modifiche.

File:
OptReader.mqh  24 kb
 
Stanislav Korotky #:

Grazie. L'ho sistemato in modo leggermente diverso.

È più comodo e logico, perché extend() non deve essere chiamato esplicitamente.

NB: il file allegato contiene altre utili modifiche.

Grazie, ora è ancora più pratico.
 

Inoltrato da un altro topic:

Forum sul trading, sui sistemi di trading automatico e sul test delle strategie di trading

CalendarRecordById.mq5 - Errori

Ryan L Johnson, 2025.12.19 17:44

Supporto @MetaQuotes, l'indicatore di calendario di cui sopra pubblicato nel contenuto del libro MQL5 sembra contenere codice deprecato.

Il file si trova all'indirizzo Lettura di record di eventi per ID - Strumenti linguistici avanzati - Programmazione MQL5 per trader.

Il file stesso si trova all'indirizzo: https: //www.mql5.com/en/code/download/45596/CalendarRecordById.mq5.

Naturalmente, per riprodurre i problemi è necessario scaricare i file di libreria inclusi.

errori

Personalmente, ho utilizzato un workaround per ottenere ciò che mi serve nel mio codice. Il mio scopo è quello di garantire che la documentazione sia aggiornata.


 
Ryan L Johnson #:

Inoltrato da un altro topic:

Naturalmente, MQL5 è in continua evoluzione e purtroppo MQ lo fa in un modo che spesso rompe la retrocompatibilità. Non credo che questo sia un modo corretto di migliorare la piattaforma, ma in ogni caso l'unica cosa che possiamo fare è risolvere i problemi con delle patch, in base alla nuova sintassi. Per esempio, in questo caso basta aggiungere una singola riga:

struct MqlCalendarRecord: public MqlCalendarValue
{
   using MqlCalendarValue::operator=;
   ...
};
Seguite le notizie ufficiali sulle modifiche alla sintassi di MQL5.