Discussion sur "Comment écrire une DLL pour MQL5 et échanger des données en 10 minutes". - page 5

 
mql5 писал(а)  :

1) quelle version du terminal est 32 ou 64 bit ?

2) quelle version de la dll est 32 ou 64 bit ?

1) Y a-t-il un choix ? Je pense que seuls les téléchargements x86 sont disponibles ici...

2) dll 32

 

La réinstallation de MT5 a donné le résultat suivant. Lors du lancement du script, l'information suivante apparaît dans le journal Impossible de trouver la fonction fnCalculateSpeed dans 'MQL5DLLSamples.dll'.

Je joins une capture d'écran de la bibliothèque de Dependency Walker juste au cas où.

 
denkir:

La réinstallation de MT5 a donné le résultat suivant. Lors du lancement du script, l'information suivante apparaît dans le journal Impossible de trouver la fonction fnCalculateSpeed dans 'MQL5DLLSamples.dll'.

Je joins une capture d'écran de la bibliothèque de Dependency Walker juste au cas où.

Quel est le numéro de build du terminal réinstallé ?
 
stringo:
Quel est le numéro de build du terminal réinstallé ?
Apparemment vieux, pas la dernière version de 240.
 
Renat писал(а) :
Apparemment vieux, clairement pas la dernière version de 240.

Ouais, certainement pas le dernier...

Après la mise à jour vers 240 bild, la première exécution du script a bien fonctionné. J'étais excité. Mais les essais suivants n'ont abouti qu'à un crash. MT 4 fonctionnait en parallèle.

 

Après le redémarrage, tout semble fonctionner ! :-))

J'ai commenté la fonction fnCrashTest(int arr)

Merci à tous ceux qui ont aidé !

 
En général, je n'ai pas réussi à augmenter la vitesse de calcul en utilisant la dll de plus de 2,5 fois. Cela montre la grande vitesse de MQL5, et pour la plupart des tâches de trading, il n'y a pas de raison de s'embêter avec une dll, sauf quand il est nécessaire de protéger le code et quand des calculs "lourds" sont nécessaires.
 
joo:
En général, je n'ai pas réussi à augmenter la vitesse de calcul en utilisant la dll de plus de 2,5 fois. Ceci démontre la grande rapidité de MQL5. Pour la majorité des tâches de trading, il n'est pas utile de s'embarrasser de dll, sauf lorsqu'il est nécessaire de protéger le code et lorsque des calculs "lourds" sont requis.

L'optimisation finale des registres de MQL5 n'est pas encore activée - la vitesse d'exécution va encore sérieusement augmenter.
 

Renat, merci pour cet article. Je pense que de nombreuses personnes en auront besoin plus d'une fois. J'ai une question annexe liée à dll. (Terminal 249, Editeur 248).

Exemple

Nous avons une libra demo.dll avec une seule fonction.

_DLLAPI void __stdcall demo(char *stream, char *buf){ buf=stream;}

Nous avons un script mql demo.mq5.

#property copyright "2010, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"

#import "demo.dll"
void demo(string s1, string &s2);
#import

void OnStart(){
   string a="TEST"; string b;
   demo(a,b);
   Print(b);    
}

Le compilateur ne montre aucune erreur ou avertissement.

Exécutez-le dans le terminal et obtenez ce qui suit

En vérifiant dans le débogage visuel, j'ai également découvert que la fonction demo.dll elle-même a son premier caractère, qui n'est pas une chaîne de caractères.

La question est

Quel est le problème ? Comment passer la chaîne de caractères de MQL à la dll de manière humaine ?

 
Utiliserwchar_t au lieu de char