Discussion de l'article "Comment Échanger des Données : Une DLL pour MQL5 en 10 minutes" - page 2

Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
...
C'est très bien que vous en parliez, mais cela ne sert à rien de s'en plaindre si l'on n'est pas prêt à présenter des solutions ou même des suggestions sur la manière d'atteindre l'objectif.
...
En fait, c'est une bonne chose que pfx ait soulevé le problème et s'en soit plaint, et MetaQuotes devrait résoudre ce problème, car ils connaissent MetaTrader mieux que le reste d'entre nous (BTW, Renat Fatkhullin, l'auteur de cet article, est également le PDG de MetaQuotes). Ce n'est pas parce que quelqu'un en parle qu'il a la solution au problème.
Et je suis d'accord qu'il n'est pas logique de dire"Il vaut mieux faire des appels peu fréquents", alors que .dll est en fait appelé à chaque tick. Et il est bon d'entendre cela de la part du PDG de MetaQuotes, l'honnêteté fait du bien de nos jours.
@ pfx, on dirait qu'ils ont changé le paragraphe que vous avez cité ...
5. wrapper d'appels DLL et perte de vitesse sur les appels
Comme décrit ci-dessus, chaque appel de fonctions DLL est enveloppé dans un wrapper spécial afin de garantir la sécurité.
Cette liaison masque le code de base, remplace la pile, prend en charge les accords stdcall / cdecl et surveille les exceptions au sein des fonctions appelées.
Ce travail entraîne inévitablement un retard de la fonction appelante.
Par conséquent, il n'est pas recommandé d'effectuer des appels de fonctions DLL très fréquents (des centaines ou des milliers de fois par seconde) pour de petites opérations.
Il est préférable d'effectuer des appels peu fréquents.
... à celle-ci ...
5. Le wrapper d'appels DLL et la perte de vitesse sur les appels
Comme décrit ci-dessus, chaque appel de fonctions DLL est enveloppé dans un wrapper spécial afin de garantir la sécurité. Ce binding masque le code de base, remplace la pile, supporte les accords stdcall / cdecl et surveille les exceptions dans les fonctions appelées.
Ce volume de travail n'entraîne pas de retard significatif dans l'appel des fonctions.
J'espère qu'ils vont vraiment résoudre ce problème de vitesse d'appel de .dll perdu, et pas seulement changer un paragraphe de l'article pour éviter les questions.
En parlant de questions, j'espère que Renat Fatkhullin voudra bien répondre à la question de pfx " Je veux dire sérieusement quel genre de déclaration est-ce là ", car Renat a écrit à la dernière ligne de l'article, " Merci pour votre intérêt ! Je suis prêt à répondre à toutes les questions", ou du moins la modification du paragraphe.
Nous sommes également intéressés par votre réponse :).
J'écrirai plus à ce sujet quand j'aurai le temps.
Je ne sais pas quand Renat a écrit cet article, mais Microsoft ne propose plus Visual Studio 2005. Ils offrent Visual Studio 2010 et 2011 beta et il semble qu'ils soient sur le point de se débarrasser de 2008.
Cliquez ici pour Microsoft Visual Studio 2010, et cliquez ici pour le 2008. L'installateur est un installateur web, ce qui est ennuyeux si vous avez une connexion internet lente. Ils proposent un installateur hors ligne sous forme d'image ISO mais qui contient également Visual Studio C# et Visual Basic. Après l'installation, les deux studios nécessitent des mises à jour qui sont également importantes en termes de taille en Mo.
Pour ceux qui n'aiment pas installer Visual Studio, il existe d'autres alternatives que vous pouvez consulter sur https://en.wikipedia.org/wiki/Comparison_of_integrated_development_environments. Mes préférées sont NetBeans et Code::Block. NetBeans est supporté par Oracle et sert de base à leur Oracle Solaris Studio. Cependant NetBeans n'est pas livré avec un compilateur, vous devez donc vous débrouiller avec le compilateur Cygwin ou MinGW, ce qui peut être ennuyeux pour un débutant. La dernière version stable du célèbre DevC++ date d'il y a 7 ans, maintenant son site web est plein de liens morts, on dirait que plus personne ne s'en occupe, donc je ne le recommanderai pas.
Il est préférable d'utiliser Visual Studio, car il y a beaucoup d'options avec lesquelles vous pouvez jouer - si vous savez comment.
En parlant de questions, j'espère que Renat Fatkhullin voudra bien répondre à la question de pfx " Je veux dire sérieusement quel genre de déclaration est-ce là? ", parce que Renat a écrit à la dernière ligne de l'article, " Merci pour votre intérêt ! Je suis prêt à répondre à toutes les questions", ou du moins la modification du paragraphe.
Très bon tutoriel !
Faut-il créer des fichiers de référence ?
Je dois modifier Fann2MQl.dll (documenté dans http://fann2mql.wordpress.com) parce qu'il n'est pas fonctionnel dans MT5. La raison est que dans MT5 vous ne pouvez pas ouvrir les fichiers où vous voulez. Ils doivent être ouverts à 2 endroits par défaut (pour le mode forward et le mode testing).
La question est donc de savoir quelle fonction invoquer à la place de fopen et quel fichier d'en-tête inclure ? Car il semble que les fichiers doivent être ouverts depuis MT5. Toute tentative d'ouvrir un fichier en contournant terminal.exe (comme c'est le cas en utilisant fopen à partir d'une dll) est automatiquement redirigée soit vers le répertoire d'installation, soit vers le bureau, selon le mode de lancement de terminal.exe employé (en cliquant sur l'icône ou à partir de la ligne de commande avec le paramètre /portable).
This forwarding is besides bizarre, because the resulting name of the file is only in the first leter of the path to it.
Quelqu'un sait-il comment créer une DLL 64 bits ou permettre à MQL5 de charger une DLL 32 bits ? MQ5 ne charge pas mon script de test parce que ma DLL n'est pas "64-bit". Merci.
Ceci peut être corrigé, les instructions sont ici : Explorateur de solutions -> clic droit sur la solution -> Gestionnaire de configuration -> menu déroulant de la plate-forme de solution active -> sélectionnez x64 -> cliquez sur Fermer -> Reconstruire la solution.
J'espère que cela vous aidera.
Bonne chance.
Bonjour,
Cela ne fonctionne pas avec la DLL produite par Microsoft Visual Studio 2013 édition Express, voir ci-joint.
Il ne semble pas trouver la bibliothèque MSVCR120D_APP.DLL et un problème avec KERNEL_32 aussi.
Est-ce que quelqu'un a eu un problème similaire ? Comment puis-je contourner ce problème, s'il vous plaît ?
Je vous remercie de votre attention.
Est-ce que mql5 supporte l'importation de dll qui incluent des fonctions de rappel ?
Par exemple, il y a une dll nommée tclient.dll :
Il y a une dll nommée tclient.dll, qui inclut la fonction ci-dessous :
typedef TCLIENT_API void(*call_back)(Tick* p) ;
TCLIENT_API int sub_tick(CTX ctx, const char* insId, call_back f) ;
Alors comment dois-je déclarer et appeler sub_tick dans mql5 ?
#import "tclient.dll"
/comment déclarer la fonction "sub_tick"
#import
void ontick(Tick &ticks[])
{}
int OnInit()
{
/comment appeler la fonction "sub_tick" ?
}