Ne fermez que les transactions rentables, à l'objectif de profit. - page 4

 
af1:

Ok Raptor, je vais essayer de faire cette boucle, mais avant de faire ça, si je changeais simplement

de ceci :
à ceci :


Est-ce que ça pourrait faire l'affaire ?

Non, vous DEVEZ compter à rebours lorsque vous fermez/supprimez des commandes.
 
RaptorUK:
Non, vous DEVEZ compter à rebours lorsque vous fermez/supprimez des ordres.


Salut Raptor !

J'ai vérifié le code et pour être honnête je ne vois pas beaucoup de différence entre la ligne de code suggérée dans ton post :

for(PositionIndex = TotalNumberOfOrders - 1; PositionIndex >= 0 ; PositionIndex --)

et la ligne de code de l'ea que je teste :

for(i=OrdersTotal()-1;i>=0;i--)

La seule différence que je vois est que vous ajoutez MODE_TRADES, et vous n'avez pas ajouté sleep. Est-ce pertinent ?

Pourriez-vous me donner quelques indications sur ce que je dois changer dans le code ?

 
af1:


Bonjour Raptor !

J'ai vérifié le code et pour être honnête je ne vois pas beaucoup de différence entre la ligne de code suggérée dans votre post :

et la ligne de code de l'ea que je teste :

La seule différence que je vois est que vous ajoutez MODE_TRADES, et que vous n'avez pas ajouté sleep. Est-ce pertinent ?

Pourriez-vous me donner quelques indications sur ce que je dois changer dans le code ?

Désolé, j'ai vu ce . . .

for(int i=0;i<OrdersTotal();i++)
      {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) continue;
         if(OrderType()==OP_SELL)  
         {
            OrdersSELL++;
            SellLots += OrderLots();
            double ThisTradeProfit=OrderProfit() + OrderCommission() + OrderSwap();
            if(ThisTradeProfit>0)
            BuyProfit += ThisTradeProfit;
         }

... et votre message et j'ai supposé que c'était votre code OrderClose() . . .

 
af1:


Je n'ai pas ajouté les 2 extern bool, j'ai juste changé ceci pour fermer "seulement les ordres d'achat".

et changer cela pour fermer "seulement les ordres de vente".

Donc maintenant j'ai deux EA. Un pour les achats de clôture, et un pour les ventes de clôture. C'est bon pour moi.


J'ai testé sur les deux comptes, démo et réel. Sur la démo, cela fonctionne bien, mais sur le compte réel, une fois que l'objectif de profit est atteint, il commencera à fermer des positions, mais ensuite il arrêtera de fermer des positions lorsque les ordres restants tomberont en dessous de l'objectif de profit. Cela se produit si le prix change au moment de la fermeture. Il a donc tendance à laisser ouverts les ordres rentables, au lieu de les fermer tous (ordres rentables).

J'ai lu ce message de RaptorUK https://www.mql5.com/en/forum/139654. C'est quelque chose comme ça, mais je ne sais pas vraiment quelle pourrait être la meilleure solution pour ce problème.



Je viens juste de remarquer ceci. Je ne sais pas si cela fera une grande différence, mais ce n'est pas correct.

for(int i=0;i<OrdersTotal();i++)

      {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) continue;
         if(OrderType()==OP_SELL)  
         {
            OrdersSELL++;
            SellLots += OrderLots();
            double ThisTradeProfit=OrderProfit() + OrderCommission() + OrderSwap();
            if(ThisTradeProfit>0)
            BuyProfit += ThisTradeProfit;
         }
 
af1:


Je n'ai pas ajouté le 2 extern bool, j'ai juste changé cela pour fermer "seulement les ordres d'achat".

et changer cela pour fermer "seulement les ordres de vente".

Donc maintenant j'ai deux EA. Un pour les achats de clôture, et un pour les ventes de clôture. C'est bon pour moi.


J'ai testé sur les deux comptes, démo et réel. Sur la démo, cela fonctionne bien, mais sur le compte réel, une fois que l'objectif de profit est atteint, il commencera à fermer des positions, mais ensuite il arrêtera de fermer des positions lorsque les ordres restants tomberont en dessous de l'objectif de profit. Cela se produit si le prix change au moment de la fermeture. Il a donc tendance à laisser ouverts les ordres rentables, au lieu de les fermer tous (ordres rentables).

J'ai lu ce message de RaptorUK https://www.mql5.com/en/forum/139654. C'est quelque chose comme ça, mais je ne sais pas vraiment quelle pourrait être la meilleure solution pour ce problème.



Cela suggère qu'il y a des erreurs dans la fermeture des transactions, que dit le journal ?

Peut-être que votre slippage à seulement 5 points est trop faible ?

 
RaptorUK:

Désolé, j'ai vu ce...

... et votre message et j'ai pensé que c'était votre code OrderClose(). . .

Pas de problème.

GumRai:


Je viens juste de remarquer ceci - je ne sais pas si cela fera une grande différence, mais ce n'est pas correct.

for(int i=0;i<OrdersTotal();i++)

Dans la démo, je n'ai pas vu de différence, mais dans un compte réel, le problème est apparu quand il fermait les ordres de vente "curieusement", donc peut-être que cela pourrait résoudre le problème...

Laissez-moi tester à nouveau avec ce changement et je vous informerai des résultats.

GumRai:


Cela suggère qu'il y a des erreurs dans la clôture des transactions, qu'est-ce que cela indique dans le journal ?

Peut-être que votre slippage à seulement 5 points est trop faible ?

Aucune erreur dans le journal.

Peut-être qu'un slippage plus important pourrait aider. Je vais le tester.

 

Bonjour à tous

Est-ce que quelqu'un a un EA pour MT5 qui ferme tous les trades lorsque le profit est atteint.

 
BobyGill:

Bonjour à tous

Est-ce que quelqu'un a un EA pour MT5 qui ferme tous les trades avec un profit atteint.

Pourquoi avez-vous repris un sujet vieux de 6 ans dans la section MT4 pour poser des questions sur MT5 ?

 
Les gars...
Je me demandais juste...
Est-il possible d'utiliser la même logique, mais ce qui la rend différente, c'est que lorsque le total des transactions est atteint, disons 200 transactions , cela déclenche le profit de clôture.