Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 884
![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Bon après-midi, messieurs. )) excusez l'amateurisme...
Je ne comprends pas comment fonctionne OrderClose :(
J'ai besoin d'un maximum d'un ordre, c'est-à-dire qu'avant d'en ouvrir un nouveau, je veux que le précédent soit fermé...
Pourquoi cela ne fonctionne-t-il pas de cette façon ?
OrdreClose(nom, 0.01, Bid,5, Red) ;
OrderSend(Symbol(), OP_SELL, 0.01 , NormalizeDouble(Bid,5), 3 , NormalizeDouble(Ask+0.0005,5), NormalizeDouble(Bid-0.0008,5), "", nom,0,Red) ;
Le journal est essentiellement un juron sur un ticket invalide.
dans OrderClose au lieu de nom, que dois-je mettre ? ou est-ce que je pense dans le mauvais sens du tout ?)
Essayez minStopLoss = Prix actuel +/- (MaxValue(2*Spread, StopLoss)) ;
Je l'ai étudié, mais rien de nouveau, apparemment c'est (nouveau pour moi) bien sûr, évident pour tous les initiés, auto-explicatif. Je n'ai rien trouvé de nouveau, à l'exception de la fonctionnalité décrite ci-dessus de disposition mutuelle des tampons pendant l'indexation. Cette séquence respectée, a obtenu une image encore plus ringarde.
Photos ci-dessous, fichier joint
Vous n'avez peut-être pas de chance, mais je n'aime pas fouiller dans le code des autres. D'autant plus lorsqu'il s'agit de le réparer...
La question suivante : combien de fois pensez-vous que la valeur de l'indicateur sera exactement 50 ?
ColorHistogram_2Buffer1[i]=50;
D'après ce que j'ai compris du problème, il devrait y avoir une couleur >50 et une autre <50, mais je n'ai pas vu ==50. Bien sûr, pour éliminer la perte dans le cas ==50, il faut ajouter à l'une des comparaisons >=50 ou à l'autre <=50, comme la religion le permet. Cela peut paraître mieux.
Et la deuxième question : combien de fois pensez-vous qu'il était nécessaire de changer toute l'indexation des tampons ? Après la réindexation, avez-vous corrigé exactement tout le code ? Il serait peut-être plus simple de créer un tampon de couleur d'index 4, et des tampons auxiliaires 5 et 6 en conséquence. Il y aurait moins de besoin d'édition et moins de risques de faire d'autres erreurs.
J'ai essayé. Deux écarts est de 24, ne fonctionnera pas de cette façon, commence à travailler à 19 du prix de clôture. À partir du prix ouvert actuel, il fonctionne avec trois spreads.
Vérifié. Travaux
Tout ceci est étrange, il est dit la même chose minStopLoss = Prix actuel +/- (MaxValue(2*Spread, StopLoss)), seulement sous Prix actuel nous comprenons non pas le prix ouvert de l'ordre mais le prix miroir.
Pourquoi la double page est-elle appropriée ?
Deux autres questions se posent.
1. Pourquoi SymbolInfoInteger est-il utilisé pour obtenir les valeurs Digits() et Point() ; ?
2. Pourquoi une entrée (int) est-elle utilisée avant d'appeler la fonction SymbolInfoInteger ? Si je comprends bien, il s'agit d'une conversion de type forcé.
Je l'ai vérifié. Cela fonctionne
Tout cela est bizarre, ils écrivent toujours la même chose minStopLoss = Prix actuel +/- (maxZen(2*Spread, StopLoss)) mais le Prix actuel n'est pas le prix d'ouverture de l'ordre mais le prix miroir.
Pourquoi la double page est-elle appropriée ?
Deux autres questions se posent.
1. Pourquoi SymbolInfoInteger est-il utilisé pour obtenir les valeurs Digits() et Point() ; ?
2. Pourquoi une entrée (int) est-elle utilisée avant d'appeler la fonction SymbolInfoInteger ? Si je comprends bien, il s'agit d'une conversion de type forcé.
Pour obtenir Point() SymbolInfoInteger ne fonctionnera en aucun cas.))
En général, il est nécessaire de se rappeler que Point() ou _Point ne concerne que le symbole courant. Pour les caractères autres que celui sur lequel l'EA fonctionne, vous devez utiliser cette même fonction.
La fonction SymbolInfoInteger renvoie non seulement des valeurs int, mais aussi des valeurs long, bool et des énumérations.
Sergey Voytsekhovsky, merci pour votre aide. Et une dernière question, si vous le voulez bien, veuillez me suggérer la fonction inverse de la fonctionCharToStr
(pour obtenir un code à partir d'un symbole), car j'ai des fonctions pour cela dans Beisic et Delphi, mais en C++, pour autant que je sache, il y a deux méthodes :
1 - FonctionAscii_cod, qui n'est pas dans mql4
2. - Conversion directe des types. Mais mon code est
string st="A" ;
Print ("Code de caractère A=",(int)st) ;
Produit du texte Code caractère A=0.
Que faire ?
Sergey Voytsekhovsky, merci pour votre aide. Et une dernière question, si vous le voulez bien, pourriez-vous me suggérer la fonction inverse de la fonctionCharToStr
(pour obtenir son code à partir d'un symbole), car j'ai des fonctions pour cela dans Beisic et Delphi, mais en C++, si je comprends bien, il y a deux méthodes :
1 - FonctionAscii_cod, qui n'est pas dans mql4
2. - Conversion directe de type. Mais mon code est
string st="A" ;
Print ("Code de caractère A=",(int)st) ;
Produit du texte Code caractère A=0.
Que faire ?
StringToCharArray, contrairement à la fonction wiki, ne convertit pas seulement un caractère à la fois, mais peut convertir une chaîne de caractères en un tableau de type ucar avec les codes de tous les caractères de la chaîne.
mql4 possède également une telle fonction.
Pour obtenir Point() SymbolInfoInteger ne fonctionnera en aucun cas.))
En général, il est nécessaire de se rappeler que Point() ou _Point ne concerne que le symbole courant. Pour les caractères autres que celui sur lequel l'EA fonctionne, vous devez utiliser cette fonction.
La fonction SymbolInfoInteger renvoie non seulement des valeurs int, mais aussi des valeurs long, bool et des énumérations.
En fait, Point a une valeur double. Cela signifie que nous devons l'appeler depuis SymbolInfoDouble![](https://c.mql5.com/3/282/16.gif)
En fait, Point a une valeur de double. Cela signifie que la demande doit être faite par SymbolInfoDouble
Il s'agit de ces fonctions pour MQL4 du post #65:
Je n'ai pas vu où Point est obtenu via SymbolInfoInteger()
Il s'agit de ces fonctions MQL4 du post #65:
Je n'ai pas vu où Point est obtenu via SymbolInfoInteger()
Oui, la même. Nous sommes passés à travers. L'essentiel est qu'il comprenne ce qui est quoi...