Questions des débutants MQL5 MT5 MetaTrader 5 - page 1498

 
Bonjour, veuillez nous conseiller.

Enregistrement des données dans un fichier.
void OrderExport(MqlTradeRequest &request)
  {
   static long trans = 0;
   static long keepTrans = 0;
   string file = "OrderExchange" + (request.magic > 0 ? IntegerToString(request.magic) : "") + ".csv";
   int handle = FileOpen(file, FILE_CSV | FILE_READ | FILE_SHARE_READ | FILE_WRITE | FILE_SHARE_WRITE | (Common ? FILE_COMMON : 0), ';');
   if(handle != INVALID_HANDLE)
     {
      FileSeek(handle, 0, SEEK_END);
      long tr = TimeGMT();
      trans = (tr > trans) ? tr : (trans + 1);
      FileWrite(handle,
                trans,
                request.action,
                request.magic,

Récupération des données du fichier

void OrderImport(MqlTradeRequest &aReq[], int magic, string symbol)
  {
   ArrayFree(aReq);
   long tr;
   static long trans = 0;
   if(trans == 0)
      trans = TimeGMT() - 3;
   string file = "OrderExchange" + (magic > 0 ? IntegerToString(magic) : "") + ".csv";
   int handle = FileOpen(file, FILE_TXT | FILE_READ | FILE_SHARE_READ | FILE_ANSI | (Common ? FILE_COMMON : 0));
   if(handle != INVALID_HANDLE)
     {
      FileSeek(handle, 0, SEEK_SET);
      while(!FileIsEnding(handle))
        {
         string s = FileReadString(handle);
         string aS[];
         int cnt = StringSplit(s, ';', aS);
         if(cnt <= 0)
            continue;
         //---   ПРОБЛЕМНОЕ МЕСТО ОТ
          tr = StringToInteger(aS[0]);
         //---    ПРОБЛЕМНОЕ МЕСТО ДО
         if(tr <= trans)
            continue;

GetLastError() L'erreur suivante est signalée : -Paramètre detype chaîne gâché

Si vous affichez le tableau aS[0] via Print(), la police est différente du reste.


Si vous n'imprimez que le paramètre tr , alors = 0

 
Mikhail Toptunov type chaîne gâché

Si je sors un tableauS[0] via Print(), la police est différente du reste.


Si vous n'imprimez que le paramètre tr , alors = 0

Avez-vous essayé d'examiner le fichier lui-même ?

vous écrivez des valeurs binaires et lisez une chaîne de texte....

 
Maxim Kuznetsov #:

Avez-vous essayé de consulter le fichier lui-même ?

Vous écrivez des valeurs binaires et lisez une chaîne de texte...

Je l'ai importé comme ceci

void OrderImport(MqlTradeRequest &aReq[], int magic, string symbol)
  {
   ArrayFree(aReq);
   long tr;
   static long trans = 0;
   if(trans == 0)
      trans = TimeGMT() - 1;
   string file = "OrderExchange" + (magic > 0 ? IntegerToString(magic) : "") + ".csv";
   int handle = FileOpen(file, FILE_READ | FILE_SHARE_READ | (Common ? FILE_COMMON : 0));

comme ceci pour l'exportation

void OrderExport(MqlTradeRequest &request)
  {
   static long trans = 0;
   static long keepTrans = 0;
   string file = "OrderExchange" + (request.magic > 0 ? IntegerToString(request.magic) : "") + ".csv";
   int handle = FileOpen(file, FILE_READ | FILE_SHARE_READ | FILE_WRITE | FILE_SHARE_WRITE | (Common ? FILE_COMMON : 0), ';');

s'est amélioré, mais la première importation de la première chaîne de paramètres (aS[0]) est toujours une erreur.


suivant

tr - reflète la chaîne traduite en int(aS[0])

Le fichier est visualisé, tout est à sa place.


Mais l'importation du premier paramètre aS[0] de la première ligne ne le traduit pas en int.
 
Aleksandr Slavskii #:

Si vous n'initialisez pas un tableau, il contient souvent des déchets.

Merci, je me suis même souvenu que j'avais déjà rencontré cela auparavant (0 m'avait déconcerté). C'est dommage que ce ne soit pas précisé dans la documentation, je dois garder ce genre de choses en tête.

 
Mikhail Toptunov #:

importé

comme ceci pour l'exportation

mais la première importation de la première chaîne de paramètres (aS[0]) est toujours une erreur.


suivant

tr - reflète la chaîne traduite en int(aS[0])

Le fichier est visualisé, tout est à sa place.


Mais l'importation du premier paramètre aS[0] de la première ligne ne le traduit pas en int.

Comment cela se fait-il ? - le premier aS[0] est toujours cassé (erreur 5040)


 
Merci de me donner un indice. J'ai une tâche pour exécuter l'optimisation, mais pour l'optimisation j'ai besoin d'utiliser des données externes. J'ai fait ceci : j'ai créé un fichier avec des données et à chaque passage j'ouvre le fichier, j'écris dans le tableau et je le ferme. Comment puis-je optimiser et accélérer ce processus ?
 
Mikhail Toptunov #:

Comment cela est-il possible ? - le premier aS[0] est toujours cassé (erreur 5040)


définir le codage UTF-8 dans l'exportation et l'importation (ou au moins le même codage d'un octet sans BOM).

(regardez le fichier sous forme binaire - les deux premiers octets sont probablement BOM, c'est-à-dire qu'ils sont Unicode) - lorsque vous FileSeek(0,SEEK_SET) et que vous lisez ensuite, vous les lisez dans une chaîne de caractères et la conversion échoue.

 
Maxim Kuznetsov #:
BOM

Eh bien, il semble que cela ait fonctionné. Il est vrai qu'une fois, l'image ne s'affiche toujours pas, mais lorsque l'on supprime le fichier, les problèmes cessent au moins.


FILE_CSV | FILE_READ | FILE_SHARE_READ | FILE_ANSI | (Common ? FILE_COMMON : 0),CP_UTF8

Merci beaucoup !

 

Bonjour et bonne humeur !

Je me suis heurté à l'absence de description de ResultRetcodeExternal dans le manuel de référence de MQL5. Dans le moteur de recherche, j'obtiens la réponse suivante : Nothing was found for your request. De manière détournée, j'ai trouvé qu'il semble s'agir d'un "Code d'erreur renvoyé par un système de négociation externe". L'orthographe et le type de ces erreurs dépendent du courtier et du système de négociation externe vers lequel les opérations de négociation sont envoyées.

Question : ai-je trouvé la bonne définition ou non ?

Et en même temps, la deuxième question aux développeurs de la documentation : si c'est le cas, pourquoi ne fournissez-vous pas immédiatement aux utilisateurs des informations complètes, au lieu de les obliger à chercher n'importe où ce qu'est cette définition ?

Cordialement, Vladimir.

 
MrBrooklin #:
RésultatRetcodeExterne

Vous ne trouverez pas une telle chose. Elle n'existe pas dans MQL5.

Il y a MqlTradeResult, où il y a un champ retcode_external, et où il y a une description de ce champ.

Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса
  • www.mql5.com
Структура результата торгового запроса - Структуры данных - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5