for(i=1; i <=OrdersTotal(); i++) Los pedidos de esta lista se numeran de cero a OrdersTotal()-1, ambos inclusive (que me disculpe Artem Trishkin, acaba de acortar la espera de nys2000).
Vladimir: for(i=1; i <=OrdersTotal(); i++) Los pedidos de esta lista están numerados desde cero hasta OrdersTotal()-1 inclusive (que me disculpe Artem Trishkin, acaba de acortar la espera de nys2000).
Gracias, pero la numeración de los pedidos de 0 a OrdersTotal()-1 se tiene en cuenta en OrderSelect(i-1,...)
En el momento en que se inicia la función, se abren dos posiciones de compra. La función imprime la presencia de dos órdenes dos veces: Pasaje 1, Pasaje 2.
Eliminamos los comentarios y volvemos a ejecutar la función. Anota enérgicamente una orden de compra, declara "Paso nº 1" y abandona el bucle. El mensaje "Pasaje #2" no aparece.
¿Cuál es la magia?
1. i=1, calculamos las órdenes ... ¿ha comprobado la condición 1<= 2? sí. Seleccionado y cerrado el pedido.
2. i++ (i=2)
3. OrdersTotal()=1 <---------- al cerrar la orden dentro del bucle realmente cambió la condición para salir del bucle
4. 2<=1 ? no <----------- aquí su "magia" y en consecuencia la salida del bucle
void CloseAllOrders()
{
bool Ans;
int total=OrdersTotal();
for(int i=1; i <=total; i++)
{
Print("Проход № ", i);
if (OrderSelect(i-1,SELECT_BY_POS)==true)
{
if (OrderSymbol() != Symbol())
continue;
if (OrderType()==0)
{
// Ans=OrderClose(OrderTicket(),OrderLots(), NormalizeDouble(Bid,Digits),25);
}
if (OrderType()==1)
{
// Ans=OrderClose(OrderTicket(),OrderLots(), NormalizeDouble(Ask,Digits),25);
}
}
}
return;
}
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.
¿Podría ser más específico?
empezar de cero
¿Podría ser más específico?
empezar de cero
Son dos opciones equivalentes. Si para (i=1...) entonces OrderSelect(i-1,...), si para (i=0,...) - OrderSelect(i,...)
for(i=1; i <=OrdersTotal(); i++) Los pedidos de esta lista están numerados desde cero hasta OrdersTotal()-1 inclusive (que me disculpe Artem Trishkin, acaba de acortar la espera de nys2000).
Gracias, pero la numeración de los pedidos de 0 a OrdersTotal()-1 se tiene en cuenta en OrderSelect(i-1,...)
Gracias, pero la numeración de los pedidos de 0 a OrdersTotal()-1 se contabiliza en OrderSelect(i-1,...)
Hacer el orden inverso de la búsqueda ...
Se trata de un código sencillo como éste:
En el momento en que se inicia la función, se abren dos posiciones de compra. La función imprime la presencia de dos órdenes dos veces: Pasaje 1, Pasaje 2.
Eliminamos los comentarios y volvemos a ejecutar la función. Anota enérgicamente una orden de compra, declara "Paso nº 1" y abandona el bucle. El mensaje "Pasaje #2" no aparece.
¿Cuál es la magia?
1. i=1, calculamos las órdenes ... ¿ha comprobado la condición 1<= 2? sí. Seleccionado y cerrado el pedido.
2. i++ (i=2)
3. OrdersTotal()=1 <---------- al cerrar la orden dentro del bucle realmente cambió la condición para salir del bucle
4. 2<=1 ? no <----------- aquí su "magia" y en consecuencia la salida del bucle
¿Por qué hay un identificador de gráficoCHART_WINDOW_HANDLE adicional, para qué sirve?
¿Por qué hay un identificador de gráficoCHART_WINDOW_HANDLE adicional, para qué sirve?
Error durante la ejecución
Resultado: número aleatorio (ciertamente no 3)