MT5 et la vitesse en action - page 29

 
Andrey Khatimlianskii:

Identifier une rupture de communication

Je ne sais pas comment faire.

 
fxsaber:

Je ne sais pas comment faire.

Qu'est-ce qui vous fait penser qu'ils arrivent et qu'OnTrade se perd ? Dans la documentation ?

 
Andrey Khatimlianskii:

Qu'est-ce qui vous fait penser qu'ils arrivent et qu'OnTrade se perd ? Dans la documentation ?

Parce que Relogin réinitialise le cache historique, qui (je suppose) est dopé par le mécanisme OnTrade.

 
fxsaber:

Je ne sais pas comment faire.

Ne pas sortir du temps d'intertitre de MT5, si possible. Et avec les opérations commerciales par rapport à l'ordre dans le DC sans aide interne, je ne vois rien.

 
Valeriy Yastremskiy:

Ne pas sortir du temps d'intertitre de MT5, si possible. Et avec les opérations commerciales par rapport à l'ordre dans le DC sans aide interne, je ne vois rien.

Je ne comprends pas.

 
fxsaber:

Je ne comprends pas.

Oui, quelque chose ne va pas. Le temps intertick est uniquement destiné aux ticks manquants en raison d'une rupture de communication. Et en termes de requêtes et d'exactitude des réponses sur les ordres, les transactions et les états de position, si la réponse est manquée ou modifiée en raison d'une défaillance de la communication et des retards qui en découlent, il ne semble pas y avoir de solutions bon marché. Il n'est pas toujours possible d'effectuer une nouvelle interrogation au prochain tic-tac.

La solution pour moi serait une fonction interne permettant de suivre l'état des transactions/positions en ce qui concerne les ordres d'ouverture, de modification, de fermeture partielle et de fermeture complète d'une position. La demande de suivi du résultat pourrait être définie dans la commande elle-même. Et obtenir le résultat sur le tick actuel et non sur le suivant.

 
fxsaber:

Pouvez-vous me dire ce qu'il faut faire pour que je n'aie pas à faire face à ce problème pendant mes échanges ?

2020.09.15 22:17:04.633 Alert: Time[NewTicks.mqh 33: ::SymbolInfoTick(_Symbol,Tick)] = 13 ms.
2020.09.15 22:17:04.638 Alert: Time[NewTicks.mqh 33: ::SymbolInfoTick(_Symbol,Tick)] = 18 ms.
2020.09.15 22:17:04.640 Alert: Time[NewTicks.mqh 33: ::SymbolInfoTick(_Symbol,Tick)] = 20 ms.

A en juger par le temps de journalisation, tout s'est passé en 7ms.

Si vous voulez avoir une discussion constructive, donnez-nous les conditions complètes du test (serveur, type de compte, nombre de symboles sélectionnés, nombre d'EAs, etc).


Le code de mesure du temps d'exécution de SymbolInfoTick :

void OnTick()
  {
   MqlTick Tick;
//---
   ulong start,end,max_time=0,avr_time=0;
   int   count=1000;
   for(int i=0; i<count; i++)
     {
      start=GetMicrosecondCount();
      SymbolInfoTick(_Symbol, Tick);
      end=GetMicrosecondCount()-start;
      //---
      if(end>max_time)
         max_time=end;
      avr_time+=end;
     }
   Print("SymbolInfoTick max time: ",DoubleToString(max_time/1000.0,3)," ms; avr time: ",DoubleToString(avr_time/1000.0/count,3)," ms; ",count," iterations");
  }

Sur le serveur MetaQuotes-Demo (20 symboles sélectionnés, Netting, 4 positions ouvertes) :

2020.09.16 12:34:22.429 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.017 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:27.148 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.022 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:27.456 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.002 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:27.751 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.021 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:28.145 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.003 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:28.652 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.002 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:30.051 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.020 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:30.259 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.019 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:30.861 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.019 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:31.159 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.020 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:32.376 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.002 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:32.658 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.017 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:34.867 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.017 ms; avr time: 0.000 ms; 1000 iterations

131 symboles sélectionnés, 10 positions ouvertes :

2020.09.16 12:44:50.554 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.003 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:44:52.337 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.019 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:44:54.960 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.019 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:44:55.587 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.020 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:44:55.863 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.016 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:44:56.187 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.002 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:44:56.958 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.018 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:44:59.989 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.003 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:00.298 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.021 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:07.609 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.024 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:07.891 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.017 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:08.790 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.019 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:09.617 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.019 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:09.933 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.002 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:11.841 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.002 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:13.416 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.022 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:13.709 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.017 ms; avr time: 0.000 ms; 1000 iterations
Windows 10 build 18363, Intel Xeon  E5-2630 v4 @ 2.20 GHz, 52 / 63 Gb memory
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
Anton:

A en juger par l'heure des entrées du journal, tout s'est passé en 7ms.

C'est trois EA différents.

Si vous voulez une discussion constructive, donnez toutes les conditions de test dans leur intégralité (serveur, type de compte, nombre de symboles sélectionnés, nombre d'EA, etc.)

Compte réel, serveur RannForex, 16 symboles, graphique M1 ouvert sur chacun d'entre eux (5000 barres maximum), sur chacun d'entre eux un EA est en cours d'exécution, qui accède uniquement à son propre symbole.

Il peut y avoir environ 50 positions et le même nombre d'ordres en même temps. Il n'y a pas d'indicateurs, et seuls CopyTicksRange (ticks frais) et SymbolInfoTick sont utilisés pour obtenir les prix. Il n'y a aucune référence aux bars.

 
fxsaber:

Ce sont trois EA différents qui ont été distribués.

Compte réel, serveur RannForex, 16 symboles, graphique M1 ouvert sur chacun d'entre eux (5000 barres maximum), sur chacun d'entre eux un EA est en cours d'exécution qui accède uniquement à son propre symbole.

Il peut y avoir environ 50 positions et le même nombre d'ordres à la fois.

Si je comprends bien, il n'y a pas d'EA là, mais un stress tester sur chaque symbole. Cela change complètement les choses. Et cela montre la dissimulation des conditions initiales.

C'est-à-dire que 16 threads sur un processeur 8(4+HT) (+N threads de terminaux de travail en parallèle), sans arrêt et sans délai, se décomposent en un objet de base de données de symboles synchronisés. Les verrous de lecture/écriture sont mélangés parce qu'il y a une écriture constante.

Habituellement, dans un tel profil, en fonction de la pente du processeur et de sa maîtrise des threads, chaque thread peut passer de 60% à 80% du temps à attendre.

Et ce, quel que soit le type de tâche.

 
Renat Fatkhullin:

Si j'ai bien compris, il ne s'agit pas d'un EA, mais d'un stress tester sur chaque symbole.

Mal compris. Chaque EA est purement commercial (dans le testeur, les ticks réels ne ralentissent pas) et ne dépend pas des autres. Toute la logique de négociation est exécutée uniquement en OnTick, pas de spamming d'ordres de négociation, pas de récursion, pas de globalisation et pas de ressources.

OnTrade*, OnBook ne sont pas utilisés. Second timer et OnChartEvent pour le cas où certaines touches sont pressées.


Je suis sûr qu'une implémentation correcte (par vous ou par moi) des instantanés réduira considérablement le nombre d'appels aux fonctions régulières de l'environnement. Par conséquent, les retards seront considérablement réduits.

Je n'ai jamais pensé que ça arriverait. J'étudie la question, car l'implémentation standard de MT5-advisor est boiteuse, malheureusement.