Aprender y escribir juntos en MQL5 - página 34

 
Yedelkin:

Un simple script como este me da resultados extraños

¿Tal vez alguien pueda explicar cuál es la razón? Cuando el número 254 se convierte explícitamente a uchar, funciona como se pretende.

Gracias por el mensaje, vamos a investigarlo.
 
Rosh:
Gracias por el mensaje, lo solucionaremos.

La misma historia con ushort:

void OnStart()
  {
   for(ushort i=32760;i<32775;i++)
     {
      switch(i>USHORT_MAX-2)
        {
         case   true:  Print(__FILE__," ",__FUNCTION__,": ",i,">(USHORT_MAX-2) - true");   break;
         case  false:  Print(__FILE__," ",__FUNCTION__,": ",i,">(USHORT_MAX-2) - false");  break;
        }
     }
  }
 

¿Cómo se puede hacer para que cuando se produzca una condición, la música comience? Heh-heh, es una aplicación un poco extraña de mql)) Pero ver la imagen esperando el momento adecuado es aburrido, y dejar completamente todo el trabajo al robot de alguna manera no es tan sensato. Así que he decidido dejar que la música suene cuando yo quiera, y luego lo haré yo mismo))

Busqué en el libro de referencia, o tal vez estaba buscando demasiado o algo así, pero no pude encontrarlo).

 
Consulta la función PlaySound()
 
Rosh:
Consulta la función PlaySound()

Muchas gracias).
 

Pregunta sobre el seguimiento de las recotizaciones.

La descripción de la función OrderSend() dice que "Cuando se coloca una orden de mercado, la finalización exitosa del método OrderSend() no siempre significa la ejecución exitosa de la operación. Es necesario comprobar la ... el valor del retcódigo". Es decir, se puede deducir que si OrderSend()==true, aún podemos obtener una recotización. Bien.

Pero en el ejemplo ("Envío de una solicitud de operación con gestión de resultados") a la sección"Estructura del resultado de la solicitud de operación" el mensaje sobre una recotización sólo se comprueba si OrderSend() ==false.

Entonces, ¿en qué casos comprobamos las recotizaciones: en cualquier valor devuelto por OrderSend(), o sólo si OrderSend() ==false?

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

Pregunta sobre el seguimiento de las recotizaciones.

La descripción de la función OrderSend() dice que "al colocar una orden de mercado, la finalización con éxito del método OrderSend() no siempre significa una transacción exitosa.

La ejecución exitosa de OrderSend() sólo significa que se comprueba que la solicitud es correcta y se coloca en la cola para su ejecución. Pero su destino posterior no está garantizado: el pedido puede ser cancelado durante su tramitación, por ejemplo, debido a una política de llenado.

Pero en general, si hubo una recotización, OrderSend() ha fallado claramente.

 
Rosh:

La ejecución satisfactoria de OrderSend() sólo significa que se ha comprobado que la solicitud es correcta y se ha puesto en cola para su ejecución. Pero su destino posterior no está garantizado: el pedido puede ser cancelado durante su tramitación, por ejemplo, debido a la política de llenado.

Pero en general, si hubo una recotización, OrderSend() ha fallado claramente.

En otras palabras, una recotización significa que la solicitud inicialmente no pasó la comprobación de corrección...
 
Yedelkin:
En otras palabras, una recotización significa que la solicitud inicialmente no pasó la comprobación de corrección...

Pues sí, el precio indicado en la petición no se ajustaba y se le pide que tenga en cuenta los nuevos precios que se pueden obtener de la estructura de respuesta del servidor MqlTradeResult:

struct MqlTradeResult
  {
   uint     retcode;          // Код результата операции
   ulong    deal;             // Тикет сделки, если она совершена
   ulong    order;            // Тикет ордера, если он выставлен
   double   volume;           // Объем сделки, подтверждённый брокером
   double   price;            // Цена в сделке, подтверждённая брокером
   double   bid;              // Текущая рыночная цена предложения (цены реквота)
   double   ask;              // Текущая рыночная цена спроса (цены реквота)
   string   comment;          // Комментарий брокера к операции (по умолчанию заполняется расшифровкой)
  };

 
Rosh:

Pues sí, el precio indicado en la petición no coincidía y se le pide que tenga en cuenta los nuevos precios, que se pueden obtener de la estructura de respuesta del servidor MqlTradeResult:

¡BIEN!

Probablemente, estoy exagerando, pero aquí hay otra pregunta. Antes de enviar una solicitud para colocar una orden de mercado (para abrir una posición), pongo a cero el ticket de la operación, es decir, hago que result.deal=0. ¿Podemos esperar que el servidor devuelva un ticket de operación nulo en la estructura de respuesta MqlTradeResult, pero que un poco más tarde se ejecute la operación y se abra la posición? ¿O la devolución de un ticket de operación nulo por parte del servidor garantiza que la posición no pudo abrirse y no se abrirá más en base a esta solicitud?