Discussion de l'article "Événements de trade dans MetaTrader 5" - page 3

 

Renat:
Конечно после принятия сервером - это же очевидно. Кроме того, функция называется OrderSEND.

OK, je vois !

Quant à l'"évidence", elle concerne surtout ceux qui travaillent en étroite collaboration avec le système depuis plus d'un an. Je me suis demandé si la phrase du livre de référence (pour la fonction OrderSend() "in case of a successful basic check of structures, true is returned") pouvait être considérée comme une condition suffisante pour renvoyer true. Il s'avère que non, ce n'est pas le cas : il s'agit seulement d'une condition nécessaire, mais pas d'une condition suffisante.

 
Interesting:
A mon avis, il ne faut pas tirer des conclusions uniquement à partir de true, il faut aussi analyser le code de réponse du serveur (et ce dernier est plus prioritaire, me semble-t-il)...

Oui, ces quelques heures m'ont donné l'impression qu'un voile était tombé : il n'y a pas du tout de code pour "vérification réussie de la structure de base" (appelons-le ainsi) parmi les codes de retour, et c'est pourquoi true ne peut pas être retourné immédiatement après la vérification de la base.

Quant à l'analyse détaillée du code de retour - oui, elle est recommandée dans le livre de référence. Je continue à chercher des moyens de réduire raisonnablement le nombre de vérifications disponibles.

 

Pouvez-vous expliquer ce que cela signifie ? Le mandat a été placé dans la file d'attente ?

La situation suivante

2011.01.26 12:59:26 Network '716201' : connection to MetaQuotes-Demo lost
2011.01.26 12:59:26 Trades '716201' : failed instant buy 1.00 EURUSD at 1.37136 [No connection]
2011.01.26 12:58:40 Trades '716201' : instant buy 1.00 EURUSD at 1.37136
2011.01.26 12:56:17 Network '716201' : terminal synchronised with MetaQuotes Software Corp.

J'appuie sur Buy sur le marché sans stops et TP. Un message s'affiche, l'ordre est en file d'attente...la connexion s'interrompt...est rétablie...l'ordre n'est pas exécuté.

Qu'est-ce que cette file d'attente ? Où se trouve-t-elle ? Si l'ordre est déjà accepté par le serveur, pourquoi n'est-il pas exécuté ? Raison ?

 
Les liens sont pour le site russe !
 
Bel article en effet.
 
void CheckStartDateInTradeHistory()
  {
//--- intervalle initial, comme si nous commencions à travailler dès maintenant
   datetime curr_start=TimeCurrent()-days*PeriodSeconds(PERIOD_D1);
//--- s'assurer que la limite de départ de l'historique des échanges n'est pas dépassée 
//--- plus d'un jour de retard sur la date prévue
   if(curr_start-start>PeriodSeconds(PERIOD_D1))
     {
      //--- nous devrions corriger la date de début de l'historique à charger dans le cache 
      start=curr_start;
      PrintFormat("New start limit of the trade history to be loaded: start => %s",
                  TimeToString(start));

      //--- charger maintenant l'historique des échanges pour la période corrigée
      HistorySelect(start,end);

      //--- corriger le nombre de transactions et de commandes dans l'historique pour une meilleure comparaison
      history_orders=HistoryOrdersTotal();
      deals=HistoryOrdersTotal();
     }
  }

Vous voyez les deux dernières lignes ?

Elles devraient être :

history_orders=HistoryOrdersTotal() ; // ok, ça semble correct

deals=HistoryDealsTotal() ; // une erreur de frappe, peut-être ?

 

L'article traite des événements commerciaux asynchrones, lorsque la réception d'un ticket d'ordre lors de l'envoi d'une requête avec la fonction OrderSend() et l'apparition de l' ordre dans le terminal peuvent ne pas coïncider dans le temps. Tout est clair ici. À l'automne dernier, on conseillait de surmonter cette asynchronie en s'endormant pendant trois secondes. Mais quel est le délai garanti pendant lequel la valeur du billet et la commande elle-même apparaîtront dans le terminal (après acceptation de la commande par le serveur) ? Je peux attendre 20 secondes, si nécessaire, mais j'aimerais savoir quel délai est garanti pour assurer cette "synchronisation manuelle".

 

Merci beaucoup. Cela m'a vraiment aidé à résoudre certaines confusions.

Je vous prie d'agréer, Madame, Monsieur, l'expression de mes salutations distinguées,

Umer Aziz