Caractéristiques du langage mql5, subtilités et techniques - page 52

 
Alexey Navoykov:
Veuillez corriger le code, le nombre 5 au lieu de DealsNum dans la première fonction. Et la vérification d'INT_MAX n'a aucun sens.

Merci pour la mise au point. Vérification de INT_MAX - si sans paramètres d'entrée, l'Expert Advisor ne ralentira pas, et le gaspilleur HistorySelect ne sera pas appelé.

 
Les ordres dans le tableau de l'historique sont triés par heure de placement (et non par exécution/annulation). Tenez-en compte lorsque vous appelez HistorySelect.
 
fxsaber:
Les ordres dans le tableau de l'historique sont triés par heure de placement (et non par exécution/annulation). Tenez-en compte lorsque vous appelez HistorySelect.

Il serait bon d'ajouter à cela la façon dont les transactions et les positions sont effectuées - pour avoir une image complète.

 
Artyom Trishkin:

Il serait bon d'ajouter la situation avec les transactions et les positions pour avoir une image complète.

Il n'y a aucun moyen de traiter les positions - elles ne sont pas dans l'histoire. Et avec les offres sans ambiguïté - il n'y a qu'un seul moment DEAL_TIME.

 
fxsaber:

Il n'y a aucun moyen de traiter les positions - elles ne sont pas dans l'histoire. Et avec les offres sans ambiguïté - il n'y a qu'un seul moment DEAL_TIME.

Oui, mais les postes sont dans la liste actuelle.

 
Artyom Trishkin:

Oui, mais les postes sont sur la liste actuelle.

Veuillez clarifier, je ne comprends pas du tout.

 
fxsaber:

Veuillez clarifier, je ne comprends pas du tout.

PositionsTotal() sur un compte de couverture renvoie quoi ? Le nombre de postes. Ils sont dans une sorte de liste. Et comment sont-elles triées ? C'est de ça que je parle.

 
Artyom Trishkin:

Quel sera le rendement de PositionsTotal() sur le compte de couverture ? Le nombre de postes. Ils sont dans une sorte de liste. Et comment sont-elles triées ? C'est de ça que je parle.

Compris. Je n'ai pas clarifié ce point pour moi-même, car je n'ai pas rencontré de situation où cela pourrait être nécessaire.

 

Lors du premier passage d'une pile de tâches d'agent (par exemple, lors d'une seule exécution du testeur), le délai entre le démarrage de l'EA et le premier événement NewTick peut prendre plusieurs secondes. Lors des passages suivants de la pile, ce temps est égal à zéro.

Le dernier passage d'une pile de travaux prend jusqu'à 10 % plus de temps à l'agent que les passages précédents.

 
// Перемещение папки. Описание такое же, как у FileMove - https://www.mql5.com/ru/docs/files/filemove
bool FolderMove( const string FolderNameSrc, const string FolderNameDst, const int Common_Flag = 0, const int Mode_Flags = FILE_REWRITE )
{
  if (FolderNameSrc == FolderNameDst)
    return(false);

  string FileName;
  const long handle = ::FileFindFirst(FolderNameSrc + "\\*", FileName, Common_Flag);

  bool Res = false;

  if (handle != INVALID_HANDLE)
  {
    do
    {
      const string TmpFileNameSrc = FolderNameSrc + "\\" + FileName;
      const string TmpFileNameDst = FolderNameDst + "\\" + FileName;

      if (::FileIsExist(TmpFileNameSrc, Common_Flag))
        Res = ::FileMove(TmpFileNameSrc, Common_Flag, TmpFileNameDst, Mode_Flags);
      else
      {
        const string TmpFileNameSrc2 = ::StringSubstr(TmpFileNameSrc, 0, ::StringLen(TmpFileNameSrc) - 1);
        const string TmpFileNameDst2 = ::StringSubstr(TmpFileNameDst, 0, ::StringLen(TmpFileNameDst) - 1);

        if (!FolderMove(TmpFileNameSrc2, TmpFileNameDst2, Common_Flag, Mode_Flags))
          Res = ::FolderCreate(TmpFileNameDst2, Mode_Flags & FILE_COMMON);
      }
    }
    while (::FileFindNext(handle, FileName));

    ::FileFindClose(handle);
  }

  return(::FolderDelete(FolderNameSrc, Common_Flag) && Res);
}
Документация по MQL5: Файловые операции / FileMove
Документация по MQL5: Файловые операции / FileMove
  • www.mql5.com
Файловые операции / FileMove - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Raison: