Les amis, nous avons besoin d'aide. La fonction doit fermer la moitié des ordres en commençant nécessairement par le plus ancien. Dans le premier cas, les ordres sont fermés un par un pour une raison quelconque, et dans le second, ils commencent à se fermer dans le mauvais ordre.
void CloseHalfOrders (int otype)// ф-ция закрытия половины ордеров сетки
{
int count = 0; double CTbuy = CountTrades(OP_BUY); double CTsell = CountTrades(OP_SELL);
for (int i = 0; i<=OrdersTotal;i++)
{
if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype)
{
if (otype == OP_BUY)
{
if (count<CTbuy/2 && CTbuy>3 )
OrderClose(OrderTicket(),OrderLots(),Bid,0,Black);
count++;
Sleep(1000);
}
elseif (otype == OP_SELL)
{
if (count<CTsell/2 && CTsell>3)
OrderClose(OrderTicket(),OrderLots(),Ask,0,Black);
count++;
Sleep(1000);
}
}
}
}
}
Bonjour, j'ai cherché chez Kim, mais je ne trouve rien qui me permette de savoir : De quel ordre (en attente) a été ouverte la position? D'un ordre à cours limité ou d'un ordre stop ?
J'ai essayé de comparer les prix de la dernière commande ouverte
Les amis, nous avons besoin d'aide. La fonction doit fermer la moitié des ordres en commençant nécessairement par le plus ancien. Dans le premier cas, les ordres sont fermés un par un pour une raison quelconque, et dans le second, ils commencent à se fermer dans le mauvais ordre.
Il y avait une question comme celle-ci, comment fermer les ordres en commençant par le plus ancien, quelques pages plus loin il y a une réponse et le code correct.
Bonjour, j'ai cherché chez Kim, mais je ne trouve rien qui me permette de savoir : De quel ordre (en attente) a été ouverte la position ? D'un ordre à cours limité ou d'un ordre stop ?
J'ai essayé de comparer les prix de la dernière commande ouverte
avec une position ouverte dessus mais toute la logique est cassée. Peut-être y a-t-il quelque chose de plus approprié ? Merci !
Boris. Essayez d'écrire le commentaire des ordres - limite à limite, stop à stop. Ensuite, à partir de ces commentaires sur les positions ouvertes, vous saurez de quoi les jambes sont issues. Seule une fermeture partielle de ces commentaires les effacera. Peut-être que quelque chose d'autre peut tuer les commentaires. Seules les positions supprimées sont enregistrées dans l'historique. Ceux qui ont marché ne sont pas là. Vous devez passer par... vous comprenez ce que vous devez traverser...
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.
Donc j'ai besoin d'un nombre entier...
Les amis, nous avons besoin d'aide. La fonction doit fermer la moitié des ordres en commençant nécessairement par le plus ancien. Dans le premier cas, les ordres sont fermés un par un pour une raison quelconque, et dans le second, ils commencent à se fermer dans le mauvais ordre.
Donc j'ai besoin d'un nombre entier...
MathRound
donc c'est un arrondi, le nombre ne devient pas int, il reste double
donc c'est un arrondi, le nombre ne devient pas int, mais reste double
Et alors ? Y a-t-il une différence fondamentale entre 1 et 1.0 pour les calculs ? Bien sûr, le format est double, mais la valeur est entière.
Une variante particulièrement perverse ensuite : DoubleToStr puis StringToInteger
Veuillez me dire comment supprimer l'avertissement dans le nouveau compilateur.
perte éventuelle de données due à la conversion de type
Merci, donc pas d'avertissement préalable, il est déjà en train de manger mon œil)
Bonjour, j'ai cherché chez Kim, mais je ne trouve rien qui me permette de savoir : De quel ordre (en attente) a été ouverte la position? D'un ordre à cours limité ou d'un ordre stop ?
J'ai essayé de comparer les prix de la dernière commande ouverte
avec une position ouverte dessus mais toute la logique est cassée. Peut-être y a-t-il quelque chose de plus approprié ? Merci !
Les amis, nous avons besoin d'aide. La fonction doit fermer la moitié des ordres en commençant nécessairement par le plus ancien. Dans le premier cas, les ordres sont fermés un par un pour une raison quelconque, et dans le second, ils commencent à se fermer dans le mauvais ordre.
Il y avait une question comme celle-ci, comment fermer les ordres en commençant par le plus ancien, quelques pages plus loin il y a une réponse et le code correct.
https://www.mql5.com/ru/forum/145455/page406
Bonjour, j'ai cherché chez Kim, mais je ne trouve rien qui me permette de savoir : De quel ordre (en attente) a été ouverte la position ? D'un ordre à cours limité ou d'un ordre stop ?
J'ai essayé de comparer les prix de la dernière commande ouverte
avec une position ouverte dessus mais toute la logique est cassée. Peut-être y a-t-il quelque chose de plus approprié ? Merci !