![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Et oui, l'analyse syntaxique des textes en MQL est très amusante :-) Eh bien, il n'est pas conçu pour l'analyse de texte. Je veux dire, tu peux, mais c'est une déception...
Les tableaux et les ordres - c'est ce qui caractérise MQL
C'est de ça que je parle... :)
La polyvalence est souvent synonyme de lenteur, et encore plus avec la corde.
Laissez-moi vous donner un exemple.
Une fois, j'ai analysé une chaîne reçue d'une bourse de cryptage en utilisant WebRequest. Et je l'ai analysé en utilisantla bibliothèque JSON de Sergeev, qu'il a portée depuis la "bibliothèque C++ à grande vitesse". Et j'ai remarqué que la vitesse est très insatisfaisante. Là-bas, tout se faisait par le biais de cordes "universelles".
J'ai compris que la raison de la faible vitesse était la chaîne de caractères et je voulais éviter d'utiliser des fonctions de chaîne de caractères et j'ai écrit une fonction qui analyse directement le tableau uchar. Le résultat m'a beaucoup surpris. Ma vitesse d'analyse était de.... (roulement de tambour) 800 fois plus rapide. Si l'analyse d'une chaîne entière dans JSON prenait 0,3 seconde, ma fonction l'a analysée en moins d'une demi-milliseconde.
Voici un exemple de mon analyse syntaxique via un tableau uchar.
L'essentiel de votre suggestion est le suivant :
À l'origine, je voulais utiliser des objets MT pour transférer des chaînes de caractères.
La deuxième variante m'a semblé plus rapide au départ.
Lorsque vous avez autant de tâches à accomplir que moi, vous devez vous fier à votre intuition pour choisir une solution. Vous n'aurez pas assez de vie pour tout vérifier minutieusement. Vous avez besoin d'une équipe ou d'un grand sens de l'intuition pour choisir la bonne direction. Et bien sûr, il faut sacrifier le professionnalisme et supporter les lacunes dans les connaissances. Sinon, vous en resterez à l'artisanat (bien que professionnel) et vous ne terminerez jamais un mégaprojet. C'est la réalité.
L'essentiel de votre suggestion est le suivant :
Pas du tout comme ça.
Je suis occupé en ce moment - pas le temps d'expliquer.
Si vous démontez mon code en détail, de manière à ne laisser aucun espace vide, vous ferez beaucoup de découvertes par vous-même.
ZS. Mais sans débogueur, il sera beaucoup plus difficile de le comprendre. Je ne sais pas si vous avez commencé à l'utiliser ou si vous n'utilisez toujours pas cet outil important.
...
Si vous examinez mon code en détail et que vous ne laissez pas d'espaces vides, vous ferez beaucoup de nouvelles découvertes.
ZS. Seulement, sans utiliser le débogueur, il sera beaucoup plus difficile de comprendre. Je ne sais pas si vous avez commencé à l'utiliser ou si vous n'utilisez toujours pas cet outil important.
Je regarderai de plus près votre code demain. (N'oubliez pas les fuseaux horaires).
Peut-être qu'en effet, je vais découvrir quelque chose de nouveau. ))
Toute structure est une chaîne de caractères. Un tableau de structures est un tableau de chaînes de caractères avec une description de leur format. Classe - structure et méthodes, implémentation de la classe - tableau d'implémentations (pardonnez mon français).
Vous n'avez pas besoin de convertir quoi que ce soit jusqu'au dernier moment. Il n'y a que des ficelles partout. Simplement, ils sont normalisés : certains prennent 2, ou 4 octets, et d'autres 1, il faut donc les aligner.
J'ai utilisé cette approche pour la première fois vers 1993, avec le SGBD Clarion. Cela a fonctionné très rapidement.
Toute structure est une chaîne de caractères. Un tableau de structures est un tableau de chaînes de caractères avec une description de leur format. Classe - structure et méthodes, implémentation de la classe - tableau d'implémentations (pardonnez mon français).
Vous n'avez pas besoin de convertir quoi que ce soit jusqu'au dernier moment. Il n'y a que des ficelles partout. Simplement, ils sont normalisés : certains prennent 2, ou 4 octets, et d'autres 1, il faut donc les aligner.
J'ai utilisé cette approche pour la première fois vers 1993, avec le SGBD Clarion. Tout s'est déroulé très rapidement.
A peu près au même moment avec le même :-) Une école... d'ailleurs le SGBD n'était pas mauvais et était en avance sur son temps à bien des égards.
PS/ il y a parfois un chatouillement, a posteriori au niveau du concept "tout est une chaîne/un texte". La vitesse est vraiment au niveau de celle de python.
Je regarderai de plus près votre code demain. (N'oubliez pas les fuseaux horaires).
Peut-être que je vais vraiment découvrir quelque chose de nouveau. ))
Peut-être que cela sera utile
L'exemple d'indicateur qui utilise la variable ressource sur l'exemple double, qui ne réinitialise pas sa valeur lors du changement de TF. C'est une alternative plus pratique aux variables globales du terminal. De la même manière, différentes structures de données et des tableaux de ces structures peuvent être utilisés comme des structures globales.
ça peut toujours être utile.
)
Par souci d'intérêt, je vais essayer la variante avec l'union. Et avecCharArrayToString et StringToCharArray. Bien que mon intuition me dise que ce ne sera guère plus rapide que la communication via la description d'objets МТ. Mais je peux me tromper. Voyons voir...
Peter, vous avez créé un joker dès le début, et maintenant vous vous disputez sur les performances de la messagerie au sein de votre joker. Vous l'avez compris : une corde est juste un *** pratique, rien de plus. Toute donnée n'est en fait qu'une collection d'octets en mémoire. On vous conseille donc de manipuler les octets directement, mais vous êtes toujours aussi têtu pour ne pas comprendre qu'une même chaîne est un même tableau d'octets. Ainsi, vous ne perdez rien lors de la conversion d'une chaîne de caractères en tableau uchar, mais lors de l'analyse syntaxique d'une chaîne de caractères, vos performances sont vraiment ralenties. C'est pourquoi toute votre intuition est juste absente.
1. Peter, à l'origine vous avez fait un jeu, et maintenant vous vous disputez sur les performances de la messagerie dans votre jeu.
2. vous comprenez : une chaîne n'est qu'un *** pratique, rien de plus. Toute donnée n'est en fait qu'une collection d'octets en mémoire. Ils vous conseillent donc de travailler directement avec les octets, mais vous êtes toujours aussi têtu et ne comprenez pas que la même chaîne de caractères est le même tableau d'octets. Vous ne perdez donc rien lors de la conversion de la chaîne de caractères en tableau d'uchar, mais lorsque vous analysez une chaîne de caractères, vos performances ralentissent vraiment.
3. Donc toute votre intuition est juste un manque.
1. "Sauvage" - dans ce cas, c'est votre compréhension, pas ce que j'ai fait. Il a fallu 75 pages pour que vous compreniez de quoi il s'agit et ce qu'est le moteur. Comprendre : les défauts et les erreurs ne caractérisent pas une entité. Aucune forme de l'essence ne caractérise l'essence elle-même. Tout comme vos vêtements ne définissent pas le genre de personne que vous êtes. Seule la pensée erronée juge le tout par le particulier.
2. Pour moi, c'est clair comme de l'eau de roche. Je vais vérifier aujourd'hui s'il y a un réel gain de vitesse en utilisant la fonction StringToChar.
3. Chaque jour, je vérifie mon intuition. J'en doute tous les jours. Et à juste titre. Si elle échoue, vous devez vous laisser guider par la Raison. Mais la Raison est trop limitée, arrogante et stupide pour qu'on puisse toujours s'y fier. L'intuition est donc la seule alternative. Si vous voyez ce que je veux dire...