Créez votre propre extension MetaTrader (dll) - page 5

 

Je vois que vous êtes un grand homme d'affaires...

Ce n'est pas le forum où vous pouvez vendre une telle merde que vous avez.

Qu'est-ce que vous avez modifié exactement dans DGC OZFX EA

firedoji:
Facile !! Il suffit de télécharger tous les e-books forex et de regarder les instructions à l'intérieur. J'ai obtenu plus de 200++ e-books de là et quelques EA aussi... Tous les EA sont édités et modifiés...

-----------------------------------------

Télécharger tous les EA Télécharger tous les indicateurs Télécharger les e-books
 
prasxz:
est-il possible de faire une dll MT4 connectée à un service web et de faire un script php pour montrer la position ouverte de MT4 par le biais d'un site web, afin que les personnes qui n'ont pas de MT4 puissent la voir en temps réel sur le site web ?

Quelqu'un a posté il y a quelque temps un exemple MQL / MySQL qui fonctionnait très bien, le seul problème étant que la plupart des hébergeurs n'autorisent pas l'accès à distance à leurs serveurs de bases de données. Cependant, si vous aviez un accès et un contrôle total sur votre serveur, vous pourriez écrire un EA qui se connecterait à votre base de données et insérerait les données pour chaque nouvelle commande. Puis, à partir de votre site Web, vous vous connecteriez simplement à la base de données et liriez les données... À mon avis, c'est la meilleure approche.

Maintenant, une DLL MT4 peut se connecter à un script php mais je n'ai jamais essayé de faire passer les informations de l'EA au site web, j'ai pu le faire avec succès dans l'autre sens cependant ... Vous devriez examiner les sockets Windows et les fonctions telles que HTTP_GET / HTTP_POST.

Patrick

 
Mistigri:
Je ne suis pas sûr, cette bibliothèque me semble familière, l'utilisez-vous pour vous connecter à un site Web ? Avez-vous essayé d'utiliser wininet.lib à la place ?

Je ne pense pas que le problème soit le fichier def, sinon votre dll ne serait même pas chargée et ne fonctionnerait pas correctement... Si vous pouvez fournir plus d'informations (par exemple, un morceau du code que vous utilisez dans la dll), je pourrai peut-être vous aider.

Patrick

Bonjour Patrick !

J'ai trouvé la bibliothèque et le code source ici :

https://www.mql5.com/en/forum/178272

J'y ai placé mon message, mais l'administrateur l'a déplacé dans ce fil...

Merci !

 

Lecture d'un fichier situé sur l'internet

Bonjour,

Je veux qu'un EA lise un fichier qui n'est pas situé sur la machine locale mais sur Internet.

FileOpen ne fonctionne que lorsque le fichier est situé dans le répertoire metatrader.

Je l'ai fatigué avec une dll c# mais j'obtiens le message d'erreur "cannot call function".

Avez vous une solution simple pour ce problème ?

Merci

 

Solution à l'erreur 127 - Impossible d'appeler la fonction

Solution à l'erreur 127 - Impossible d'appeler la fonction

Bon,

Je me suis finalement remis à étudier ce problème hier soir. Le problème est lié à l'association du mauvais fichier def ou nodef avec la dll.

Voici comment résoudre ce problème dans Visual Studio 2008 Express.

1) Allez dans le projet, propriétés - ou alt-F7

2) Allez sur Linker - double-cliquez dessus et vous obtenez une liste déroulante.

3) Sélectionnez Input

4) Changez le fichier de définition de module pour qu'il corresponde au nom que vous avez donné à votre fichier def.

Assurez-vous qu'il contient le chemin et le nom complet du fichier, par exemple .\MyDef.def.

Dans la version 2008 Express, ceci n'est pas généré automatiquement comme dans les versions professionnelles.

C'est le principal coupable. Il peut y avoir d'autres problèmes de linker/compilateur qui peuvent encore causer un problème. Ce que vous devez faire, c'est charger le projet d'exemple ExportFunction fourni avec Metatrader4. Il se trouve dans le dossier experts/DllSample. Maintenant, allez voir ses propriétés page par page, élément par élément, et partout où il est écrit ExportSample, ou ExpertSample, (ou ce qu'il utilise en fonction de ses conventions d'appellation) changez vos propriétés pour qu'elles correspondent à vos propres conventions d'appellation. J'ai fait cela élément par élément, puis j'ai vérifié si j'avais l'erreur 127. J'ai continué à obtenir cette erreur jusqu'à ce que le bon fichier de définition de module soit explicitement indiqué comme une dépendance. Je ne dis pas qu'il ne peut pas y avoir d'autres choses que cela, parce que j'ai tout changé pour correspondre à l'exemple, mais une fois que le fichier de définition était explicite, cela a réglé le problème.

Rappelez-vous que la dll doit être dans le dossier lib. Vous devez avoir un fichier mqh dans le répertoire include qui importe explicitement la dll, et liste les noms des fonctions avec les paramètres, les types de retour, etc. Ensuite, dans votre indicateur ou expert, vous devez inclure le fichier d'en-tête. Cela devrait suffire.

CodersGuru et Mistigri ont tous deux de bons exemples sur la façon de procéder, mais les versions Express non professionnelles n'ajoutent pas explicitement le fichier def comme dépendance, et c'est la racine du problème que nous avons tous en utilisant les versions Express. (Du moins, il ne l'ajoute pas explicitement lors de la sélection du projet particulier pour que nous qui avons le problème, le sélectionnions).

Voir l'image ci-jointe. N'oubliez pas que vous devez vous assurer que les valeurs de votre compilateur et de votre éditeur de liens correspondent à celles de l'exemple de fonction d'exportation fourni avec Metatrader.

Salutations,

MG

Dossiers :
properties.jpg  75 kb
 
fedecosta:
Salut Patrick !

J'ai trouvé la bibliothèque et le code source ici :

https://www.mql5.com/en/forum/178272

J'y ai placé mon message, mais l'administrateur l'a déplacé dans ce fil...

Merci !

Désolé, je n'ai pas encore eu l'occasion d'y jeter un coup d'oeil, j'ai été très occupé, mais je n'ai pas oublié et je vais essayer de vous répondre à ce sujet.

Peco07 :

Je veux qu'un EA lise un fichier, qui n'est pas situé sur la machine locale mais sur Internet.

Vous avez 2 options, écrire une application C# qui se connectera au site web, écrira un fichier de données sur votre ordinateur et le lira depuis MT4 ou écrire une dll C++ qui se connectera au site web et lira les données .....

Si vous choisissez la voie C#, jusqu'à présent, elle semble plus rapide que la voie DLL... Si vous voulez écrire une DLL C++, voici du code pour vous aider à démarrer.

MT4 DLL Web Connect | Mistigri

MG_1 :

Le problème est lié à l'association du mauvais fichier def ou à l'absence de fichier def avec la dll.

Voici comment le résoudre dans Visual Studio 2008 Express -

Merci pour ces informations ! Si cela ne vous dérange pas, je vais reproduire certaines parties de vos articles sur mon site...

 
Mistigri:
Merci pour ces informations ! Si cela ne vous dérange pas, je vais reproduire certaines parties de vos messages sur mon site...

Pas de problème, je sais que beaucoup de gens y vont pour apprendre, alors j'espère que cela aidera les utilisateurs d'Express et de gnu, etc.

-MG

 
fedecosta:
Bonjour les gars !

Je rencontre un problème en essayant d'utiliser cette bibliothèque.

Je les ai placés dans metatrader\experts\library.

J'ai correctement défini le chemin pour le fichier .def.

... mais mon EA affiche sur le registre cette erreur : -65495

Quel peut être le problème ?

Et, surtout, comment le résoudre ?

Est-il possible que le fichier .def soit corrompu ?

Merci d'avance...

Salut Fedecosta,

Essaie de copier le fichier def directement sous ton lecteur c:\ ... Cela semble fonctionner pour moi.

Notez que cela n'a rien à voir avec la programmation de DLL, c'est spécifique à cette EA...

Patrick

 
Mistigri:
Bonjour Tim,

Lorsque vous utilisez dev-c++ le fichier def est généré automatiquement pour vous, le problème est que vous vous retrouvez avec des noms de fonctions qui ressemblent à ceci :

EXPORTS

_Z11GetSMAArrayP8RateInfoiiPd@16 @ 1

_Z12GetHighValueP8RateInfoii = _Z12GetHighValueP8RateInfoii@12 @ 2

_Z12GetHighValueP8RateInfoii@12 @ 3

_Z13GetCloseValueP8RateInfoii = _Z13GetCloseValueP8RateInfoii@12 @ 4

_Z13GetCloseValueP8RateInfoii@12 @ 5

_Z11GetSMAArrayP8RateInfoiiPd = _Z11GetSMAArrayP8RateInfoiiPd@16 @ 6[/PHP]

Now you need to make sure you add the following check around your code

[PHP]

#ifdef __cplusplus

extern "C" {

#endif

#ifdef __cplusplus

}

#endif

Ci-joint les fichiers d'exemple que j'ai fait pour VS2008 mais cette fois en utilisant dev-c++ ...

J'espère que cela vous aidera

Vous voulez dire que lorsque vous écrivez un fichier dll,

la fonction dans le fichier def doit ajouter _z12 au début ?

Cela signifie que dans le fichier .mq4

appeler la fonction : get_max_deviation

puis dans le fichier .def

la fonction transférée : _z12get_max_deviation ???

Que signifie le numéro @ après le nom de la fonction ?

merci

 
Mistigri:

Vous trouverez ci-joint les fichiers d'exemple que j'ai réalisés pour VS2008, mais cette fois en utilisant dev-c++ ...

J'espère que cela vous aidera

Fichiers attachés

MistigriFX Sample Debug.mq4 (2.1 KB, 15 views)

MSFXDEV.zip (8.6 KB, 17 vues )

J'ai téléchargé vos fichiers, et j'ai compilé le .cpp avec l'image montrée.

mais l'erreur se produit

La méthode de compilation est mauvaise, comment puis-je le compiler en dll ? (je suis un débutant en c++ ^^)

Dossiers :
dev_dll.jpg  298 kb