Discussion sur "Comment écrire une DLL pour MQL5 et échanger des données en 10 minutes".
Un article très intéressant. Il est absent pour des raisons d'exhaustivité :
1. D'où viennent les devis, peuvent-ils être pris dans des fichiers hst ?
2. Comment rendre cette bibliothèque compatible avec celle du MateLab 2009a ou 2009b ? Ils ont aussi le C et le C++ là-bas, n'est-ce pas ?
Une très grosse demande.
- Les citations sont tirées du terminal - elles sont maintenant à la fois détaillées et profondes (10 ans et plus).
En aucun cas nous ne devons regarder directement dans les fichiers binaires des stockages terminaux - cela ne ferait que provoquer de graves conflits d'accès aux données. Même si les tests ont montré "ça a marché, pas de problèmes", il y aura toujours un moment d'accès simultané à ces données du terminal et du programme externe, et quelqu'un se plantera en conséquence. Les gens sont tombés dessus de nombreuses fois. - L'ancrage des bibliothèques dans MQL5 est maintenant beaucoup plus facile, grâce à la prise en charge transparente des conventions stdcall / cdecl sur les appels de DLL.
Si quelqu'un écrit un bon article détaillé sur la liaison entre MetaTrader 4/5 et Matlab via DLL, il gagnera 200 $ ou plus.
La communauté MQL4.community a déjà des articles sur l'offre groupée Matcad - MetaTrader 4 :
- www.mql5.com
Je dois relier deux terminaux pour qu'ils traduisent leurs devis en Excel en temps réel.
Dans MT4, cela peut être fait avec DDE. Dans MT5, il semble que le recours à la DLL soit la seule solution.
Mais si chaque tick entrant est transmis à la DLL... Je pense que ce sera quelque chose d'inimaginablement lent. Bien sûr, je n'ai pas encore essayé de l'appliquer... mais honnêtement, je n'ai pas envie d'essayer. Ça va être un cauchemar.
En bref, rendons DDE à MT5. C'est un anachronisme, mais parfois vous pouvez en avoir besoin.
P.S. Merci pour cet article, il tombe à point nommé. Il me manquait justement un tel matériel.
Renat, qu'en est-il de la vitesse d'appel de la dll ?
Il est très facile de vérifier la vitesse d'appel. Par exemple, un calcul approximatif peut être effectué comme suit :
_DLLAPI int __stdcall fnCalcSpeed(int var1,int var2,int var3) { return(0); } #import "MQL5DLLSamples.dll" int fnCalcSpeed(int var1,int var2,int var3); #import int calls=0; int ticks=GetTickCount(); while(GetTickCount()-ticks<1000) { for(int i=0;i<1000;i++) fnCalcSpeed(1,2,3); calls++; } Print(calls * 1000, "вызовов в секунду");
J'ai obtenu 57 000 appels par seconde sur un Quad Q9400 @2.66Ghz. Le même code donne environ 20 000 000 d'appels par seconde dans MetaTrader 4, car il n'y a pas de contrôle et de tuyauterie dans ce cas.
Nous allons certainement essayer de réduire la perte sur les appels DLL dans MetaTrader 5.
Ah, eh bien, s'il y a environ 50 000 appels par seconde, je pense qu'il est possible de diffuser des citations à travers la DLL également. Il n'y aura pas de pertes.
Merci pour le code.
S'il est possible d'exporter des cotations uniquement par le biais de la dll, cela signifie qu'un script doit être placé sur chaque instrument à exporter ? Et s'ils sont nombreux ? Par exemple, 50 ?
Je comprends qu'il est possible de passer des cotations pour de nombreux instruments dans un script, mais ce ne sera pas un substitut à part entière de DDE, où les ticks ne sont pas perdus.
Le fait est que nous ne sommes pas chargés de "fournir une interface de devis".
Notre objectif est de créer un environnement complet et autosuffisant pour le développement de systèmes analytiques. Un environnement tel que même les programmes tiers n'ont pas besoin d'être utilisés.
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Article publié Comment écrire une DLL pour MQL5 en 10 minutes et échanger des données ?:
Auteur : Renat Fatkhullin