Échange de données entre deux terminaux MT4 ?

 

Bonjour !


Je veux mettre en œuvre la stratégie suivante : " Tirez parti de la différence entre les devis de différentes sociétés de courtage:

La stratégie est très simple : vous pouvez placer des taux opposés sur le même outil dans deux sociétés de courtage et attendre que les cotations divergent dans la bonne direction, puis vous pouvez fermer les deux paris et faire un profit au total (la valeur des cotations divergentes doit être supérieure à la commission totale des deux sociétés de courtage).


Cette stratégie n'est pas nouvelle depuis longtemps, mais je ne l'ai pas encore vue. Je veux l'utiliser.


Le principal problème est la nécessité de connaître à tout moment la valeur des cours pour les deux sociétés de courtage simultanément, et le conseiller ne travaille qu'avec un seul terminal (une seule société de courtage).

C'est-à-dire que dans chacun des terminaux MT4, un conseiller expert est en cours d'exécution et ce conseiller expert ne connaît que ses cotations et celles de son voisin, et nous ne connaissons pas ses cotations !

Nous devons faire en sorte que les deux EA connaissent les cotations de l'autre, c'est-à-dire qu'ils puissent échanger des données entre eux.


Je veux qu'ils partagent ce qu'ils savent à ce sujet. Je souhaite également obtenir des commentaires.


J'ai trouvé deux façons d'échanger des données :


1) la plus triviale : écrire des données dans un fichier et lire ce fichier par un autre Expert Advisor. En fait, c'est très facile à faire. Le seul problème est que le conseiller expert ne peut lire et écrire des fichiers que dans "son répertoire". Mais tout peut être résolu avec dll.

Il existe un autre bon inconvénient : la faible vitesse d'échange. On ne peut pas comparer avec la vitesse d'écriture et de lecture de la mémoire(((.


2) Je ne suis pas sûr de ce que vous pouvez faire (puisque je ne suis pas un très bon programmeur), mais, ici, je voudrais apprendre des programmeurs tels :

Allouez un emplacement dans la mémoire et écrivez-y des citations, l'adresse de cet emplacement est connue des deux EA, qui peuvent donc lire et écrire à cet emplacement.

Bien sûr, toute cette technologie est mise en œuvre par le biais d'un dll.

3) J'ai aussi trouvé GlobalAddAtom, mais comment écrire une dll avec ?


Si quelqu'un est intéressé par cette stratégie et souhaite également la mettre en œuvre, alors n'hésitez pas à me contacter, je serai heureux de partager mon travail !

 
Une triste fin à une telle stratégie pourrait se produire http://www.kroufr.ru/forum/index.php/topic,6265.0.html.
 
Et comment envisagez-vous ce genre de travail à travers une DLL ?
 
geopoint:
Une triste fin à une telle stratégie pourrait se produire http://www.kroufr.ru/forum/index.php/topic,6265.0.html.
Je ne comprends pas vraiment, n'est-ce pas ? C'est probablement à cause du fait que le DC pourrait aller se faire foutre s'il le découvrait, n'est-ce pas ?
 
D500_Rised:
Et comment imaginez-vous ce genre de travail à travers DLL ?

Je ne pense pas que les moyens standards de MQL4 seront capables de faire l'échange. Mais si vous savez comment faire, merci de partager !

Et grâce à la dll, vous pourriez, par exemple, connecter une fonction qui pourrait lire les fichiers de n'importe quel répertoire, et pas seulement d'un seul !

 

dll de chaque terminal feront toujours référence au même fichier commun. Il me semble que cela entraînera un certain nombre de bogues qui rendront le fonctionnement de ce système instable. IMHO.

Avez-vous regardé le multiterminal ? Est-il possible de se connecter à différents serveurs en même temps ?

Une idée m'est venue à l'esprit : si multiterminal a la capacité de travailler avec plusieurs comptes, alors il peut probablement travailler avec les serveurs réels et démo simultanément. Que se passe-t-il si nous remplaçons l'adresse du serveur de démonstration par l'adresse du serveur réel d'une autre société de courtage ?

 
D500_Rised:

dll de chaque terminal feront toujours référence au même fichier commun. Il me semble que cela entraînera un certain nombre de bogues qui rendront le fonctionnement de ce système instable. IMHO.

Avez-vous regardé le multiterminal ? Est-il possible de se connecter à différents serveurs en même temps ?

Une idée m'est venue à l'esprit : si multiterminal a la capacité de gérer plus d'un compte, il est peut-être possible de travailler simultanément avec les serveurs réel et démo. Que se passe-t-il si nous remplaçons l'adresse du serveur de démonstration par l'adresse du serveur réel d'une autre société de courtage ?

Pas d'erreur, car j'ai déjà fait ce chemin dans le fichier. Les fichiers sont au nombre de 2, c'est-à-dire que chaque EA a son propre fichier dans lequel il enregistre les cotations et les EA lisent les fichiers des autres. L'essentiel est de faire une lecture et une écriture correctes (le conseiller expert lit le même fichier tout le temps et écrit dans le même fichier tout le temps). Je suis d'accord pour dire que la stabilité sera pire que de se référer à la mémoire.


Le Multiterminal ne dispose pas d'une telle option, et même s'il en disposait, vous ne pouvez pas y exécuter des EA. Voulez-vous mettre en œuvre un tel système manuellement ? (Je ne le fais pas)

 
D500_Rised:

Avez-vous regardé le multiterminal ? Est-il possible de se connecter à différents serveurs en même temps ?


pas de
 

Je me demande s'il est possible d'ordonner dans le temps l'écriture_1---lecture_2, l'écriture_2---lecture_1.

Comment le processus est-il organisé pour que les EA ne se rencontrent pas sur le même fichier, peuvent-ils distinguer les données lues précédemment des nouvelles données (ce qui nécessite un temps d'identification supplémentaire) ?

Et en général, le jeu en vaut-il la chandelle ? S'il doit y avoir une différence dans les citations, il y a plusieurs choses contre ce jeu à la fois :

1- 2 spreads (2*2-4 pips)

2- Le glissement.

3- Faible vitesse réelle d'exécution des ordres(pendant le traitement de l'ordre du dealer, le prix peut changer et annuler la différence positive) + requotes

etc.

 
D500_Rised:

Je me demande s'il est possible d'ordonner dans le temps l'écriture_1---lecture_2, l'écriture_2---lecture_1.

Comment le processus est-il organisé pour que les EA ne se rencontrent pas sur le même fichier, peuvent-ils distinguer les données lues précédemment des nouvelles données (ce qui nécessite un temps d'identification supplémentaire) ?

Et en général, le jeu en vaut-il la chandelle ? S'il doit y avoir une différence dans les citations, il y a plusieurs choses contre ce jeu à la fois :

1- 2 spreads (2*2-4 pips)

2- Le glissement.

3- Faible vitesse réelle d'exécution des ordres (pendant le traitement de l'ordre du dealer, le prix peut changer et annuler la différence positive) + requotes

etc.

Ce n'est pas un problème car un EA écrit tout le temps dans un fichier et l'autre EA lit tout le temps à partir de ce fichier et l'ordre dans lequel cela se produit n'a pas d'importance. Pour vérifier la pertinence des données, j'ai utilisé l'heure locale, c'est-à-dire que les citations sont écrites toutes les 100 millisecondes, puis leur pertinence est vérifiée en fonction de l'heure locale.


À propos des "chandeliers" : je ne connais pas la réponse exacte, c'est pourquoi je veux la vérifier. Je suis plus convaincu par les données quantitatives. Si l'écart total est de 4 pips et la divergence de 10 pips, alors même dans de mauvaises conditions, nous pouvons obtenir au moins la moitié de 6 pips rentables, qu'en pensez-vous ?

 
D500_Rised:

Je doute de la possibilité d'un ordre correct chronométré de write_1---read_2, write_2---read_1.

Peut-être pouvez-vous suggérer votre propre méthode, parce que nous ne discutons que d'un seul moyen : le fichier, mais il en existe des plus avancés : la mémoire, pouvez-vous en dire quelque chose ?