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

 
0Aleksandr0:

Qu'est-ce que c'est ? Je ne suis pas un bon juge de MQL4, si vous me dites ce que je dois obtenir, je serai capable de l'écrire en MQL5.
Je pense que cela a quelque chose à voir avec le calcul des pertes et profits de l'histoire.


C'est le problème, je ne le comprends pas moi-même - le code a été écrit à ma demande, tiré d'un cours. Je suis également enclin à penser que ce code est destiné au calcul de la balance. Mais, selon l'idée, le changement d'équilibre avec l'ouverture-fermeture d'un nouvel ordre devrait être réinitialisé dans le tableau, mais je ne le vois pas...

 
Aleksey Vyazmikin:

S'il vous plaît, aidez-moi à réécrire le code sur MT5 - je ne connais rien aux ordres :(

#include <MT4Orders.mqh>
 
fxsaber:

Merci, l'EA avec cette classe a été compilé - je ne sais pas s'il y aura un conflit...


J'obtiens maintenant une erreur lors de l'exécution du test

2017.08.23 11:22:59.929 Core 3 2016.06.01 00:00:00 Le chargement de DLL n'est pas autorisé

2017.08.23 11:22:59.929 Core 3 l'initialisation globale a échoué

2017.08.23 11:22:59.929 Core 3 Erreur critique d'initialisation globale

2017.08.23 11:22:59.929 Core 3 testeur arrêté car l'initialisation de l'expert a échoué


L'appel de la bibliothèque est utilisé - dans MT4 tout est correct.

#import "Kernel32.dll"
bool CopyFileW(string lpExistingFileName,string lpNewFileName,bool bFailIfExists);
#import 

Quelle peut en être la raison ?

 
Aleksey Vyazmikin:

Merci, l'EA a compilé avec cette classe - mais je ne sais pas s'il y aura un conflit...

Ça n'arrivera pas.

J'obtiens maintenant une erreur lors de l'exécution du test

2017.08.23 11:22:59.929 Core 3 2016.06.01 00:00:00 Le chargement de DLL n'est pas autorisé

2017.08.23 11:22:59.929 Core 3 échec de l'initialisation globale

2017.08.23 11:22:59.929 Core 3 erreur critique d'initialisation globale

2017.08.23 11:22:59.929 Core 3 testeur arrêté car l'initialisation de l'expert a échoué


L'appel de la bibliothèque est utilisé - dans MT4 tout est correct.

Quelle pourrait être la raison ?

Dans le Terminal, autorisez l'utilisation de DLL.

 
fxsaber:

Ça n'arrivera pas.

Dans le Terminal, autorisez l'utilisation de la DLL.


Vous ne le croirez pas - je l'ai fait, mais cela n'a eu aucun effet - apparemment le cache est là, qui est effacé après un certain temps - cela fonctionne maintenant. Merci.

 

Comment apprendre aux agents à écrire dans le même fichier ? Actuellement, chacun crée son propre fichier dans son propre dossier, ce qui n'est pas bon.

 
Aleksey Vyazmikin:

Comment apprendre aux agents à écrire dans le même fichier ? Actuellement, chacun crée son propre fichier dans son propre dossier, ce qui n'est pas bon.

Alexey, ouvre la documentation au moins une fois... Il y est décrit avec précision quel drapeau pointe vers le dossier général, ce qui ouvre l'accès général au fichier. Est-il plus facile d'attendre la réponse que de lire de la documentation ?

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

Comment apprendre aux agents à écrire dans le même fichier ? Actuellement, chacun crée son propre fichier dans son propre dossier, ce qui n'est pas bon.


Tout d'abord (étape 1), vous devez surmonter :

... dans son propre dossier, ...


Ceci est fait avec le drapeau FILE_COMMON - tous les agents écriront maintenant dans un dossier commun (mais chaque agent écrira toujours dans son propre fichier).


Exemple EA :

//+------------------------------------------------------------------+
//|                                           Agents FILE_COMMON.mq5 |
//|                              Copyright © 2017, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2017, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
//---
input int s=0;
//---
string InpFileName="";
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Initialize the generator of random numbers 
   MathSrand(GetTickCount());
   InpFileName=IntegerToString(MathRand())+".txt";
//--- open the file 
   ResetLastError();
   int file_handle=FileOpen(InpFileName,FILE_WRITE|FILE_TXT|FILE_COMMON);
   if(file_handle!=INVALID_HANDLE)
     {
      //--- the string is formed, write it to the file 
      FileWriteString(file_handle,InpFileName);
      //--- close the file 
      FileClose(file_handle);
      PrintFormat("Data is written, %s file is closed",InpFileName);
      PrintFormat("Common path for all of the terminals installed on a computer: %s",TerminalInfoString(TERMINAL_COMMONDATA_PATH));
     }
   else
     {
      PrintFormat("Failed to open %s file, Error code = %d",InpFileName,GetLastError());
      return(INIT_FAILED);
     }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

  }
//+------------------------------------------------------------------+


Pour ouvrir rapidement ce dossier commun, procédez comme suit : dans le MetaEditor, sélectionnez "Ouvrir le dossier commun de données" dans le menu Fichier.


Exécutez maintenant cet EA pour l'optimisation et observez les nouveaux fichiers créés dans le dossier commun de données au fur et à mesure de l'exécution des tests.

Dossiers :
 
Vladimir Karputov:

La première (étape 1) doit être vaincue :


Ceci est fait avec le drapeau FILE_COMMON - tous les agents écriront maintenant dans un dossier commun (mais chaque agent écrira toujours dans son propre fichier).


Exemple EA :


Pour ouvrir rapidement ce dossier partagé, procédez comme suit : dans l'éditeur de code MetaEditor, sélectionnez "Ouvrir le dossier de données commun" dans le menu Fichier.


Exécutez maintenant cet EA pour l'optimisation et observez comment les nouveaux fichiers seront créés dans le dossier commun de données au fur et à mesure de l'exécution des tests.


Je ne veux pas le mettre dans Common, car le terminal tourne dans son propre répertoire, et il y aura de toute façon beaucoup de fichiers, comme vous le dites, ce qui ne résout pas le problème.

 
Aleksey Vyazmikin:

Je ne veux pas entrer dans Common, car le terminal fonctionne dans son propre répertoire, et il y aura encore beaucoup de fichiers, comme vous le dites, ce qui ne résout pas le problème.


Il est écrit : " ... Étape 1 ..."

À l'étape 2, réfléchissez maintenant par vous-même, à savoir comment plusieurs threads SANS CONFLIT peuvent écrire dans UN fichier.