Comment coder ? - page 205

 

Aide pour un simple appel DLL ?

Tout ce que je veux faire est de récupérer le numéro de compte MT4 à partir d'une DLL.

Dll_call demande à Dll_call_include le double"GetAccountNumber()" de Dll_call.dll.

C'est simple, n'est-ce pas ? L'application se charge bien, même avec un numéro de compte erroné dans la dll. Mt4 demande à utiliser la dll.

Les 3 fichiers sont dans les 3 bons dossiers, la dll est un fichier .dll (joint en .txt pour voir le code).

Quelqu'un pourrait-il regarder le code pour voir s'il y a des erreurs ?

merci

Dossiers :
 

Avez-vous inclus GetAccountNumber dans un fichier .def de votre dll compilé? Vous devez le faire pour que cela fonctionne.

Vérifiez également que l'option Autoriser les importations de Dll est sélectionnée pour votre expert.

J'espère que cela vous aidera.

-wolfe

 

J'ai lu que l'ajout du fichier def dans le dossier librarys où se trouve la DLL pourrait résoudre le problème, mais non.

J'ai aussi lu qu'ajouter la DLL dans le dossier system32, toujours pas.

J'ai l'intention d'envoyer ce projet par courriel à d'autres personnes, alors je préférerais ne pas avoir à dire comment placer 4 fichiers différents dans des dossiers différents. est-ce le seul moyen ?

Le code dans les 3 fichiers est-il correct ?

Merci beaucoup.

 

Voici le fichier def. Il est correct ?

Doit-il être placé dans une bibliothèque avec la DLL ?

 
jimmynz:
Voici le fichier def. Est-ce qu'il est correct ? Doit-il être placé dans les bibliothèques avec la DLL ?

Le fichier .def fait partie de votre solution c++ compilée. Je copie ensuite ma dll c++ compilée dans le dossier system32 de Windows. J'utilise un système 32 bits avec Windows XP.

Je ne suis pas non plus un expert en c++, mais c'est ainsi que j'ai réussi à le faire fonctionner.

 

Merci pour votre aide, mais toujours pas.

Ce qui est bizarre, c'est que j'ai essayé de créer un EA avec le code habituel pour vérifier le numéro de compte :

int a = 907671 ;

int b = AccountNumber() ;

if (b != a) {

Alert("Vérification du numéro de compte (" + DoubleToStr(li_16, 0) + ") mauvais compte") ;

return (0)}

en tant qu'EA, il se charge quel que soit le nombre, mais si je le fais en tant qu'indi, il fonctionne bien ?

ggrrr

 

...

Votre EA se chargera toujours (s'il n'a pas une erreur de codage qui l'empêcherait de compiler).

Vous devez juste décider où vous voulez qu'il arrête de faire le "travail habituel" qu'il fait et l'empêcher de le faire pour des personnes non autorisées. Normalement, vous placez cette routine de vérification au début du start() - quelque chose comme ceci :

//+------------------------------------------------------------------+

//| Dll_call.mq4 |

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//| expert start function |

//+------------------------------------------------------------------+

int start()

{

static bool alerted = false;

int a = 907671;

int b = AccountNumber();

if (b != a)

{

if (!alerted)

{

Comment("Checking Account No! (" + DoubleToStr(b, 0) + ") wrong Acc");

alerted = true;

}

return (0);

}

//

//

// the part that is not executed when account number is wrong

//

//

alerted = false;

Comment("continuing the rest of the job");

return(0);

}

Mais aussi, ce genre de vérification est piratable par un décompilateur en quelques minutes.

PS : j'ai changé le Alert() en Comment() pour que vous puissiez le vérifier dans le back test visuel.

jimmynz:
merci pour l'aide, mais toujours pas.

Ce qui est bizarre, c'est que j'ai essayé de faire un EA avec le code habituel pour vérifier le numéro de compte :

int a = 907671 ;

int b = AccountNumber() ;

if (b != a) {

Alert("Vérification du numéro de compte (" + DoubleToStr(li_16, 0) + ") mauvais compte") ;

return (0)}

En tant qu'EA, il se charge quel que soit le nombre, mais si je le fais en tant qu'indi, il fonctionne bien ?

ggrrr
 
 
luxinterior:
Donc votre grand plan est de prendre deux EA gratuits que vous avez probablement trouvé ici et de les "fusionner" ensemble et de les vendre pour 2K la pièce ? Tu as du culot mon pote ! Peut-être que si tu as vraiment de la chance, l'un des deux gars qui ont donné leur temps, leurs efforts et leurs connaissances gratuitement te proposera de le faire pour toi.

Oh mais attendez ! Si le code est "raté", alors les EA sont probablement des EA commerciaux qui ont été décompilés. C'est ça ? Abruti ! !!

Lux

Oh, joli discours. Laissez-moi vous dire ceci :

Peu importe l'EA que tu regardes, il y a très probablement quelqu'un avec la même idée qui a déjà fait faire l'EA. Des EA gratuits ? tu te moques de moi ? Quel EA sur ce forum a ce potentiel ?

De plus, il y a beaucoup de gens qui se disent développeurs et qui copient aussi les autres, en vendant pour 3000$ d'abonnement à un club. Et le pire, avec des EA qui vont faire sauter vos comptes à plat. .... ZERO

Aussi, je n'ai jamais pris d'EA d'ici. Quel EA vaut la peine pour la fusion sur ce forum ? De plus, si le code est raté, cela pourrait être moi qui demande aux programmeurs de coder une EA. Puis, au fur et à mesure que des fonctionnalités sont nécessaires, je demande à différents programmeurs... D'AIDER !

Des styles de codage différents peuvent, au fil du temps, entraîner des codes erronés.

Aussi, je n'ai pas décompilé d'EA commercial. La raison pour laquelle vous dites que je le fais, est le fait que vous le faites vous-même. Je ne sais pas quel type de désordre un décompilateur peut causer. Mais si vous êtes si sûr qu'un décompilateur peut causer des dégâts, c'est que vous l'avez probablement utilisé. Sinon, vous ne le sauriez jamais.

Un conseil, avant de traiter les autres de crétins ou d'essayer d'agir comme un policier / héros qui sauve la journée, jugez-vous d'abord. Sinon, ces mots sortant de votre bouche pourraient vous obliger à les ravaler.

Merci.

 

Aide concernant iMAOnArray()

Bonjour,

Je suis nouveau sur MT4... J'ai essayé désespérément d'inclure le morceau de code suivant dans un expert, mais je n'y suis pas parvenu.

"iMAOnArray(ind_buffer1,Bars,SignalEMA,0,MODE_EMA,i) ; "

Oui, je sais que ce qui précède ne peut pas être utilisé directement dans un EA, mais est-il possible d'obtenir les mêmes résultats en recodant la MA ci-dessus ? Si oui, j'apprécierais vraiment de l'aide à ce sujet.

Salutations.