Experts: Programmation MQL5 pour les Traders - Codes Source du livre. Partie 7 - page 5

 
thelux9 #:

C'est exactement ce dont j'avais besoin.

S'il vous plaît, assurez-vous que vous avez obtenu la dernière mise à jour, parce que vous avez cité pas le plus récent publié sur ce fil.

 
S'il vous plaît, corrigez le problème.
//+------------------------------------------------------------------+
//| Classe principale pour lire le fichier opt et l'exporter au format 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]; // Impossible de convertir le paramètre 'TestCacheInput' en 'const TestCacheInputExtended&'
            inputs[i].extend();
         }
      }


//+------------------------------------------------------------------+
//| Input struct with stringified fields |
//+------------------------------------------------------------------+
struct TestCacheInputExtended: public TestCacheInput
{
   using TestCacheInput::operator=;
 
fxsaber #:
S'il vous plaît, corrigez le problème.


Je vous remercie. Je l'ai corrigé un peu différemment.

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

C'est plus pratique et plus logique, car extend() n'a pas besoin d'être appelé explicitement.

NB : le fichier joint contient d'autres modifications utiles.

Dossiers :
OptReader.mqh  24 kb
 
Stanislav Korotky #:

Merci. Je l'ai corrigé un peu différemment.

C'est plus pratique et plus logique, car extend() n'a pas besoin d'être appelé explicitement.

NB : le fichier joint contient d'autres modifications utiles.

Merci, maintenant c'est encore plus pratique.
 

Transféré d'un autre sujet :

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

CalendarRecordById.mq5 - Erreurs

Ryan L Johnson, 2025.12.19 17:44

@MetaQuotes Support, l'indicateur de calendrier référencé ci-dessus publié dans le contenu du MQL5 Book semble contenir du code obsolète.

Le fichier est référencé à Reading event records by ID - Advanced language tools - MQL5 Programming for Traders.

Le fichier lui-même se trouve à l'adresse suivante : https://www.mql5.com/fr/code/download/45596/CalendarRecordById.mq5.

Bien entendu, vous devrez télécharger les fichiers de la bibliothèque incluse pour reproduire les problèmes.

erreurs

Personnellement, j'ai utilisé une solution de contournement pour obtenir ce dont j'ai besoin dans mon code. Mon but ici est de m'assurer que la documentation est maintenue à jour.


 
Ryan L Johnson #:

Transmis depuis un autre sujet :

Bien sûr, MQL5 est en constante évolution, et malheureusement MQ le fait d'une manière qui brise souvent la rétro-compatibilité. Je ne pense pas que ce soit une bonne façon d'améliorer la plateforme, mais de toute façon, la seule chose que nous puissions faire est de corriger les problèmes par des patchs, en fonction de la nouvelle syntaxe. Par exemple, dans ce cas, il suffit d'ajouter la ligne suivante :

struct MqlCalendarRecord: public MqlCalendarValue
{
   using MqlCalendarValue::operator=;
   ...
};
Suivez les nouvelles officielles concernant les changements dans la syntaxe de MQL5.