Comment envoyer / recevoir des données vers / depuis MetaTrader Ternminal 4 avec JAVA (ou quoi que ce soit!)


J'ai travaillé sur un algorithme ( pas le mien, je ne fais que le modifier ) qui prédit quand acheter et vendre sur le marché FOREX. Je dois pouvoir ouvrir et fermer des ordres, mettre à jour dynamiquement les paramètres des ordres ( tels que stoploss, arrêt maximum, etc. ) et recevoir des données de tick en temps réel.

Je fais des recherches depuis plus d'une semaine et je n'ai aucun succès.

Le plus proche que j'ai obtenu utilise JavoNet et Mt4 Api

J'ai réussi à importer le DLL en java et utiliser une fonction MQL4, qui était AccountBalance(), mais cela a retourné 0.0, qui n'était pas le solde du compte, j'ai foiré avec le code et les paramètres sur le client MT4 mais toujours pas de chance.

Q0: Quelqu'un peut-il m'indiquer la bonne direction?

Je suis nouveau dans le trading FOREX automatisé mais d'après ce que je comprends, il y a un courtier quelque part avec un serveur MT4 et je me connecte à ce serveur avec mon client MT4 sur mon Windows machine.

Q1: Si c'est le cas, dois-je faire fonctionner une API côté serveur au lieu de mon côté client?

Toutes ces DLL que j'ai essayées jusqu'à présent ont été utilisées avec le logiciel client MT4 sur ma machine.

J'ai également fait quelques lectures sur le protocole FIX et ZeroMQ.

Q2: Ceux-ci peuvent-ils m'aider à atteindre mon objectif de quelque manière que ce soit (au lieu de créer des ponts entre les DLL JAVA et MT4)?

Author: user3666197, 2016-09-20

2 answers

A0: oui, oubliez directement le REPOS et les chaînes de blocage synchrones dans le domaine de trading FX

A1: eh bien, pas d'une manière typique. MetaTrader Server est une suite propriétaire de systèmes côté courtier et leur API ne sont pas divulguées pour permettre certaines intégrations tierces.

entrez la description de l'image ici

A2: FIX-Protocole, qui est le standard de l'industrie LP-interfaçage lingua franca. Dans le cas où vous avez contracté des relations avec votre fournisseur de négoce institutionnel, incl. le protocole de CORRECTION GWY-port, cela peut vous fournir un accès de niveau A au Marché et d'intégrer vos outils de trading contre. Si tel est le cas, oubliez l'instrumentation MT4, car les cadences aux heures de grande écoute sont bien au-delà de l'architecture de traitement localhost du terminal MT4 (plusieurs événements avec une résolution de domaine temporel inférieure à la milliseconde sont courants, alors que MQL4 ne fournit aucun support direct pour le programme multithread-concurrent / better parallel planification des conceptions). Les événements FIX-Protocol sont simplement désactivés-l'image ci-dessus, étant très à gauche, "avant" que le graphique commence à partir de la 1ère colonne [ms].

ZeroMQ peut aider libérer les autres modèles de MQL4 limites. J'aimerais peut-être lire mes autres articles sur les systèmes distribués, où les infrastructures MQL4 / ZeroMQ / ML-AI-predictors / GPU-processing apparaissent.

Quoi qu'il en soit:

Profitez des mondes sauvages de MQL4/MQL5


Intéressé? Peut aussi, comme la lecture d'autres MQL4, ZeroMQ de traitement distribué et faible latence comptoirs

 3
Author: user3666197, 2017-05-23 10:30:04

Si vous devez envoyer/recevoir un message synchrone entre MT4 et l'application Java, REST serait la meilleure approche car la réponse rapide est importante dans ce scénario. Les solutions de file d'attente de messages comme ZeroMQ s'intègrent mieux dans les solutions asynchrones, donc cela ne vous aidera pas. Une fois que vous avez choisi l'approche REST, vous pouvez utiliser MQL4 WebRequest() pour appeler votre application Java.

 0
Author: Eric, 2016-12-01 16:20:50