Vous avez raison, je ne vois qu'une partie de votre code et vous avez probablement d'autres projets en tête, et lire 4000 lignes de code n'aide sûrement pas à avoir les idées claires - moi aussi.
Vous avez dit que votre EA ne peut pas fermer un trade. Nous devons donc trouver la cause de ce problème et y remédier. C'est ainsi que je vois les choses :
:D
#include <stdlib.mqh>
...
for(int pos = OrdersTotal(); pos >= 0 ; pos--)
{
if ( OrderSelect(pos, SELECT_BY_POS, MODE_TRADES)
&& OrderMagicNumber() == My_Magic_Number
&& OrderSymbol() == Symbol())
{
if (OrderType() = OP_BUY) // we close long
{
for (int try_to_close = 1; try_to_close <= 100; try_to_close ++)
{
bool success = OrderClose (OrderTicket(), OrderLots(), OrderClosePrice(), Slippage, Yellow);
if (success = false)
{
int Error = GetLastError();
Print ("Unable to close ticket ",OrderTicket()," with error ",ErrorDescription(Error)); // from #include <stdlib.mqh>if (TRY_CLOSE_AGAIN_OR_NOT(Error) == false ) break; //
}
}
}
if (OrderType() = OP_SELL) // we close short
{
// do the same with sell
}
}
}
//+------------------------------------------------------------------+bool TRY_CLOSE_AGAIN_OR_NOT(int err) // True
{
switch (err)
{
case1: return (false); //error_string="no error"; case2: return (false); //error_string="common error"; case3: return (false); //error_string="invalid trade parameters"; case4: Sleep (500); return (true); //error_string="trade server is busy"; case5: return (false); //error_string="old version of the client terminal"; case6: Sleep (500); return (true); //error_string="no connection with trade server"; case7: return (false); //error_string="not enough rights"; case8: Sleep (500); return (true); //error_string="too frequent requests"; case9: return (false); //error_string="malfunctional trade operation (never returned error)"; case64: return (false); //error_string="account disabled"; case65: return (false); //error_string="invalid account"; case128: Sleep (500); return (true); //error_string="trade timeout"; case129: return (false); //error_string="invalid price"; case130: return (false); //error_string="invalid stops"; case131: return (false); //error_string="invalid trade volume"; case132: return (false); //error_string="market is closed"; case133: return (false); //error_string="trade is disabled"; case134: return (false); //error_string="not enough money"; case135: return (false); //error_string="price changed"; case136: return (false); //error_string="off quotes"; case137: Sleep (500); return (true); //error_string="broker is busy (never returned error)"; case138: return (false); ////error_string="requote"; case139: return (false); //error_string="order is locked"; case140: return (false); //error_string="long positions only allowed"; case141: return (false); //error_string="too many requests"; //case 145: return (true); //error_string="modification denied because order too close to market"; case146: Sleep (500); return (true); //error_string="trade context is busy"; //case 147: return (true); error_string="expirations are denied by broker"; //case 148: return (true); error_string="amount of open and pending orders has reached the limit"; //case 149: return (true); error_string="hedging is prohibited"; case150: return (false); //error_string="prohibited by FIFO rules"; default : return (false);
}
return(false); // can not manage the err we get out
}
Donc, vous avez un problème, que PAS TOUTES les commandes sont fermées. Ce code, que vous avez collé - ne fermera JAMAIS tous les ordres. Donc si vous voulez de l'aide - collez TOUT le code qui fonctionne avec la fermeture des ordres. Il n'est pas nécessaire de coller tout votre code (je comprends que vous voulez le garder secret), mais vous n'obtiendrez jamais d'aide sans coller une partie du code, qui est impliqué dans le problème (dans ce cas - il n'y a aucun code pour la fermeture des ordres SHORT).
Vous avez raison, je ne vois qu'une partie de votre code et vous avez probablement d'autres projets en tête, et lire 4000 lignes de code n'aide sûrement pas à avoir les idées claires - moi aussi.
Vous avez dit que votre EA ne peut pas fermer un trade. Nous devons donc trouver la cause de ce problème et y remédier. C'est ainsi que je vois les choses :
:D
Merci à onewithzachy pour cette idée. Elle est utile partout comme elle l'est ici.
S'il vous plaît, laissez-le fonctionner pendant encore quelques heures, et je promets de vous tenir au courant.
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
Ne pensez-vous pas que 20000 tentatives sont un peu excessives ? Si la fermeture échoue 5 fois de suite, il est temps d'arrêter.
Ce serait bien d'imprimer le message d'erreur si la fermeture échoue.
Bonjour crossy,
Vous avez raison, je ne vois qu'une partie de votre code et vous avez probablement d'autres projets en tête, et lire 4000 lignes de code n'aide sûrement pas à avoir les idées claires - moi aussi.
Vous avez dit que votre EA ne peut pas fermer un trade. Nous devons donc trouver la cause de ce problème et y remédier. C'est ainsi que je vois les choses :
:D
Donc, vous avez un problème, que PAS TOUTES les commandes sont fermées. Ce code, que vous avez collé - ne fermera JAMAIS tous les ordres. Donc si vous voulez de l'aide - collez TOUT le code qui fonctionne avec la fermeture des ordres. Il n'est pas nécessaire de coller tout votre code (je comprends que vous voulez le garder secret), mais vous n'obtiendrez jamais d'aide sans coller une partie du code, qui est impliqué dans le problème (dans ce cas - il n'y a aucun code pour la fermeture des ordres SHORT).
Bonjour crossy,
Vous avez raison, je ne vois qu'une partie de votre code et vous avez probablement d'autres projets en tête, et lire 4000 lignes de code n'aide sûrement pas à avoir les idées claires - moi aussi.
Vous avez dit que votre EA ne peut pas fermer un trade. Nous devons donc trouver la cause de ce problème et y remédier. C'est ainsi que je vois les choses :
:D
Merci à onewithzachy pour cette idée. Elle est utile partout comme elle l'est ici.
S'il vous plaît, laissez-le fonctionner pendant encore quelques heures, et je promets de vous tenir au courant.
Merci aussi à Raptor pour sa belle contribution.
Y.
Bonjour,
Comme promis, après 6 heures l'EA fonctionne, tout fonctionne correctement, grâce à votre
bonne réflexion.
Donc, en attendant allons de l'avant et j'espère qu'il n'y aura pas de truboles.
Y.
Bonjour,
Comme promis, après 6 heures l'EA fonctionne, tout fonctionne correctement, grâce à votre
bonne réflexion.
Donc, en attendant allons de l'avant et j'espère qu'il n'y aura pas de truboles.
Y.
Super !,Veuillez nous tenir au courant dans une semaine.
:D