Buenos días por favor ayuden a resolver el problema del cierre erróneo de los pedidos
Cuando se obtiene un beneficio positivo, el Asesor Experto cierra la primera y la última orden de la parrilla de pedidos
Todo está bien en una cuenta demo, pero en una cuenta real sólo se cierra la penúltima orden. Me enfrenté a un problema de este tipo cuando tuve que cerrar toda la parrilla de pedidos y el problema estaba en las recotizaciones, entonces se puso la bandera y el problema se ha resuelto. Aquí he hecho lo mismo pero el problema no se soluciona.
Bandera:
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 en una cuenta demo, pero en una cuenta real sólo se cierra la penúltima orden. Me enfrenté a un problema de este tipo cuando tuve que cerrar toda la parrilla de pedidos y el problema estaba en las recotizaciones, entonces se puso la bandera y el problema se ha resuelto. Aquí he hecho lo mismo pero el problema no se soluciona.
//-------------------------------------------------------------------+ Команда на удаление линий отображающую среднюю цену мин и макс ордеров и текстаif(CountTrade() == 0 || Drawdown < DrawdownClosingMinMaxOrdersZero)
{
flag_close2=0;flag_close3=0;
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
¿Tienes una memoria de 24 horas?
No. No he encontrado la forma de implementar lo que necesito - tal vez lo haga con la segunda iteración;-)
Maxim Kuznetsov le dijo cómo. ¿Lo has leído?
Buenos días por favor ayuden a resolver el problema del cierre erróneo de los pedidos
Cuando se obtiene un beneficio positivo, el Asesor Experto cierra la primera y la última orden de la parrilla de pedidos
Todo está bien en una cuenta demo, pero en una cuenta real sólo se cierra la penúltima orden. Me enfrenté a un problema de este tipo cuando tuve que cerrar toda la parrilla de pedidos y el problema estaba en las recotizaciones, entonces se puso la bandera y el problema se ha resuelto. Aquí he hecho lo mismo pero el problema no se soluciona.
Bandera:
¡¡¡¡Gracias!!!!
Bandera:
¡¡¡¡Gracias!!!!
¿Dónde se reinicia su bandera?
Si lo pusiera aquí estaría bien
Si lo pongo aquí, estará bien.
No. De esta manera se reiniciará cuando se cierren todos los pedidos.
Teniendo en cuenta que no es necesario cerrar todas las órdenes, es mejor volver a ejecutar las entradas y cerrarlas.
No. De esta manera se reiniciará cuando se cierren todos los pedidos.
Teniendo en cuenta que no es necesario cerrar todas las órdenes, es mejor volver a ejecutar las entradas y cerrar
Un momento.
Un momento.
pero de esta manera.
No. De esta manera se reiniciará cuando se cierren todos los pedidos.
Teniendo en cuenta que no es necesario cerrar todos los pedidos, es mejor hacer un bucle con los tickets y cerrarlos.
¿No paso por los teletipos en la función de cierre de la orden?
sino así.
Significa que si no hay órdenes