Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1110
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Devuelve el error 4108 a veces - ticket equivocado para OrderClose. ¿Es posible que OrderTicket() no coincida con el ticket en OrderSelect? La variable del ticket puede ser igual a cero.
Me lleva mucho tiempo reproducir el error, es más fácil preguntar.Devuelve el error 4108 a veces - ticket equivocado para OrderClose. ¿Es posible que OrderTicket() no coincida con el ticket en OrderSelect? La variable del ticket puede ser igual a cero.
Me lleva mucho tiempo reproducir el error, es más fácil preguntar.Se selecciona un pedido por billete. ¿Está seguro de que el pedido seleccionado no está ya cerrado? Pero intentas cerrarlo de nuevo... Compruebe la hora de cierre después de seleccionar correctamente el billete.
Está seleccionando el orden en el billete. ¿Y está seguro de que el pedido seleccionado no está ya cerrado? Pero usted está tratando de cerrarlo de nuevo. Compruebe la hora de cierre después de una selección exitosa en el billete.
Lo comprobaré cuando reproduzca el error. Tengo todos los tickets almacenados en variables globales. Cuando se cierra el pedido, se eliminan. Antes de la entrada de OrderSelect() se toma de las variables globales. Si el ticket no está en variables - esta variable será 0, y por lo tanto el pedido no debe ser seleccionado y OrderSelect() devolverá false. Pero en general, sí, merece la pena comprobarlo. Gracias.
Lo comprobaré cuando reproduzca el error. Tengo todos los tickets almacenados en variables globales. Cuando se cierra el pedido, se eliminan. Antes de la entrada de OrderSelect() se toma de las variables globales. Si el ticket no está en variables - esta variable será 0, y por lo tanto el pedido no debe ser seleccionado y OrderSelect() devolverá false. Pero en general, sí, merece la pena comprobarlo. Gracias.
Es habitual comprobar el precio de cierre cuando se selecciona una orden por ticket. No se sabría de otra manera si la orden está cerrada y seleccionada de la lista de órdenes cerradas, o si sigue abierta y seleccionada de la lista de órdenes de mercado.
La forma más miope es almacenar las entradas en variables globales. Deben tomarse del entorno comercial: la información actual está ahí.
Es habitual comprobar el precio de cierre cuando se selecciona una orden por ticket. No sabrá de ninguna otra manera si la orden está cerrada y seleccionada de la lista de cerradas, o si sigue abierta y seleccionada de la lista de las de mercado.
Es lo más corto de miras almacenar las entradas en variables globales. Deben tomarse del entorno comercial: la información actual está ahí.
Si selecciono así: OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES), ¿se supone que resuelve parcialmente el problema? Yo almaceno las entradas en variables globales por otras razones, pues bien, lo he utilizado en este caso también.
Si selecciono así: OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES), ¿se supone que resuelve parcialmente el problema? Almaceno las entradas en variables globales por otras razones, y las he utilizado también en este caso.
No, no lo hará - el pool (MODE_TRADES) se ignora durante la selección por ticket.
Devuelve el error 4108 a veces - ticket equivocado para OrderClose. ¿Es posible que OrderTicket() no coincida con el ticket en OrderSelect? La variable del ticket puede ser igual a cero.
Me lleva mucho tiempo reproducir el error, es mucho más fácil preguntar.Por lo general, basta con comprobar si hay órdenes de mercado:
OrderCloseTime() == 0 /el pedido está abierto
OrderCloseTime() > 0 //la orden está cerrada
en el caso de las órdenes limitadas, también debe comprobar el precio de cierre; si es igual a 0, la orden limitada ha sido cancelada
¡Hola!
Comparta el código utilizando el método PositionClosePartial, si puede.
Teóricamente entiendo cómo funciona, pero me gustaría ver algún código que funcione.
O aconséjame dónde buscar.
Gracias de antemano.
¡Hola!
Comparta el código utilizando el método PositionClosePartial, si puede.
Teóricamente entiendo cómo funciona, pero me gustaría ver algún código que funcione.
O aconséjame dónde buscar.
Gracias de antemano.
En realidad se trata de una sola línea de código. Pero tienes que conseguir el billete de posición para ello. Aquí está el Asesor Experto de OnInit que abre la posición con 0.2 lotes y cierra la mitad de la posición en OnTick.
O aquí está el código completo de la clase CTrade