[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 464

 
sss2019:
¿Puedes decirme qué función debe cerrar la mitad de la orden, OrderClose() o OrderCloseBy()?

Si hay una orden abierta y sólo hay que cerrar una parte de ella, basta con utilizar OrderClose() especificando el volumen a cerrar.
 
sss2019:
¿Puedes decirme qué función debe cerrar la mitad de la orden, OrderClose() o OrderCloseBy()?

Cerrando la mitad del volumen de pedidos:

   int Ticket = ...
   OrderSelect(Ticket, SELECT_BY_TICKET);
   OrderClose(Ticket, NormalizeDouble(OrderLots()/2), Ask /*или Bid*/, Slippage);
 
MaxZ:

Cerrar la mitad del volumen de pedidos:


OrderSelect() antes de OrderClose() no es necesario.
 
PapaYozh:

OrderSelect() antes de OrderClose() no es necesario.
es necesario porque utiliza OrderLots
 
ilunga:
es necesario, ya que utiliza OrderLots


En ese caso:

- En primer lugar, tenemos que comprobar el resultado devuelto por OrderSelect();

- En segundo lugar, hay que vigilar el volumen obtenido en el proceso de división, pues de lo contrario podría no cerrarse.

 

PapaYozh, MaxZ El lote es 0,1, en el cálculo de 30 ( ClosingPercent = 30) los porcentajes deberían ser 0,03, pero el error 131 se produce al cerrar con este lote.

           ClosingLot = OrderLots() / 100 * ClosingPercent;
           ClosingLot = NormalizeDouble(ClosingLot,3);
           OrderClose(OrderTicket(),ClosingLot,Ask,Slippage,Green);
 
sss2019:

PapaYozh, MaxZ El lote es 0,1, en el cálculo de 30 ( ClosingPercent = 30) los porcentajes deberían ser 0,03, pero el error 131 se produce al cerrar con este lote.


¿Por qué se normaliza el volumen a 3 dígitos?
 
sss2019:

PapaYozh, MaxZ Es un lote de 0,1, al calcular el 30 ( ClosingPercent = 30) el porcentaje debería ser de 0,03, pero el error 131 se produce al cerrar con este lote

1) ¿por qué normalizar a 3 dígitos?

2) probablemente el lote mínimo es de 0,1 y entonces un lote más pequeño en principio no está disponible.

 
PapaYozh:

¿Por qué se normaliza el volumen a 3 dígitos?

Bueno, si el lote es de 0,10, no puedes cerrar el 30%. Pero he intentado normalizar a 2 dígitos con 1 lote y sigue el mismo error.
 
sss2019:

Pues si el lote es de 0,10 entonces no se puede cerrar el 30% ya. Pero he probado a normalizar a 2 dígitos con el lote 1 y sigue dando el mismo error.

los dígitos no se cuentan como un todo, sino después del punto decimal.

es decir, al normalizar el número 10,044425 a 2 dígitos se obtiene el número 10,04


Sí, ¿y dónde está su selección de pedidos antes de utilizar OrderLots?

Razón de la queja: