Erreurs, bugs, questions - page 2605

 
Alexey Viktorov:

Je m'excuse pour le petit hors sujet

J'ai maintenant remplacé l'alimentation électrique et je ne reconnais pas mon ordinateur. Même l'internet est plus rapide maintenant. C'est un miracle.

C'est génial.
Mais ce n'est pas une surprise, les alimentations ne sont pas éternelles,
surtout sans régulateur, les condensateurs peuvent s'affaisser rapidement,
Selon la qualité de l'alimentation, il peut facilement tomber en panne en un an d'utilisation active.

 

La source(Math\Stat\Math.mqh) devrait être adaptée à la dernière version, la fonction MathArctan2 avec ces paramètres est déjà redondante :


 
Aliaksandr Hryshyn:

Il est nécessaire de corriger la source(Math\Stat\Math.mqh) pour la dernière construction, la fonction MathArctan2 avec les paramètres donnés est déjà superflue :


Fixe.

Une nouvelle bêta avec des corrections sera disponible dans 2 heures.

 
Lorsque l'on appelle CopyTicksRange pour un historique qui n'existe pas encore localement, la fonction "se bloque" pendant un temps indéfini en termes de code d'appel MQL5, pendant lequel les fichiers sont téléchargés dans le dossier des ticks de la base de données de travail, tandis que le programme MQL5 "attend". Lorsque tout l'historique demandé est reçu, la "pendaison" se résorbe d'elle-même, mais comment faire savoir à l'utilisateur pendant cette période que le programme fonctionne réellement ? Existe-t-il un moyen d'obtenir le pourcentage d'achèvement du processus de téléchargement ? J'ai téléchargé plusieurs années d'histoire pour quelques minutes. Sans un retour d'information clair, l'utilisateur moyen crachera et mettra le programme au rebut sans attendre le résultat. Je ne veux pas non plus lancer une horloge stupide et n'avoir aucune confirmation dans MQL que le téléchargement a vraiment lieu.
 
Stanislav Korotky:
Lors de l'appel de CopyTicksRange pour l'historique, qui localement n'est pas encore disponible, la fonction du code MQL5 appelant se "suspend" pour un temps indéfini, pendant lequel les fichiers sont téléchargés dans le dossier des ticks de la base de données de travail et le programme MQL5 en même temps "attend". Lorsque tout l'historique demandé est reçu, la "pendaison" se résorbe d'elle-même, mais comment faire savoir à l'utilisateur pendant cette période que le programme fonctionne réellement ? Existe-t-il un moyen d'obtenir le pourcentage d'achèvement du processus de téléchargement ? J'ai téléchargé plusieurs années d'histoire pour quelques minutes. Sans un retour d'information clair, l'utilisateur moyen crachera et mettra le programme au rebut sans attendre le résultat.

Le testeur de solutions KB avait l'habitude de faire quelque chose comme ça. Je ne me souviens pas de l'essentiel, le code devrait être clair. Vous pouvez également l'essayer avec l'indicateur. Il ne semble pas attendre l'exécution si l'histoire n'est pas prête.

 
fxsaber:

Dans la solution KB, Tester a fait, je crois, quelque chose comme ça. Je ne me souviens pas de l'essentiel, le code devrait être clair. Vous pouvez également l'essayer avec l'indicateur. Il semble qu'il n'attende pas l'exécution à cet endroit, si l'historique n'est pas prêt.

Pouvez-vous me montrer l'endroit exact, car il y a plusieurs Testeurs ? ;-)

Les indicateurs ne donnent pas la progression du calcul des cotations pour eux - eh bien, le CopyBuffer renverra toujours le même code d'erreur - cela ne rend pas la situation plus claire.

 
Stanislav Korotky:

Pouvez-vous être plus précis sur le lieu, car il y a quelques Testeurs ? ;-)

Dans ce dossier

  static bool HistoryIsReady( const datetime tBeginTime, MqlTick &BeginTick )
  {
    MqlTick Ticks[1];
  
    ::ResetLastError();
  
    if (::CopyTicks(_Symbol, Ticks, COPY_TICKS_ALL, (ulong)tBeginTime * 1000, 1) == 1)
      BeginTick = Ticks[0];
  
    return(!::GetLastError() ||
           (!::TerminalInfoInteger(TERMINAL_CONNECTED) && 
           ((::CopyTicks(_Symbol, Ticks, COPY_TICKS_ALL, (ulong)(tBeginTime - 7 * 24 * 3600) * 1000, 1)) == 1) &&
           (Ticks[0].time < tBeginTime)));
  }

Les indicateurs ne fournissent pas la progression du calcul des cotations pour eux - et bien le même code d'erreur sera retourné par CopyBuffer tout le temps - cela ne rend pas la situation plus claire.

Je voulais dire autre chose, mais ce n'est pas important.

 

Je ne comprends pas du tout ce qui se passe.

   struct myPositionPrepare
   {
      ENUM_ORDER_TYPE      order_type;          // тип устанавливаемого ордера
      ENUM_POSITION_TYPE   position_type;       // тип устанавливаемого ордера
.................
   };
   myPositionPrepare       structPosPrep;       // подготовительная структура для открытия позиции/ордера
.
.
      structPosPrep.position_type         = PositionGetInteger(POSITION_TYPE); // implicit enum conversion

Qu'est-ce qu'il y a ?

 
Сергей Таболин:

Je ne comprends pas du tout ce qui se passe.

Qu'est-ce qu'il y a ?

longPositionGetInteger()

Je trouve également ce point gênant : je pourrais traduire automatiquement les types d' enum en types d'entiers et inversement, sans avoir à...

structPosPrep.position_type = (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
 
Igor Zakharov:

longPositionGetInteger()

Je trouve aussi ce point gênant : on peut traduire des types enum en types entiers et inversement automatiquement, sans forcer

Mais lelongOrderGetInteger( ne renvoie rien de tel. (((

L'énigme de la nature ))))))))

Raison: