Bonjour, aidez-nous à résoudre le problème de fermeture erronée des commandes.
Lorsqu'un profit positif est réalisé, le conseiller expert ferme le premier et le dernier ordre de la grille d'ordres.
Tout va bien sur un compte de démonstration, mais sur un compte réel, seul l'avant-dernier ordre est fermé. J'ai été confronté à un tel problème lorsque j'ai dû fermer toute la grille des commandes et le problème se situait au niveau des requêtes, puis le drapeau a été activé et le problème est résolu. Ici, j'ai fait la même chose mais le problème n'est pas résolu.
Drapeau :
int flag_close3=0;
//-------------------------------------------------------------------+ Команда на закрытие мин макс и предпоследнего ордеров в сетке профит = 0if(CalculiteProfitMinMaxPenultimateOrders() >= 0 && Drawdown >= DrawdownClosingMinMaxOrdersZero && FindPenultimateProfit() > 0)
{
flag_close3=1;
}
//-------------------------------------------------------------------+ Флаг на закрытие ордеровif(flag_close3==1)
ClosseMinMaxPenultimateOrdersZero();
//+----------------------------------------------------------------------------+//| Закрытие минимального максимального и предпоследнего ордеров профит = 0 |//+----------------------------------------------------------------------------+void ClosseMinMaxPenultimateOrdersZero()
{
int slipp = (int) MarketInfo(_Symbol,MODE_SPREAD)*2;
for(int i = OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
if(OrderType() == OP_BUY)
{
if(CalculiteProfitMinMaxPenultimateOrders() >= 0 && Drawdown >= DrawdownClosingMinMaxOrdersZero && FindPenultimateProfit() > 0)
{
if(OrderClose(GetTicketPenultimateOrder(), FindPenultimateLots(), Bid, slipp) && OrderClose(GetTicketMinOrder(), GetMinLotOrder(), Bid, slipp) &&
OrderClose(GetTicketMaxOrder(), FindLastLots(), Bid, slipp))
{
SendNotification("Закрылся минимальный максимальный и предпоследний ордера на покупку: " + Symbol() + ", Баланс: " + DoubleToString(NormalizeDouble(AccountBalance(), 2))
+ ", Свободно денежных средств: " + DoubleToString(NormalizeDouble(AccountFreeMargin(), 2)));
Print("Максимальный и минимальный ордера на покупку успешно закрыты!");
}
else
{
Print("Не удалось закрыть максимальный и минимальный ордера на покупку!",GetLastError());
}
}
}
if(OrderType() == OP_SELL)
{
if(CalculiteProfitMinMaxPenultimateOrders() >= 0 && Drawdown >= DrawdownClosingMinMaxOrdersZero && FindPenultimateProfit() > 0)
{
if(OrderClose(GetTicketPenultimateOrder(), FindPenultimateLots(), Ask, slipp) && OrderClose(GetTicketMinOrder(), GetMinLotOrder(), Ask, slipp) &&
OrderClose(GetTicketMaxOrder(), FindLastLots(), Ask, slipp))
{
SendNotification("Закрылся минимальный максимальный и предпоследний ордера на продажу: " + Symbol() + ", Баланс: " + DoubleToString(NormalizeDouble(AccountBalance(), 2))
+ ", Свободно денежных средств: " + DoubleToString(NormalizeDouble(AccountFreeMargin(), 2)));
Print("Максимальный и минимальный ордера на продажу успешно закрыты!");
}
else
{
Print("Не удалось закрыть максимальный и минимальный ордера на продажу!",GetLastError());
}
}
}
}
}
}
}
EVGENII SHELIPOV sur un compte de démonstration, mais sur un compte réel, seul l'avant-dernier ordre est fermé. J'ai été confronté à un tel problème lorsque j'ai dû fermer toute la grille des commandes et le problème se situait au niveau des requêtes, puis le drapeau a été activé et le problème est résolu. Ici, j'ai fait la même chose mais le problème n'est pas résolu.
//-------------------------------------------------------------------+ Команда на удаление линий отображающую среднюю цену мин и макс ордеров и текстаif(CountTrade() == 0 || Drawdown < DrawdownClosingMinMaxOrdersZero)
{
flag_close2=0;flag_close3=0;
Avez-vous une mémoire de 24 heures ?
Non. Je n'ai pas encore trouvé comment mettre en œuvre ce dont j'ai besoin - peut-être que je le ferai avec la deuxième itération;-)
Maxim Kuznetsov vous a dit comment. L'avez-vous lu ?
Bonjour, aidez-nous à résoudre le problème de fermeture erronée des commandes.
Lorsqu'un profit positif est réalisé, le conseiller expert ferme le premier et le dernier ordre de la grille d'ordres.
Tout va bien sur un compte de démonstration, mais sur un compte réel, seul l'avant-dernier ordre est fermé. J'ai été confronté à un tel problème lorsque j'ai dû fermer toute la grille des commandes et le problème se situait au niveau des requêtes, puis le drapeau a été activé et le problème est résolu. Ici, j'ai fait la même chose mais le problème n'est pas résolu.
Drapeau :
Merci !!!!
Drapeau :
Merci !!!!
Où se trouve votre drapeau ?
Si je le mets ici, ce sera juste.
Si je le mets ici, ce sera bien.
Non. De cette façon, il sera réinitialisé lorsque toutes les commandes seront fermées.
En tenant compte du fait que vous n'avez pas besoin de fermer tous les ordres, il est préférable de relancer les tickets et de les fermer.
Non. De cette façon, il sera réinitialisé lorsque toutes les commandes seront fermées.
Considérant que vous n'avez pas besoin de clôturer tous les ordres, il est préférable de relancer les tickets et de clôturer
Une minute.
Un instant.
mais de cette façon.
Non. De cette façon, il sera réinitialisé lorsque toutes les commandes seront fermées.
Compte tenu du fait que vous n'avez pas besoin de fermer tous les ordres, il est préférable de parcourir les tickets en boucle et de les fermer.
Ne dois-je pas passer par les téléscripteurs dans la fonction d'ordre de fermeture ?
mais comme ça.
Cela signifie que s'il n'y a pas de commandes