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
Por favor, dígame, si la función OrderSend devolvió true y result.order tiene un ticket de orden (result.order!=0), ¿garantiza que la orden es aceptada por el broker y está en la pestaña de operaciones o en esta etapa la solicitud es aceptada sólo por el servidor del broker pero no por la bolsa?
Y la segunda pregunta, ¿puede haber una situación cuando OrderSend devuelve true y result.order==0 ?
¿Puede decirme, por favor, si la función OrderSend devuelve true y result.order tiene un ticket de orden (result.order!=0), garantiza que la orden es aceptada por el broker y está en la pestaña de negociación o en esta etapa la solicitud es aceptada sólo por el servidor del broker pero no por la bolsa?
Garantizado.
Y la segunda pregunta, ¿puede haber una situación en la que OrderSend devuelva true y result.order==0 ?
No.
Garantías.
No.
El otro día añadieron una aclaración para la función OrderSend, consulte la ayuda en línea.
El otro día añadieron una aclaración para la función OrderSend, consulte la ayuda en línea.
¿Se aplica esto a las órdenes de mercado?
Cada orden aceptada se almacena en el servidor de operaciones a la espera de ser procesada hasta que se produzca una de las condiciones para su ejecución:
Foro sobre trading, sistemas automatizados de trading y testeo de estrategias de trading
Errores típicos y formas de eliminarlos al trabajar con el entorno de negociación
fxsaber, 2018.02.20 12:23 pm.
Esquema condicional de implementación del OrderSend estándar (sin timeout).De este esquema podemos ver claramente que al colocar una orden de mercado vía OrderSendAsync en el mismo MetaQuotes-Demo, es imposible garantizar la captura del evento de colocación de la orden correspondiente hasta que la orden sea ejecutada o rechazada. Es decir, MT5 no dispone de mecanismos sencillos para evaluar los resultados intermedios de su OrderSendAsync.
OrderSend se ejecuta hasta que Result.request_id es igual al mismo valor de OrderSendAsync en OnTradeTransaction. O se termina por tiempo de espera. Por lo tanto, el resultado de OrderSend depende sólo del tipo de mensaje en OnTradeTransaction con el request_id correspondiente.
Sería útil conocer la formación del propio request_id. Si he entendido bien, se trata de un contador de órdenes enviadas al servidor comercial desde el momento de lanzamiento/conexión del Terminal/Cuenta. El propio Terminal analiza los mensajes entrantes del servidor de comercio y, o bien asigna el request_id requerido a uno solo (lo cual es dudoso), o bien restablece el request_id a un determinado mensaje (lo más probable). Este comportamiento hizo posible hace algún tiempo que el Historial de Ofertas coincidiera con la salida de OrderSend. Pero como sólo un mensaje en OnTradeTransaction es visible con el request_id correcto, se produce la desagradable situación asíncrona de la cita anterior.
Buenas tardes, he encontrado inconsistencias para MqlTradeResult.deal y MqlTradeResult.order
1) Descripción (Manual de Referencia MQL5)
2) Trading en tiempo real
Coloco ordenes de mercado (TRADE_ACTION_DEAL). Doy salida a los valores MqlTradeResult usando la función Print:
y la operación aparece en el registro:
Intenté "dormirme" con la función Sleep durante un par de segundos y volver a emitir los datos (cuando la operación ya está exactamente realizada y la posición está abierta), el número de la operación no apareció.
3) Probador de Estrategias
Aquí se rellenan todos los campos:
¿Cuál es la causa de estas diferencias?
Buenas tardes, he encontrado incoherencias para MqlTradeResult.deal y MqlTradeResult.order
https://www.mql5.com/es/docs/trading/ordersend
Al enviar una orden de mercado (MqlTradeRequest.action=TRADE_ACTION_DEAL), el resultado exitoso de la función OrderSend() no significa que la orden fue ejecutada (las operaciones correspondientes fueron ejecutadas): true en este caso significa solamente que la orden fue colocada exitosamente en el sistema de negociación para su posterior ejecución. El servidor de operaciones puede rellenar los valores de los campos de operación u orden en la estructura de resultados devuelta , si estos datos le son conocidos en el momento de formar la respuesta a la llamada OrderSend(). En general, el evento o eventos de ejecución de operaciones correspondientes a la orden pueden ocurrir después del envío de la respuesta a la llamada OrderSend(). Por lo tanto, para cualquier tipo de solicitud de negociación, al recibir el resultado de la ejecución de OrderSend(), es necesario comprobar en primer lugar el código de retorno del servidor de negociación retcode y el código de respuesta del sistema de negociación externo retcode_external (si es necesario), que están disponibles en la estructura de resultados devuelta.
Gracias por un artículo tan informativo. @MetaQuotes
Pregunta: ¿Cómo puedo hacer un bucle colectivo a través de ambos: órdenes abiertas y posiciones abiertas en un solo bucle for() (de manera similar a como hacemos un bucle con todas las órdenes en MQL4 y luego comprobar si una orden ya está ejecutada o es una orden pendiente)?
Gracias por un artículo tan informativo. @MetaQuotes
Pregunta: ¿Cómo puedo hacer un bucle colectivo a través de ambos: órdenes abiertas y posiciones abiertas en un solo bucle for() (de manera similar a como hacemos un bucle con todas las órdenes en MQL4 y luego comprobar si una orden ya está ejecutada o es una orden pendiente)?
Para calcular POSICIONES y ORDENES PENDIENTES hay que utilizar dos ciclos independientes. Un ciclo enumera las POSICIONES, y el segundo ciclo enumera las ORDENES PENDIENTES. Ejemplo: Calcular Posiciones y Órdenes Pendientes
Sé que no eres de los que se preocupan por los que empiezan en el lenguaje mql5, dada la fuerte comunidad que tienes, a pesar de las muchas críticas, aquí va una más:
La traducción y la propia redacción del texto dificultan la comprensión...he sudado, he tenido que ir muy lejos para encontrar quien debe ir primero, ya que la propia documentación se contradice, en el texto:
Para obtener información sobre un pedido del historial, primero hay que crear la caché del historial de pedidos mediante una de estas tres funciones: HistorySelect(inicio, fin), HistorySelectByPosition() o HistoryOrderSelect(ticket). Si la ejecución tiene éxito, la caché almacenará el número de pedidos, devuelto por la funciónHistoryOrdersTotal(). El acceso a las propiedades de estos pedidos se realiza por cada uno de los elementos del ticket, utilizando la función adecuada:
En contraste con: https: //www.mql5.com/pt/docs/trading/historyorderstotal transcrito a continuación.
HistorialPedidosTotalDevuelve el número de órdenes del histórico. Antes de llamar a HistoryOrdersTotal(), primero debe recibir el historial de operaciones y órdenes utilizando la funciónHistorySelect() o la funciónHistorySelectByPosition().
int TotalOrdenesHistoria();
Valor devuelto
Valor de tipodouble.
Nota
No confunda las órdenes de un historial de operaciones conlas órdenes pendientes que aparecen en la pestaña "Operaciones" de la barra de herramientas. La lista deórdenes que han sido canceladas o que han dado lugar a una operación puede verse en la pestaña "Historial" de la caja de herramientas del terminal cliente.
Véase también
El primer pasaje se contradice a sí mismo, no necesita ayuda, pero llega el segundo y termina de complicar las cosas....: después de todo, ¿quién va primero, HistoryOrdersTotal o una de las tres funciones HistorySelect (start, end) HistorySelectByPosition() o HistoryOrderSelect(ticket), o incluso HistorySelectByPosition(), mencionadas en el segundo texto.
Ha sido difícil, podría haber sido más fácil... pero creo que lo primero que se me ocurre es una de las tres HistorySelect(start, end) HistorySelectByPosition () o HistoryOrderSelect(ticket), o incluso HistorySelectByPosition(), mencionadas en el segundo texto...
Buenas tardes,
pregunta a los desarrolladores: ¿podéis darme una información aproximada, de cuanta memoria ocupa la caché del historial? aproximadamente kbytes para una operación y un pedido.
He ejecutado el script en un terminal con un historial pequeño y he obtenido este resultado:
Esto significa que con un histórico de un par de millones de operaciones y un millón de órdenes, la caché ocupará aproximadamente un gigabyte?
¿Y así para cada programa mql?