MT5 et la vitesse en action - page 13

 
Dmi3:

Je suis un trader, ce que je vois à l'œil nu dans mes terminaux est ce que je chante. Je suis un trader et je peux voir à l'œil nu ce que je vois sur mes terminaux, c'est ce que je vois.

En théorie, bien sûr, je pourrais mettre un certain EA depuis mon ordinateur portable à la maison et regarder son comportement.

Je pensais juste que le problème pouvait être du côté du serveur, si l'historique est profond.

 
Aleksey Vyazmikin:

Je pensais juste que le problème pouvait se situer du côté du serveur, si l'historique est demandé en profondeur.

L'historique de tous les EA est demandé pour les 120 dernières secondes. Il y a plus de 10 000 commandes par jour.

 
Dmi3:

L'historique de tous les EA est demandé pour les 120 dernières secondes. Il y a plus de 10 000 commandes par jour.

Ensuite, l'idée est que tout doit être en mémoire.

 

Il existe une centaine de logiques de trading indépendantes. En même temps, il existe plus d'une douzaine de symboles commerciaux.

En raison des décalages, il est impossible de faire tenir tout cela dans un conseiller expert asynchrone. Je dois créer plusieurs Expert Advisors et les exécuter en parallèle.

 
fxsaber:

Il existe une centaine de logiques de trading indépendantes. En même temps, il existe plus d'une douzaine de symboles commerciaux.

En raison des décalages, il est impossible de faire tenir tout cela dans un conseiller expert asynchrone. Je dois créer plusieurs Expert Advisors et les exécuter en parallèle.

Par la suite, il s'avère qu'il est impossible d'entasser plus de 100 EA dans un seul terminal et qu'il est donc nécessaire de lancer plusieurs terminaux parallèles. Et ensuite....

 
Dmi3:

Et puis, il s'avère que vous ne pouvez pas faire tenir plus de 100 EA dans un seul terminal et que vous devez utiliser plusieurs terminaux parallèles. Et ensuite....

Une fois les décalages supprimés, il sera possible de les regrouper dans un seul EA. Cela soulagera beaucoup le VPS.

 
OnTick interroge l'historique du tick à partir du tick précédent.
2020.08.17 21:26:45.729 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:26:47.848 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:26:47.848 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:26:49.959 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:26:53.135 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:26:54.199 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 6 ms.
2020.08.17 21:26:54.199 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:26:54.199 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:26:54.199 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:27:00.525 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:27:08.956 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:27:13.173 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:27:27.931 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:27:30.048 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:27:30.048 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:27:42.669 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:27:43.726 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.

Résultat très stable.

 

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Bibliothèques : MT4Orders

fxsaber, 2020.08.18 08:49

Un résultat similaire peut être observé avec des retards de sortie > 30 ms.

2020.08.18 05:12:20.760 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 45 ms.
2020.08.18 06:08:07.116 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 38 ms.
2020.08.18 06:44:57.080 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 59 ms.
2020.08.18 07:01:37.171 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 33 ms.
2020.08.18 07:04:19.996 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 34 ms.
2020.08.18 07:04:55.020 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 43 ms.
2020.08.18 07:30:07.414 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 37 ms.
2020.08.18 07:38:31.913 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 40 ms.
2020.08.18 07:44:08.415 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 36 ms.
2020.08.18 07:45:22.918 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 38 ms.
2020.08.18 08:00:37.016 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 40 ms.
2020.08.18 08:01:36.007 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 33 ms.
2020.08.18 08:08:26.948 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 34 ms.
2020.08.18 08:18:41.664 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 33 ms.
2020.08.18 08:48:51.114 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 32 ms.
2020.08.18 09:12:33.762 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 49 ms.
2020.08.18 09:28:42.364 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 47 ms.
2020.08.18 09:28:42.364 Alert: Time[MT4Orders.mqh 1808: ::PositionSelectByTicket(Ticket)] = 38 ms.
2020.08.18 09:30:30.665 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 40 ms.
2020.08.18 09:33:50.114 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 44 ms.
2020.08.18 09:38:41.204 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 77 ms.

Sans historique de négociation, des décalages décents.

 
Je n'ai pas encore trouvé comment le contrôler.
2020.08.18 11:14:05.072 MarketWatchTick:  time = 2020.08.18 11:14:00.674
2020.08.18 11:14:05.195 MarketWatchTick:  time = 2020.08.18 11:14:05.929

À gauche, l'heure locale, à droite, l'heure de la dernière citation de caractères.

Vous pouvez voir que 100ms se sont écoulées entre les impressions (faites dans OnTick) des deux lignes. Au même moment, l'heure du symbole a changé de cinq secondes !


Cela signifie qu'il y a eu un décalage de cinq secondes dans la réception du prix du caractère. Au même moment (non affiché ici, mais dans mon journal), en temps réel CopyTicksRange a produit 35 ticks entre ces deux événements.


Je l'ai remarqué par accident et j'ai remarqué qu'il y avait beaucoup de ticks entre les appels OnTick voisins.

 

Veuillez demander aux développeurs de recommander leur séquence de vérification de la préparation de l'ordinateur au HFT.

Pour le même HFT, vous devez préparer une machine adaptée. C'est probablement une bonne idée d'avoir des recommandations officielles (passant quelques tests) sur ce point.