Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 842

 

OrderClose(OrderTicket(),0.01,Bid,2);

en "expertos" dice "ticket inválido para la función OrderClose".

¿Ayuda? mi objetivo es cerrar la orden en el gráfico actual.

 
Escapee:

OrderClose(OrderTicket(),0.01,Bid,2);

en "expertos" dice "ticket inválido para la función OrderClose".

¿Ayuda? mi objetivo es cerrar la orden en el gráfico actual.

if (OrdersTotal()==true)
{
if(OrderSelect(ticket,SELECT_BY_TICKET)>0 && OrderType()==(OP_BUY/OP_SELL здесь поставишь какой ордер) && (здесь можешь написать условия закрытия т.е. сигнал) 
{
bool close = OrderClose(OrderTicket(),OrderLots(),Bid,3,clrRed); 
if(!close)
Print("Ошибка закрытия ордера. Код ошибки=",GetLastError());
else
Print("Ордер BUY успешно закрыт.");
}
}
 
Necesito cerrar REALMENTE el pedido, ¿si puedo? ¿Por qué no funciona orderticket en la línea del programa que escribí?
 
Pokrov:

Buenas noches! Ayúdame a entender el código de abajo, vender está escrito en el mismo principio, ¿por qué tres opciones para abrir, porque tuve que juguetear con la opción para evitar la apertura de un orden entonces - cuando la orden se abre en la barra actual y se cierra en un no sorteo,

y la señal permanece y se abre de nuevo, por lo que he tenido que escribirlo así. El problema es que sólo se abre una orden de compra y de venta y todo lo demás está en silencio. No encuentro más errores, se lo agradezco de antemano.

¿Cómo se entiende esta línea?

if (!OrdersTotal()==true)

No sé cómo leer esta línea y esta otra.

if (!OrdersHistoryTotal()==true)

y esta otra...

if(OrderSelect(ticket,SELECT_BY_TICKET)>0 // дальше я не смотрел

Aunque esta última línea funcionará, pero no es tan escribir ... Me he quedado sin palabras.

Bueno, si no puedes encontrar el error, entonces probablemente no hay error...

 
Escapee:

OrderClose(OrderTicket(),0.01,Bid,2);

en "expertos" dice "ticket inválido para la función OrderClose".

¿Ayuda? mi objetivo es cerrar la orden en el gráfico actual.

Porque antes de trabajar con una orden necesito seleccionarla con la función OrderSelect()
 
AlexeyVik:

¿Cómo se entiende esta línea?

y esta otra.

Y este...

Aunque esta última línea funcionará, pero no es la forma de escribir ... Me he quedado sin palabras.

Bueno, si no encontraste el error, entonces probablemente no hay error...

1. Si no hay órdenes abiertas

2. Si no hay órdenes cerradas.

¿Qué ocurre?

 
Pokrov:

1. Si no hay órdenes abiertas

2. Si no hay órdenes cerradas.

¿Qué ocurre?

int OrdersTotal(); - devuelve un número, no un verdadero falso, eso es lo que está mal. Si no hay órdenes, significa 0. Si hay órdenes, no es sólo 1.

Y no hay órdenes cerradas sólo en una cuenta recién abierta en la que aún no hemos operado. De nuevo, este es un uso incorrecto de la función.

¿Y por qué RefreshRates(); DESPUÉS de que la orden haya sido enviada al servidor? Es como pagar algo primero y luego preguntar "¿cuánto cuesta?

 
Pokrov:

if (OrdersTotal()==true)
{
if(OrderSelect(ticket,SELECT_BY_TICKET)>0 && OrderType()==(OP_BUY/OP_SELL здесь поставишь какой ордер) && (здесь можешь написать условия закрытия т.е. сигнал) 
{
bool close = OrderClose(OrderTicket(),OrderLots(),Bid,3,clrRed); 
if(!close)
Print("Ошибка закрытия ордера. Код ошибки=",GetLastError());
else
Print("Ордер BUY успешно закрыт.");
}
}

¿Qué clase de tonterías están haciendo aquí?

Si el número total de órdenes y posiciones es 1 o más...
Si se selecciona una orden en un ticket desconocido y no está claro si está cerrada o abierta...
...etc...

¿Cree que ha ayudado?

 
evillive:

... La ausencia de órdenes significa 0, y si hay órdenes, no es sólo 1.

...

Aquí es donde voy a corregir con permiso por así decirlo.

En bool si hay 0 entonces es falso, todo lo demás que no sea cero es verdadero

 
Escapee:

OrderClose(OrderTicket(),0.01,Bid,2);

en "expertos" dice "ticket inválido para la función OrderClose".

¿Ayuda? mi objetivo es cerrar la orden en el gráfico actual.

Para cerrar una posición mediante un ticket, primero hay que saber el número exacto de ticket de la posición que se va a cerrar. A continuación, es necesario seleccionar el pedido mediante la función OrderSelect(ticket,SELECT_BY_TICKET), con comprobaciones para la selección correcta. A continuación, tenemos que comprobar la hora de cierre de la orden seleccionada con éxito. ¿Por qué? Porque cuando seleccionamos por ticket, el parámetro pool de la función OrderSelect(..., ..., pool) se ignora (sólo se utiliza cuando seleccionamos por índice). Y esto significa que aunque hayamos seleccionado con éxito una orden, todavía tenemos que saber en qué lista la hemos elegido: la lista de posiciones cerradas o abiertas. Es la comprobación de la hora de cierre la que nos permite saber "si la orden sigue en el mercado". Si la hora de cierre es igual a cero, la orden sigue en el mercado. Si la hora es diferente de cero, la orden ya se ha cerrado antes. Y después de todo este procedimiento, podemos enviar una orden para cerrar esa orden.