Aprender e escrever juntos em MQL5 - página 34

 
Yedelkin:

Um guião simples como este dá-me resultados estranhos

Talvez alguém possa explicar qual é a razão? Quando o número 254 é explicitamente convertido em uchar, funciona como pretendido.

Obrigado pela mensagem, vamos analisar o assunto.
 
Rosh:
Obrigado pela mensagem, vamos resolvê-la.

A mesma história com 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;
        }
     }
  }
 

Como faria para que, quando uma condição ocorre, a música comece? Heh-heh, é uma aplicação um pouco estranha de mql)) Mas ver a imagem à espera do momento certo é aborrecido, e deixar completamente todo o trabalho para o robô, de alguma forma, não é tão sensato. Por isso decidi deixar a música tocar quando a quero, e depois faço-o eu próprio))

Procurei no livro de referência, ou talvez estivesse a procurar demasiado ou algo assim, mas não o consegui encontrar).

 
Confira a função PlaySound()
 
Rosh:
Confira a função PlaySound()

Muito obrigado).
 

Pergunta sobre o rastreio de pedidos.

A descrição da função OrderSend() diz que "Ao colocar uma ordem de mercado, a conclusão bem sucedida do método OrderSend() nem sempre significa uma transacção bem sucedida. Tem de verificar os ... o valor do retcode". Isto é, pode deduzir-se que se OrderSend()==verdadeiro, ainda podemos obter um requote. Ok.

Mas o exemplo ("Envio de um pedido comercial com tratamento de resultados") na secção"Estrutura do resultado do pedido comercial" verifica a mensagem sobre um pedido apenas se OrderSend() ==false.

Então, em que casos é que verificamos a existência de pedidos: a qualquer valor devolvido por OrderSend(), ou apenas se OrderSend() ==falso?

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

Pergunta sobre o rastreio de pedidos.

A descrição da função OrderSend( ) diz que "ao colocar uma ordem de mercado, a conclusão bem sucedida do método OrderSend() nem sempre significa uma transacção bem sucedida.

A execução bem sucedida da OrderSend() significa apenas que o pedido é verificado quanto à sua correcção e colocado na fila de espera para execução. Mas o seu futuro destino não está garantido - a encomenda pode ser cancelada durante o seu processamento, por exemplo, devido a uma política de enchimento.

Mas em geral, se houve um pedido, a OrderSend() falhou claramente.

 
Rosh:

A execução bem sucedida da OrderSend() significa apenas que o pedido foi verificado quanto à sua correcção e colocado em fila de espera para execução. Mas o seu futuro destino não está garantido - a encomenda pode ser cancelada durante o seu processamento, por exemplo, devido à política de preenchimento.

Mas em geral, se houve um pedido, a OrderSend() falhou claramente.

Por outras palavras, um requote significa que o pedido não passou inicialmente o controlo de exactidão?
 
Yedelkin:
Por outras palavras, um requote significa que o pedido não passou inicialmente o controlo de exactidão?

Bem, sim, o preço indicado no pedido não cabia e é-lhe pedido que tenha em conta os novos preços que podem ser obtidos a partir da estrutura de resposta do servidor MqlTradeResult:

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

 
Rosh:

Bem sim, o preço indicado no pedido não correspondeu e é-lhe pedido que tenha em conta os novos preços, que podem ser obtidos a partir da estrutura de resposta do servidor MqlTradeResult:

OK!

Provavelmente, estou a exagerar, mas aqui vai outra questão. Antes de enviar um pedido para colocar uma ordem de mercado (para abrir uma posição), reajusto o bilhete de troca para zero, ou seja, faço result.deal=0. Podemos esperar que o servidor devolva um ticket de troca nulo na estrutura de resposta MqlTradeResult, mas um pouco mais tarde, a troca será executada e a posição será aberta? Ou será que a devolução de um bilhete de troca nulo pelo servidor garante que a posição não poderia ser aberta e que não será mais aberta com base neste pedido?

Razão: