MT5 Pour ceux qui se soucient de la vitesse.

 

J'ai une question : comment fonctionnent lescommandes?

Il existe une classeCAccountInfo pour travailler avec le compte,

Lorsque nous accédons à cette commande, le terminal initie une requête au serveur ou cette information est reçue en permanence avec les guillemets et nous la prenons simplement dans le tampon du terminal ou dans un fichier sur le disque ?

En bref, combien de temps prend l'exécution de cette commande ? Et s'il lit sur le disque, comment cela dépend-il du type de disque ou de SSD ?

Texte intégral...

En fait, l'information la plus importante dont on a besoin de manière opérationnelle est la présence ou l'absence d'une position ouverte, ainsi que le niveau de prix d'une position ouverte.

Je comprends que cette analyse doit être effectuée dans void OnTrade() - c'est-à-dire que lorsque la position est ouverte, cette sous-routine sera initialisée ?

 
Textes complets, poster dans ce forum.
 

Comparez donc le temps de demande avec le temps de réception de la valeur ou d'exécution de la commande. Je comprends que cela dépend de votre situation spécifique (ligne de communication par exemple).

 

CAccountInfo n'accède pas au serveur commercial, il est émis depuis la mémoire, il ne monte pas sur le disque.

 
zfs:

Comparez donc le temps d'interrogation avec le temps d'obtention d'une valeur ou d'exécution d'une commande. Je comprends que tout dépend de votre situation spécifique (ligne de communication par exemple).

Et donc tester chaque commande de cette manière ?

J'ai besoin d'écrire un EA pour une exécution rapide et pour cela j'ai besoin de comprendre le processus et comment cela peut se passer. J'ai vu plusieurs fois le terminal se bloquer alors que j'utilise un outil, une EA et quelques graphiques... J'ai aussi vu d'autres pépins...bien que j'ai mis un SSD rapide au lieu d'un disque dur en hibernation....

 
Renat:

CAccountInfo n'accède pas au serveur commercial, il est sorti de la mémoire, il ne va pas sur le disque.

J'ai spécifié la fonction de manière incorrecte. Je suis intéressé parPositionGet...().

Laposition possède un ensemble de propriétés disponibles pour être lues par la fonctionPositionGet...().

Merci.

 
shelandr:

Et donc tester chaque commande de cette manière ?

J'ai besoin d'écrire un EA pour une exécution rapide et pour cela j'ai besoin de comprendre le processus. et comment cela peut se passer. J'ai vu plusieurs fois le terminal se bloquer alors que j'utilise un outil, une EA et quelques graphiques... De plus, il y a d'autres pépins...bien que j'ai mis un SSD rapide au lieu d'un disque dur en hibernation....

Comparez l'heure locale avant et après et obtenez la performance, elle dépend de nombreux facteurs et est individuelle pour chacun.

https://www.mql5.com/ru/docs/dateandtime/timelocal
Документация по MQL5: Дата и время / TimeLocal
Документация по MQL5: Дата и время / TimeLocal
  • www.mql5.com
Дата и время / TimeLocal - Документация по MQL5
 
zfs:

Comparez l'heure locale avant et après et obtenez la performance, elle dépend de nombreux facteurs et est individuelle pour chacun.


https://www.youtube.com/playlist?list=PLIo3S7h2bgAD8afp8iN-MSy5irsL33PfE

Pour organiser des compteurs et des minuteurs à haute résolution, utilisez la fonctionGetTickCount(), qui fournit des valeurs en millisecondes.

Suggérez-vous de mesurer en secondes ? Même les millisecondes sont lentes aussi.

mon compteur de millisecondes est toujours activé, mais si 1 cycle sur 1000 échoue, même en une minute, je ne peux pas le rattraper sans programme spécial.

Je ne peux même pas en attraper une en une minute sans un programme spécial.

 
shelandr:

https://www.youtube.com/playlist?list=PLIo3S7h2bgAD8afp8iN-MSy5irsL33PfE

Pour organiser des compteurs et des minuteurs à haute résolution, utilisez la fonctionGetTickCount(), qui fournit des valeurs en millisecondes.

Suggérez-vous de mesurer en secondes ? Même les millisecondes sont lentes aussi.

mon compteur de millisecondes est toujours activé, mais si 1 cycle sur 1000 échoue, même en une minute, je ne peux pas le rattraper sans programme spécial.

De plus, lorsque le terminal raccroche, le compteur ne fonctionne pas.

Cela fonctionne jusqu'à ce point, pourquoi mesurer ce qui n'est pas tangible, le fait que votre terminal se bloque est plus probablement une boucle infinie dans votre algorithme, la présence d'une récursion profonde, plutôt que la vitesse du terminal.

 
zfs:

Cela fonctionne jusqu'à ce point, pourquoi mesurer quelque chose qui n'est pas tangible, le fait que votre terminal se bloque est plus probablement une boucle dans votre algorithme, la présence d'une récursion profonde, pas la vitesse du terminal.

Pas du tout - le terminal ne se bloque que lorsqu'il y a deux événements - une opération telle que la modification de l'ordre et un mouvement brusque du prix de l'instrument - le serveur d'échange ferme toutes les demandes des clients et ils se bloquent.

Lorsque le mouvement des prix est stabilisé, il commence à répondre aux demandes des clients.

La raison en est que le serveur, à ces moments-là, soit n'a pas le temps de traiter les demandes, soit le fait exprès pour ne pas permettre au client de recevoir un bénéfice. Pour comprendre cela, nous avons besoin d'un protocole d'échange MT%6 avec le serveur des sociétés de courtage.

D'ailleurs, en ce moment, la position ne peut pas être piratée même depuis le terminal - elle est indisponible...

Lorsqu'il n'y a pas de mouvements soudains, le système fonctionne assez rapidement et parvient à envoyer une position ouverte en une seconde... Mais j'aimerais que le temps entre le signal d'ouverture d'une position et un ordre d'ouverture de position atteigne 100 ms (bien que je connaisse des systèmes avec un temps de 15 ms.

Pour cela, je fais beaucoup de travail, à commencer par la mise à niveau du matériel, du système d'exploitation et le choix d'un fournisseur...

МТ5 | Секреты трейдинга
  • admin
  • shelandr.ru
Маленький экскурс. На сегодня наиболее быстрым терминалом,позволяющим строить и запускать автоматически исполняемые стратегии ( роботы или эксперты ) является терминал метатрейдер 5 или сокращённо МТ5. Почему именно так? Есть ведь терминал МТ4… Да есть..и последний год я активно его применял и писал роботов и индикаторы.. Весьма эффективно...
 
shelandr:

Pas du tout - le terminal ne se bloque que lorsqu'il y a deux événements - une opération telle que la modification d'un ordre et un mouvement brusque du prix de l'instrument - le serveur d'échange ferme toutes les demandes des clients et ils se bloquent.

Lorsque le mouvement des prix est stabilisé, il commence à répondre aux demandes des clients.

La raison en est que le serveur, à ces moments-là, soit n'a pas le temps de traiter les demandes, soit le fait exprès pour ne pas permettre au client de recevoir un bénéfice. Pour comprendre cela, nous avons besoin d'un protocole d'échange MT%6 avec le serveur des sociétés de courtage.

D'ailleurs, en ce moment, la position ne peut pas être piratée même depuis le terminal - elle est indisponible...

Vous racontez de telles histoires d'horreur) 2 événements ne sont pas traités ensemble mais séquentiellement, il y a des erreurs et elles doivent être analysées et évitées) Ne confondez pas les performances du serveur et du terminal.
Raison: