//-------------------------------------------------------------------+ Команда на закрытие мин макс и предпоследнего ордеров в сетке профит = 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());
}
}
}
}
}
}
}
//-------------------------------------------------------------------+ Команда на удаление линий отображающую среднюю цену мин и макс ордеров и текстаif(CountTrade() == 0 || Drawdown < DrawdownClosingMinMaxOrdersZero)
{
flag_close2=0;flag_close3=0;
你有24小时的记忆吗?
没有。我还没有找到如何实现我所需要的东西--也许我会在第二次迭代中实现;--)
马克西姆-库兹涅佐夫告诉你如何。你读过吗?
日安,请帮助解决错误关闭订单的问题。
当获得正的利润时,专家顾问关闭订单网格中的第一个和最后一个订单。
在模拟账户上 一切正常,但在真实账户上只有倒数第二的订单被关闭。我面临这样一个问题,当我不得不关闭整个订单网格时,问题出在重新报价上,然后设置了标志,问题就解决了。在这里,我也做了同样的工作,但问题没有得到解决。
旗帜。
谢谢!!!!
旗帜。
谢谢!!!!
你的旗帜在哪里重置?
如果我把它放在这里,它就会是正确的
如果我把它放在这里,它就会是正确的。
不,这种方式将在所有订单关闭时重置。
考虑到你不需要关闭所有订单,最好重新运行票据并关闭它们。
不,这种方式将在所有订单关闭时重置。
考虑到你不需要关闭所有订单,最好重新运行票据并关闭
稍等片刻。
请稍等。
但这种方式。
不,这样它就会在所有订单结束后重置。
考虑到你不需要关闭所有的订单,最好是循环浏览票据并关闭它们。
在平仓功能中,我不去看那些股票吗?
但像这样。
这意味着如果没有订单