Discussion de l'article "Comment exporter des cotations de МetaTrader 5 vers des applications .NET à l'aide des services WCF" - page 2

 
Merci de votre attention ! Introduction très utile à wcf et mql5
 

j'ai aussi eu un crash dans le testeur de stratégie. en mode normal, c'est bon.

est-ce que quelqu'un a déjà trouvé une solution ?

 
Merci pour votre excellent travail !
 

Excellent travail Alexander. Je n'avais jamais codé en C# auparavant et je cherchais à faire passer les cotations MT5 dans Excel sans utiliser le serveur DDE.

J'ai finalement réussi à le faire en modifiant votre code avec MT5 32 bits. Prochaine étape : x64.

SM

 
a récemment vu un autre moyen gratuit de programmer C# pour MetaTrader
TradePlatform.NET
 
Je suis en train d'essayer d'implémenter mon propre wrapper c++ pour ma dll c# pour l' interopérabilité mql5. J'ai un problème avec l'ajout de la référence de la dll c# à ma bibliothèque c++. Pourriez-vous clarifier la phrase suivante "...ajouter le support CLR, System.dll, QExport.d ll, Qexport.Service.dll à la référence de construction". J'ai pu enregistrer ma dll avec l'utilitaire regasm, l'ajouter au gac et obtenir un fichier de définition de type .tlb. Mon problème est que je ne trouve aucune instruction #import ou #include dans le code source que vous m'avez fourni. Votre projet semble faire référence à vos bibliothèques dll d'une manière mystérieuse. Quelqu'un pourrait-il m'expliquer comment ajouter une référence à une dll .NET dans une bibliothèque C++ ? Même s'il ne s'agit pas d'une question purement mql5, elle est directement liée à l'article. J'ai fait des recherches sur le sujet pendant un certain temps maintenant et je n'arrive toujours pas à comprendre comment une bibliothèque c++ peut avoir des dll .NET dans ses "dépendances externes" sans aucune instruction #import. J'ai même pensé à convertir le .dll en .lib et à y ajouter une référence, mais avant de faire quoi que ce soit, j'ai décidé de demander l'avis d'un spécialiste COM. Je tourne sous Windows 8 Ultimate x64 et je compile mes dll c# avec VS2012 Ultimate. Merci d'aider le novice.
How to Exchange Data: A DLL for MQL5 in 10 Minutes
  • 2010.01.27
  • MetaQuotes Software Corp.
  • www.mql5.com
Now not so many developers remember how to write a simple DLL, and what are special features of different system binding. Using several examples, I will try to show the entire process of the simple DLL's creation in 10 minutes, as well as to discuss some technical details of our binding implementation. I will show the step-by-step process of DLL creation in Visual Studio with examples of exchanging different types of variables (numbers, arrays, strings, etc.). Besides I will explain how to protect your client terminal from crashes in custom DLLs.
 
Burton:

Je suis en train d'essayer d'implémenter mon propre wrapper c++ pour ma dll c# pour l' interopérabilité mql5. J'ai un problème avec l'ajout de la référence de la dll c# à ma bibliothèque c++. Pourriez-vous clarifier la phrase suivante "...ajouter le support CLR, System.dll, QExport.d ll, Qexport.Service.dll à la référence de construction". J'ai pu enregistrer ma dll avec l'utilitaire regasm, l'ajouter au gac et obtenir un fichier de définition de type .tlb. Mon problème est que je ne trouve aucune instruction #import ou #include dans le code source que vous m'avez fourni. Votre projet semble faire référence à vos bibliothèques dll d'une manière mystérieuse. Quelqu'un pourrait-il m'expliquer comment ajouter une référence à une dll .NET dans une bibliothèque C++ ? Même s'il ne s'agit pas d'une question purement mql5, elle est directement liée à l'article. J'ai fait des recherches sur le sujet pendant un certain temps maintenant et je n'arrive toujours pas à comprendre comment une bibliothèque c++ peut avoir des dll .NET dans ses "dépendances externes" sans aucune instruction #import. J'ai même pensé à convertir le .dll en .lib et à y ajouter une référence, mais avant de faire quoi que ce soit, j'ai décidé de demander l'avis d'un spécialiste COM. Je tourne sous Windows 8 Ultimate x64 et je compile mes dll c# avec VS2012 Ultimate. Merci d'aider le novice.
Assez stupidement, j'ai découvert que je pouvais référencer les dll c# à partir d'un projet c++ en faisant un clic droit sur celui-ci et en choisissant Références... dans la boîte de dialogue. Il y a tellement de conneries sur le web.
 
C'est très intéressant, merci. Mais il y a peut-être des options plus simples aujourd'hui.
 
shelandr1:
Très intéressant... Merci... Mais il y a peut-être aujourd'hui des moyens plus simples* ???

L'article est bon pour parler de WCF à ceux qui ne sont pas familiers avec cette technologie. En passant, j'ai vérifié les performances de WCF via Internet sur la distance Peter - Odessa, j'ai obtenu une vitesse décente d'environ 14000 transactions bilatérales/sec avec des paquets de 1kB. Personnellement, j'aime cette technologie parce qu'elle est orientée objet, c'est-à-dire qu'elle ne transmet pas un flux d'octets (même si c'est possible), mais des instances de classes, c'est-à-dire que le destinataire n'a pas besoin de décoder ce flux.

En ce qui concerne les citations, il est plus facile d'utiliser la cartographie de la mémoire. Nous commençons une tâche séparée avec un mutex dans une application .NET, MQL4 charge les données en mémoire et réinitialise le mutex, après quoi l'application lit les données. C'est plus simple et plus rapide, et vous n'avez pas besoin d'une DLL. Il est seulement nécessaire d'ajouter des DLL système dans MQL4 pour prendre en charge le mappage et les mutex, il y a eu un article récent sur ce sujet.

 
joeykruger:

J'ai réussi à faire fonctionner l'EA avec MT5 32bit et, après avoir recomplété pour x64, j'ai réussi à le faire fonctionner avec MT5 64bit.... cependant, lorsque j'essaie d'exécuter l'EA dans le testeur de stratégie, ils se plantent tous les deux de manière spectaculaire.

J'aimerais l'utiliser pour exporter des données de prix et d'indicateurs dans une table de base de données afin d'effectuer des analyses avec un logiciel externe...... Vous avez une idée de la cause de ce plantage ? C'est la solution la plus proche que j'ai trouvée jusqu'à présent.


Joe

Bonjour Joe,

Y a-t-il une astuce spéciale pour le faire fonctionner sur x64 ? Je viens de le compiler pour x64, mais la dll se plante avec des erreurs bizarres au démarrage.