Изучаем и пишем вместе на MQL5 - страница 34

 
Yedelkin:

Вот такой простенький скрипт выдаёт непонятный для меня результат

Может, кто-нибудь сможет объяснить, в чём причина? Когда число 254 приводишь явно к типу uchar, - работает, как задумано. 

Спасибо за сообщение, разберемся.
 
Rosh:
Спасибо за сообщение, разберемся.

Та же самая история и с 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;
        }
     }
  }
 

А как бы сделать так, чтобы по наступлении условия врубался музон? Хы-хы, немного странное применение mql)) Но следить за картинкой выжидая момент надоедает, а полностью возложить всю работу на робота чота как-то неполучаеццо толково. Вот и подумал - пусть бы когда надо врубался музон, а дальше я сам))

Посмотрел справку, толи плохо искал, толи еще что, - не нашел))

 
Посмотрите функцию PlaySound()
 
Rosh:
Посмотрите функцию PlaySound()

Бальшой пасиб)
 

Вопрос про отслеживание реквот.

В описании функции OrderSend() сказано, что "при выставлении рыночного ордера успешное окончание работы метода OrderSend() не всегда означает успешное совершение сделки. Необходимо проверять ... значение retcode". Т.е. напрашивается вывод, что при OrderSend()==true всё равно можно получить реквоту. Хорошо.

Но в примере ("Отправка торгового запроса с обработкой результата") к разделу "Структура результата торгового запроса" сообщение о реквоте проверяется только если OrderSend() ==false.

Так в каких случаях отслеживать реквоты: при любом возвращаемом функцией OrderSend()  значении, или же только если OrderSend() ==false?

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

Вопрос про отслеживание реквот.

В описании функции OrderSend() сказано, что "при выставлении рыночного ордера успешное окончание работы метода OrderSend() не всегда означает успешное совершение сделки.

Успешное выполнение OrderSend() означает только то, что запрос проверен на корректность и поставлен на выполнение в очередь. Но дальнейшая его судьба не гарантирована - ордер может отменен в процессе его обработки, например, по политике заполнения.

Но вообще, если была реквота, то OrderSend() однозначно завершилась неуспешно.

 
Rosh:

Успешное выполнение OrderSend() означает только то, что запрос проверен на корректность и поставлен на выполнение в очередь. Но дальнейшая его судьба не гарантирована - ордер может отменен в процессе его обработки, например, по политике заполнения.

Но вообще, если была реквота, то OrderSend() однозначно завершилась неуспешно.

Иными словами, реквота означает, что запрос изначально не смог пройти проверку на корректность?
 
Yedelkin:
Иными словами, реквота означает, что запрос изначально не смог пройти проверку на корректность?

Ну да, заявленная в запросе цена не подошла и вам предлагают принять во внимание новые цены, которые можно получить из структуры ответа сервера MqlTradeResult:

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

 
Rosh:

Ну да, заявленная в запросе цена не подошла и вам предлагают принять во внимание новые цены, которые можно получить из структуры ответа сервера MqlTradeResult:

ОК!

Возможно, перестраховываюсь, но ещё такой вопрос. Перед отправкой запроса на постановку рыночного ордера (с целью открытия позиции) обнуляю тикет сделки, т.е. делаю result.deal=0. Может ли произойти такая ситуация, что сервер в структуре ответа  MqlTradeResult вернёт нулевой тикет сделки, но при этом чуть позже сделка всё-таки совершится и позиция будет открыта? Или же возврат сервером нулевого тикета сделки гарантированно означает, что позицию не получилось открыть и она в дальнейшем не будет открыта на основании этого запроса?

Причина обращения: