[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 254
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
Qui peut me dire comment faire pour que le résultat soit toujours positif ? (lots d'achat - lots de vente)= -0.25, mais il doit être toujours positif ?
Je fais ainsi : if (profitbuy+profitsell > SymbProf_magBUY_magSELL* MathAbs((OrdersTotalMagicBuyLots(MagicBuy)-OrdersTotalMagicSellLots(MagicSell))/Lots)()))
Qu'y a-t-il entre parenthèses ?
if (profitbuy+profitsell > SymbProf_magBUY_magSELL* MathAbs((OrdersTotalMagicBuyLots(MagicBuy)-OrdersTotalMagicSellLots(MagicSell))/Lots)( ??????))
Où ? ??? quoi ?
J'ouvre une position avec un volume = 0,05. J'ai besoin d'un code - comment réduire le volume de la position de 0,01 lorsqu'une perte atteint 100 pips pour 5 chiffres ?
Merci.
Combien d'EAs j'ai écrit, tous vérifient les conditions du marché (nivellement du stop, spread, etc.) lorsque l'on négocie avec des ordres en attente. J'ai regardé comment sont rédigées les grilles, mais je n'en ai vu aucune vérifier la valeur du même nivellement d'arrêt avant d'envoyer un ordre. Quelle en est la raison ?
Il existe de nombreuses métariques sur le forum à propos du testeur et des raisons pour lesquelles ses résultats diffèrent de ceux de la vie réelle. Regardez dans la section Articles, ce sujet a été abordé plus d'une fois.
Merci.
J'ai trouvé une alternative.
Cela signifie que dans la DLL la chaîne est passée exactement comme char*, mais pas comme MqlString. Mais celane signifie pas que dans le programme ex4 la chaîne n'est pas stockée comme MqlString. En général, le transfert des paramètres de ex4 à dll (selon les développeurs) est un processus assez complexe, accompagné de toutes sortes de vérifications et de transformations des paramètres.
Avez-vous lu la référence MQL4 ? MQL4-string est identique à c-string avec un terminateur nul.
La structure est conçue uniquement pour arranger des tableaux de cordes. Purement une invention des Metaquotes pour faciliter la création de tableaux de chaînes de caractères.
StrStrA de la bibliothèque shlwapi.dll. Test :
Journal :
Le mécanisme est le suivant. Shlwapi.dll dans /system32. StrStrA est un analogue WinAPI deStringSubstr. MQL4 est un langage sans typage, donc si nous définissons un int à la sortie, plutôt qu'une chaîne, nous obtenons un pointeur sur celui-ci, et non une chaîne. StrStrA recherche la première occurrence d'une sous-chaîne dans la chaîne (sensible à la casse, mais comme nos chaînes sont identiques, nous nous en moquons), et comme nos chaînes sont identiques, il renvoie un pointeur sur le premier caractère de la chaîne, c'est-à-dire sur la chaîne elle-même.
Laissez-moi vous expliquer pour ceux qui vont utiliser ce code. Il n'existe pas de format de chaîne dans l'interface WinAPI. À la place, il n'y a que le format lpsz (un pointeur vers le premier élément d'un tableau de caractères se terminant par 0x00, alias /0). Il s'agit d'un pointeur vers une adresse mémoire. Comme nos cellules de mémoire sont de 32 bits (c'est-à-dire 4 octets) et que int a également une taille de 4 octets, tout s'y intègre parfaitement.
Conclusion : vous pouvez facilement empaqueter des chaînes de caractères dans des tableaux d'int, émulant ainsi des structures (et il n'y a pas de structures et de classes dans MQL4) pour les passer plus loin à la dll, si une structure ou une classe est nécessaire. Les dll auto-écrites pour la traduction des types de données (c'est-à-dire les constructions comme "int(const char*)" (traduction de type C) ou similaires en C++) ne peuvent plus être utilisées.