Expert Advisors: MQL5 Programming for Traders – Quellcodes aus dem Buch. Teil 7 - Seite 5

 
thelux9 #:

Das ist genau das, was ich brauchte.

Bitte vergewissern Sie sich, dass Sie das neueste Update erhalten haben, denn Sie haben nicht das neueste, das in diesem Thread veröffentlicht wurde, zitiert.

 
Bitte reparieren Sie das.
//+------------------------------------------------------------------+
//| Hauptklasse zum Lesen von opt-Dateien und Exportieren in CSV-Dateien
//+------------------------------------------------------------------+
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]; // kann den Parameter 'TestCacheInput' nicht in 'const TestCacheInputExtended&' umwandeln
            inputs[i].extend();
         }
      }


//+------------------------------------------------------------------+
//| Eingabe-Struktur mit stringifizierten Feldern |
//+------------------------------------------------------------------+
struct TestCacheInputExtended: public TestCacheInput
{
   using TestCacheInput::operator=;
 
fxsaber #:
Bitte reparieren Sie das.


Ich danke Ihnen. Ich habe es ein bisschen anders gelöst.

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

Es ist bequemer und logischer, weil extend() nicht mehr explizit aufgerufen werden muss.

NB: Die beigefügte Datei enthält weitere nützliche Änderungen.

Dateien:
OptReader.mqh  24 kb
 
Stanislav Korotky #:

Ich danke Ihnen. Ich habe es ein bisschen anders gemacht.

Es ist bequemer und logischer, weil extend() nicht mehr explizit aufgerufen werden muss.

NB: Die beigefügte Datei enthält weitere nützliche Änderungen.

Danke, jetzt ist es noch praktischer.
 

Weitergeleitet von einem anderen Thema:

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

CalendarRecordById.mq5 - Fehler

Ryan L Johnson, 2025.12.19 17:44

@MetaQuotes Support, der oben erwähnte Kalenderindikator, der im MQL5 Book veröffentlicht wurde, scheint veralteten Code zu enthalten.

Die Datei wird unter Reading event records by ID - Advanced language tools - MQL5 Programming for Traders referenziert.

Die Datei selbst befindet sich unter: https: //www.mql5.com/en/code/download/45596/CalendarRecordById.mq5.

Natürlich müssen Sie die enthaltenen Bibliotheksdateien herunterladen, um die Probleme zu reproduzieren.

Fehler

Ich persönlich habe eine Umgehung verwendet, um das zu bekommen, was ich in meinem Code brauche. Ich möchte damit sicherstellen, dass die Dokumentation auf dem neuesten Stand ist.


 
Ryan L Johnson #:

Weitergeleitet von einem anderen Thema:

Natürlich ändert sich MQL5 ständig, und leider tut MQ dies auf eine Art und Weise, die oft die Rückkompatibilität bricht. Ich glaube nicht, dass dies ein angemessener Weg ist, die Plattform zu verbessern, aber wie auch immer - das einzige, was wir tun können, ist, die Probleme durch Patches zu beheben, entsprechend der neuen Syntax. Fügen Sie zum Beispiel in diesem Fall einfach die einzelne Zeile hinzu:

struct MqlCalendarRecord: public MqlCalendarValue
{
   using MqlCalendarValue::operator=;
   ...
};
Folgen Sie einfach den offiziellen Nachrichten über die Änderungen in der MQL5-Syntax.