Preguntas de OrderSend() - página 7

 

¿Los campos a rellenar son diferentes a los de

INTERCAMBIO_DE_SÍMBOLOS_DE_EJECUCIÓN

Ejecución del intercambio

difieren de los campos en

SÍMBOLO_COMERCIO_EJECUCIÓN_MERCADO

Ejecución de órdenes en el mercado

???

la ayuda tiene un ejemplo para el mercado solamente

Ejecución del mercado

Una orden de apertura de una posición en el modo de ejecución de mercado (Market Execution mode). Requiere la especificación de 5 campos:

  • acción
  • símbolo
  • volumen
  • tipo
  • tipo_relleno

También puede especificar campos mágicos y de comentarios.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 

He leído la documentación, he buscado en el foro... Completamente confundido. Por favor, si no te importa, explícame en N+1 veces.

1. Estoy enviando una solicitud de comercio utilizandoOrderSend. Esta función devuelve true.

Analizamosel retcode (MqlTradeResult). La variable tiene el valorTRADE_RETCODE_DONE.

¿Garantiza esta situación la ejecución real de la orden en el servidor? ¿O sigue siendo necesario realizar algunas comprobaciones en OnTrade, OnTradeTransaction? Entonces, ¿qué sentido tiene analizarel retcódigo si no sirve para nada?

Es decir, la necesidad de OnTrade y OnTradeTransaction cuando se utilizaOrderSendAsync() es clara para mí.

¿Son necesarios cuando se utiliza la funciónOrderSend()? ¿Espera incondicionalmente la ejecución/rechazo de la orden en el servidor antes de enviar el código posterior al Asesor Experto?

 
voix_kas:

...

¿Son necesarios cuando se utilizaOrderSend()? ¿Espera incondicionalmente la ejecución/rechazo de la orden en el servidor antes de enviar la ejecución del código EA posterior?

Si no me equivoco, OrderSend no espera la ejecución de la orden, sólo informa de que la orden es correcta y se ha enviado al servidor.

El valor devuelto es

. Si la comprobación básica de las estructuras (comprobación de punteros) tiene éxito, devuelve true - no indica la ejecución exitosa de la operación comercial. Para obtener una descripción más detallada del resultado de la ejecución de la función, analice los campos de la estructura de resultados.
 
voix_kas: Envío una solicitud de negociación medianteOrderSend. Esta función devuelve true.

2. analizarel retcode (MqlTradeResult). La variable tiene el valorTRADE_RETCODE_DONE.

¿Garantiza esta situación la ejecución real de una orden en el servidor?

retcode puede devolver algo más que RETCODE_DONE :). Pero si un servidor de operaciones devuelve exactamenteTRADE_RETCODE_DONE (orden ejecutada), entonces ¿por qué otra cosa debería comprobarlo? En mi humilde opinión, en esta situación las funciones OnTrade, OnTradeTransaction simplemente duplicarían el retcode.
 
fyords:

Si no me equivoco, OrderSend no espera a que la orden se ejecute, sino que sólo informa de que la orden ha sido verdadera y enviada al servidor de colas.

En ese caso, habría bastado con el "verdadero". Pero los desarrolladores han proporcionado un retcódigo que se supone que almacenael "código de retorno del servidor de comercio".

Es decir, después de que la función OrderSend() funcione , veoTRADE_RETCODE_DONE en la segundalínea de código e intento cambiar, por ejemplo, una posición recién abierta (que lógicamente debería existir) en la tercera línea de código. Sin embargo, PositionSelect devuelve false. La iteración se repite. Como resultado, se abre una posición doble por error.

¿Cómo podemos protegernos contra esta situación?

1. ¿Guiarse sólo por el retconeo y "olvidarse" deOnTrade?

2. ¿Guiado sólo porOnTrade y olvidándose del retconeo?

 
Yedelkin:
retcode puede devolver no sólo RETCODE_DONE :) Pero si un servidor de operaciones devuelve exactamenteTRADE_RETCODE_DONE (orden ejecutada), entonces ¿por qué debería comprobar algo más? En mi humilde opinión, en esta situación las funciones OnTrade, OnTradeTransaction simplemente duplicarían el retcode.

A juzgar por la lista de"Códigos de retorno del servidor de negociación", sólo hay una incertidumbre posible en el modo de ejecución de la solicitud de mercado:TRADE_RETCODE_LOCKED. Y aquí, quizás, no podemos prescindir de OnTrade.

Permítame preguntarle qué conexión utiliza usted personalmente.

Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Коды возврата торгового сервера
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Коды возврата торгового сервера
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Коды возврата торгового сервера - Документация по MQL5
 
voix_kas: A juzgar por la lista de"Códigos de retorno del servidor de operaciones", sólo hay una incertidumbre posible en el modo de ejecución de la solicitud de mercado:TRADE_RETCODE_LOCKED. Y aquí, quizás, no podemos prescindir de OnTrade.

¿Puedo preguntar qué fijaciones utiliza usted personalmente?

También está "Colocado". Son ellos (Placed/Done) los que compruebo desde el punto de vista del envío de la solicitud con éxito.
 
¿Puede citar un código específico?
 
voix_kas: ¿Puede citar un código específico?
No, no puedo darte un código específico. En primer lugar, está sellado en las clases desde hace un año, y en segundo lugar, hay que buscarlo... Ha preguntado - ¿Qué tipo de carpeta estoy utilizando? - Respondí con sinceridad.
 
voix_kas:

¿Cómo puede asegurarse contra esta situación?

1. ¿Utilizar sólo el retcode y "olvidarse" deOnTrade?

2. ¿Sóloen OnTrade y sin usar retcode?

Es más fiable seguir OnTrade, pero también se puede prescindir de él: analizar la transacción completada (ResultDeal()).

Pronto habrá un artículo sobre este mismo tema.

Razón de la queja: