![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
Premièrement, il est incorrect de comparer le réel Stochast_ et l'entier 75, et deuxièmement, il est plus correct de comparer leur différence à zéro.
Un autre problème se pose avec le bloc de fermeture de position. J'ai mis ce bloc dans mon conseiller expert préféré. Il n'ouvre que des transactions strictement dans le sens de la tendance (je lui en suis profondément reconnaissant...).
Mais en fonction de la force de la tendance, le conseiller expert est (et le fait !) constamment capable d'ouvrir plusieurs transactions, - l'une après l'autre ! C'est ici que j'ai besoin du bloc de positions de fermeture au signal de l'indicateur. Mais voilà le problème : si et quand plusieurs positions sont ouvertes dans une tendance et que la correction contre la tendance commence, l'indicateur dans le bloc donne un signal de fermeture. Comme j'en ai besoin.
Cependant, dans le même temps, pour une raison quelconque, toutes les positions ouvertes ne sont pas fermées. En fait, seulement la plus ancienne. Ceux qui ont été ouverts plus tard ne réagissent pas au signal de fermeture - mais continuent le mouvement. Et encore, - "l'histoire se répète comme une farce" ! À chaque signal de fermeture, une seule position, la position ouverte la plus ancienne, est fermée, et les autres continuent de bouger ! Le lot de toutes les positions est constant.
Voici le graphique du mode visuel. La fermeture par le signal de l'indicateur est marquée par un triangle vert. On voit clairement qu'une seule position est fermée à chaque fois par le signal. Je voudrais que tous les postes ouverts soient fermés ! Veuillez me conseiller, quelle en est la raison ?
Un rappel de code :
/********* Закрытие позиций **************************************** if (AutoClose) { //---------------------------------------------------------------------- if (ExpertOrder(MagicLong)) { //есть открытые ордера на покупку if(Stochast_1>=Up_lim && Stochast_0<Up_lim) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Green);//закрываем позицию return(0); // выходим } } //-------------------------------------------------------- if (ExpertOrder(MagicShort)) { //есть открытые ордера на продажу if(Stochast_1<=Low_lim && Stochast_0>Low_lim) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Green);//закрываем позицию return(0); // выходим } } //------------------------------------------------------- } //if (AutoClose)
Un autre problème se pose avec le bloc de fermeture...
Où se trouve la boucle sur OrdersTotal() ?
Non, ce n'est pas le cas ici. Les commandes sont définies - différemment :
Et cette version du code est plus confortable pour moi ! Parce que mes positions longues et courtes s'ouvrent indépendamment les unes des autres.
Cependant, c'est toujours la même chose avec la fermeture standard. ...
Cependant, c'est toujours la même chose avec la fermeture standard. ...
Vous pouvez essayer de faire une boucle inverse de OrdersTotal à 0. Cela devrait aider.
Comment faire ? S'il vous plaît, écrivez, si ce n'est pas trop difficile. Au fait, voici le graphique - avec la "norme" ci-dessus : tout est identique - une seule position se ferme sur le signal de l'indicateur -...
Comment faites-vous ?
for (int v=0 ; v<OrdersTotal() ; v++)
écrire :
for (int v=OrdersTotal()-1 ; v>0 ; v--)
Ça marche pour moi.
Comment faites-vous ?
for (int v=0 ; v<OrdersTotal() ; v++)
écrire :
for (int v=OrdersTotal()-1 ; v>0 ; v--)
Ça marche pour moi.
Vous avez tout à fait raison. Bien que KimV dispose de scripts et de bibliothèques qui mettent en œuvre tout cela. Vous devriez peut-être le chercher sur son forum.