Échange de données entre deux terminaux MT4 ? - page 4

 

J'avais l'habitude de faire une telle connexion entre terminaux via WinAPI. La liste des fenêtres ouvertes recherchera tous les terminaux MT4 en cours d'exécution. Il y avait deux options pour obtenir des devis :


1. Lire les citations de la "Market Watch" (contrôle de type ListView) des terminaux trouvés. Cela ne peut être fait qu'à partir d'une DLL externe.

2) Sans utiliser de DLL externe. Dans chaque terminal, le conseiller expert qui a été lancé écrit ses cotations (pour son symbole) dans le descripteur de texte de sa fenêtre. Et un Expert Advisor d'un autre terminal trouve cette fenêtre (avec son propre nom de symbole) et lit la cotation.


Il y avait un inconvénient : si la connexion avec le serveur commercial sur l'un des terminaux est coupée, le conseiller expert sur l'autre terminal ne le saura pas. Pour éviter une telle situation, les experts de chaque terminal doivent écrire l'heure actuelle dans un descripteur de texte d'une fenêtre (la deuxième variante peut être écrite dans leurs fenêtres). Cette opération est effectuée à chaque période de temps (par exemple 0,5 seconde). Le conseiller expert d'un autre terminal lit cette heure et la compare à sa propre heure.

 
Meat:

J'avais l'habitude de faire une telle connexion entre terminaux via WinAPI. La liste des fenêtres ouvertes recherchera tous les terminaux MT4 en cours d'exécution. Il y avait deux options pour obtenir des devis :


1. Lire les citations du "Market Watch" (contrôle de type ListView) des terminaux trouvés. Cela ne peut être fait qu'à partir d'une DLL externe.

Pourriez-vous nous donner un peu plus de détails, c'est très intéressant. Je vous en serais très reconnaissant.
 
Sergey_Murzinov писал (а): Un peu plus de détails pouvez-vous, c'est très intéressant. Je vous en serais très reconnaissant.
Malheureusement, je n'ai pas le code source de DLL (et DLL lui-même) pour le moment. Mais j'ai décrit l'algorithme général ici : https://www.mql5.com/ru/forum/107435/page3

Si vous avez besoin de plus de détails, vous pouvez trouver une construction toute faite sur le web, en utilisant un moteur de recherche (quelque chose comme "get text from ListView").

 

J'ai fait un tel bind via des fichiers (jusqu'à 5 terminaux), je n'ai pas vu de lags.

Le temps nécessaire à l'exécution d'une opération commerciale est plus long de plusieurs ordres de grandeur que le temps nécessaire à l'échange d'informations.

 
komposter:

J'ai fait un tel bind via des fichiers (jusqu'à 5 terminaux), je n'ai pas vu de lags.

Le temps nécessaire à l'exécution d'une opération commerciale est plus long de plusieurs ordres de grandeur que le temps nécessaire à l'échange d'informations.

Je comprends que ça fait plus d'un mois, mais peut-être...

Vous avez mentionné le sujet de la liaison des terminaux via des fichiers, c'est ce que je veux mettre en œuvre pour moi. Je suis sur les forums depuis deux jours maintenant, mais je n'ai toujours pas trouvé la voie à suivre. Tout ce dont j'ai besoin est de copier un fichier écrit d'un terminal à d'autres terminaux (experts/files). Je ne suis pas un programmeur, je ne sais pas comment faire. J'ai trouvé une fonction ShellExecuteA, elle peut exécuter une application externe à partir d'un indicateur, mais si c'est possible il y a un moyen de copier des fichiers d'un EA à un autre (pas MQL) sans créer un fichier bat supplémentaire. Aidez-moi, il y a peut-être un lien vers des scripts prêts à l'emploi. Je risque d'avoir du mal à le comprendre moi-même, DLL et WinAMI sont encore un sujet qui ne m'est pas familier. Merci d'avance.

 
Je me demande pourquoi 2 DCs, prenant deux paires positivement corrélées, obtiennent le même résultat.
 
iskatel писал (а):П Je réalise que ça fait plus d'un mois, mais peut-être... Vous avez mentionné ici le sujet de la liaison des terminaux via des fichiers, c'est quelque chose que je veux mettre en œuvre pour moi-même. Je suis sur les forums depuis deux jours maintenant, mais je n'ai toujours pas trouvé la voie à suivre. Tout ce dont j'ai besoin est de copier un fichier écrit d'un terminal à d'autres terminaux (experts/files). Je ne suis pas un programmeur, je ne sais pas comment faire. J'ai trouvé une fonction ShellExecuteA, elle peut exécuter une application externe à partir d'un indicateur, mais si c'est possible il y a un moyen de copier des fichiers d'un EA à un autre (pas MQL) sans créer un fichier bat supplémentaire. Aidez-moi, il y a peut-être un lien vers des scripts prêts à l'emploi. Je risque d'avoir du mal à le comprendre moi-même, DLL et WinAMI sont encore un sujet qui ne m'est pas familier. Merci d'avance.

Voyez comment elle est mise en œuvre ici : "Optimisation automatique d'un robot de trading en situation réelle".

Copie à l'aide de ShellExecuteA.

 
xrust:
Je me demande pourquoi 2 DCs, prenant deux paires positivement corrélées, obtiennent le même résultat.

2 DCs, c'est de l'expérience de vie " ne mettez pas tous vos œufs dans le même panier", peu importe : problèmes de retrait, le serveur raccroche. Je suis sûr que vous en savez plus que moi sur ces situations. Ils recherchent des scripts pour automatiser leur travail. Je n'en ai pas vraiment 2, j'en ai plus. J'aime trader manuellement et en répétant une seule et même action, vous pouvez vous tromper quelque part. Et l'ordinateur sur plusieurs terminaux exécutera les opérations beaucoup plus rapidement que moi. Mais il semble que j'ai déjà trouvé ce que je cherchais. Merci pour votre forum, bon travail.

Au fait, je dois avouer que je ne sais pas ce que sont les "paires positivement corrélées". De toute la phrase, je ne connais que le mot "résultat".

Merci pour les réponses.

 
Le système a été mis en place depuis longtemps...
si vous voulez entrer dans les détails... frappez stu_dent[@]mailcan.com
 
DentStu:
Le système a été mis en place depuis longtemps...
si vous voulez entrer dans les détails... frappez stu_dent[@]mailcan.com

Oui, je l'ai déjà fait. Mais merci quand même.