Erreurs, bugs, questions - page 659

 
antt:
Quel point d'accès ?
Chypre.
 

La situation est la suivante. Par exemple, il y a des postes ouverts le vendredi. Nous définissons le Stop Loss et le Take Profit. Sans attendre la fin de la session de trading, nous quittons ces positions, désactivons la communication et mettons l'ordinateur en veille (mode Hibernation). Nous tournons le jour suivant. La connexion Internet est établie. Il y a une connexion avec le serveur. Samedi. Le marché est fermé. Nous pouvons voir que les positions ont été fermées, certaines par Stop Loss et d'autres par Take Profit. Ces transactions peuvent être consultées dans l'onglet Historique du terminal de trading:

Nous demandons l'historique des trois dernières transactions :

   datetime Start=0;
//---
   if(!HistorySelect(Start,TimeCurrent())) // Загрузим историю сделок
     {
      Print("Ошибка при загрузке истории!"); return;
     }
   else
     {
      ulong ticket=0;
      datetime time=0;
      string symbol="",comment="";
      //---
      int total_deals=HistoryDealsTotal();
      //---
      for(int d=total_deals-1; d>=total_deals-3; d--)
        {
         if((ticket=HistoryDealGetTicket(d))>0) // Если сделка выбрана
           {
            symbol=HistoryDealGetString(ticket,DEAL_SYMBOL);
            comment=HistoryDealGetString(ticket,DEAL_COMMENT);
            time=(datetime)HistoryDealGetInteger(ticket,DEAL_TIME);
            //---
            Print("<-- symbol: ",symbol,"; comment: ",comment,"; time: ",time," -->");
           }
        }
     }

Et nous voyons que l'histoire ne correspond pas. C'est-à-dire que nous pouvons le voir dans le terminal, mais nous ne pouvons pas l'obtenir de manière programmatique.

//---

S'agit-il d'un bug ou cela a été conçu ainsi et maintenant vous pouvez obtenir ces offres de manière programmatique uniquement lorsque le marché ouvre ?

P.S. J'ai aussi essayé de cette façon, cela n'aide pas :

#define Milliseconds_Ahead 200
//---
datetime TimeCurrentAhead()
  {
   return(TimeCurrent()+Milliseconds_Ahead);
  }
 

tol64:

...

P.S. J'ai essayé ça aussi, ça ne marche pas :

J'ai trouvé un moyen de sortir. Dans la fenêtre Market Watch, vous pouvez voir l'heure de sortie. C'est-à-dire le dernier moment où il y a eu une connexion au serveur et où le tick est arrivé (last tick time) :

C'est-à-dire, dans mon cas 18:43:30.

Il s'avère que l'on utilise toujours cette fonction... :

#define Milliseconds_Ahead 10000
//---
datetime TimeCurrentAhead()
  {
   return(TimeCurrent()+Milliseconds_Ahead);
  }

...vous pouvez résoudre la situation, mais vous devez faire la demande avec une marge importante. Ou bien vous pouvez vous passer de cette béquille et l'oublier à jamais et utiliser la fonction TimeLocal() lors des demandes d'historique, si elle est utilisée en temps réel. Dans le testeur, utilisez TimeCurrent() ou TimeCurrentAhead(). Quelque chose comme ça :

datetime ChoiceTimeFunction()
  {
   if(NotTest())
     { return(TimeLocal()); }
   else
     { return(TimeCurrent()+Milliseconds_Ahead); }
//---
   return(TimeLocal());
  }

Alors ce point devrait être couvert dans l'aide ou quelque chose comme ça...

 

Il est possible de récupérer les graphiques supprimés dans le terminal :

Ouvert supprimé

Ouvrez un sous-menu des graphiques supprimés à restaurer. Les graphiques supprimés sont sauvegardés si l'option "Enregistrer les fenêtres supprimées pour la réouverture" est cochée dans les paramètres du terminal. Tous les modèles de graphiques supprimés sont enregistrés dans lerépertoire/Profils/Deleted. Lorsque cette commande est exécutée, on accède à ces modèles et le graphique correspondant est ouvert. Tous les modèles de graphiques supprimés peuvent être supprimés à l'aide de la commande correspondante dans ce menu.

La situation est la suivante. Le conseiller expert s'accroche au graphique et ses panneaux d'information s'affichent. Dans la fonction OnDeinit(), je précise que si le graphique est fermé, les panneaux d'information doivent être supprimés, afin de conserver le modèle pour une restauration sans objets. Je ferme le dossier. En utilisant l'option Open Deleted, je le restaure, mais il est restauré avec des objets, et de manière incorrecte (certains sont là, d'autres non). Le Conseiller Expert rétablit tout après l'initialisation. Il laisse un résidu désagréable et une impression de travail bâclé. Je l'estime du point de vue des utilisateurs de l'Expert Advisor, et non de celui du terminal. Lors de tout autre événement de désinitialisation, tout fonctionne correctement. Je comprends que l'enregistrement du modèle se fait avant la désinitialisation, car pendant la désinitialisation, les objets sont toujours supprimés, mais ils ont le temps d'être enregistrés dans le modèle.

 

Voilà le problème...

Pour autant que je sache, le terminal "remarque" un historique supplémentaire sur le serveur et des sortes de "lacunes" dans l'historique local et commence à pomper frénétiquement et automatiquement pour combler ces lacunes. Tout cela est formidable, bien sûr, mais...

Il existe un phénomène tel que les calendriers non standard, dont l'histoire semble ne pas être téléchargée de quelque part mais construite automatiquement "dans l'esprit" par le terminal. Et voici ce que j'ai remarqué. Si tout va bien avec la constatation des "trous" dans l'historique et le téléchargement automatique, la situation avec la reconstruction de l'historique construit et ensuite endommagé (soit sur le disque, soit dans la mémoire) des périodes non standard est vraiment hors de question. Eh bien, mon terminal a téléchargé tout l'historique, puis j'ai sauté par-dessus toutes les périodes et découvert que quelqu'un avait volé un segment entier de l'historique récent sur H2 et H3, que le terminal n'avait même pas pensé à télécharger ou à recréer localement. Il a été utile de décharger le terminal et de supprimer manuellement les fichiers des périodes appropriées de C:\Program Files\MetaTrader 5\Bases\MetaQuotes-Demo\history\NZDUSD\cache avec un nouveau lancement du terminal, passer àH2 et H3 et attendre qu'il reconstruise son histoire à partir de zéro correctement.

Évidemment, nous aimerions avoir un terminal plus intelligent qui "sentirait" ces segments mordus à n'importe quel moment, y compris ceux qui ne sont pas standard, et tenterait immédiatement de les remplir.

---------------

Addendum : bien que, pour être honnête, le terminal ne voit rien du tout. Je suis assis depuis un an avec une courbe d'historique des minutes, qui commence en fait avec MetaQuotes à partir de 1999, alors que mon horizon temporel était en 2009 pour une raison quelconque - et quoi ? Où sont les téléchargements automatiques ? J'avais assez d'espace pour les télécharger, mais il n'y avait aucun téléchargement jusqu'à aujourd'hui, jusqu'à ce que je désinstalle et réinstalle tout (j'ai fait la même chose avant, mais cela n'a eu aucun effet). Bien sûr, il ne s'agit même pas de reprise, mais du téléchargement complet de tout l'historique à partir de zéro par le terminal. Au moins, c'est le pain et le beurre.

À cet égard, je tiens à donner à tous les programmeurs MQL, qui déboguent leurs programmes et comptent sur la consommation de leurs programmes par d'autres utilisateurs, un avertissement important : soyez attentif à la disponibilité de l'historique, pour lequel votre produit est calculé : lors des tests avec l'historique incomplet ou substitué par l'historique de la période supérieure, la vitesse de traitement sera bonne, mais il peut arriver que vous ou les utilisateurs de vos programmes rugissent de la charge de 100% du CPU sur les ordinateurs modernes et des messages d'erreur "sans fin".

 

'f0_34' - expression de comparaison attendue

Pouvez-vous me dire ce que signifie cet avertissement ?

 

Une fois de plus, une erreur de ce type est apparue :

La zone problématique a été identifiée. Description détaillée dans le Service Desk.

//---

P.S. J'ai complété une demande existante, avec un problème similaire une fois résolu. Après un moment, j'ai vu une notification près de mon profil. Je me suis connecté au Service Desk et la demande a complètement disparu. Est-ce que je dois tout recommencer ? )))

 
tol64:

Une fois de plus, une erreur de ce type est apparue :

La zone problématique a été identifiée. Description détaillée dans le Service Desk.

//---

P.S. J'ai complété une demande existante, avec un problème similaire une fois résolu. Après un moment, j'ai vu une notification près de mon profil. Je me suis connecté au Service Desk et la demande a complètement disparu. Est-ce que je dois tout recommencer ? )))

La demande et les commentaires sont en place, mais pour une raison quelconque, ils ne sont pas visibles dans le profil.

Nous allons certainement nous en occuper.

 
MetaQuotes:

La demande et les commentaires sont en place, mais pour une raison quelconque, ils ne sont pas visibles dans le profil.

Nous allons nous en occuper.

Veuillez régler ce problème, car certaines de mes candidatures ont également disparu, que ce soit dans les candidatures ouvertes ou fermées.
 
MetaQuotes:

La demande et les commentaires sont en place, mais pour une raison quelconque, ils ne sont pas visibles dans le profil.

Nous allons nous en occuper.

Merci. J'attends avec impatience les clarifications qui seront apportées. Le problème ne commence pas seulement à se manifester là où je l'ai indiqué. La zone d'occurrence est désormais omniprésente.
Raison: