Скачать MetaTrader 5

Как найти идентификатор запроса?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Mikhail Filimonov
5931
Mikhail Filimonov 2014.08.07 00:11 

Добрый день!

Из справки (MQ):

Структура результата торгового запроса (MqlTradeResult)

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

Отсылая асинхронный ордер я получаю идентификатор запроса ( request_id ). 

 

if ( OrderSendAsync( request, result ) )
{
  if ( result.retcode == TRADE_RETCODE_PLACED ) 
  {
    order_id = result.request_id;
  }
}

 

Где искать request_id, если что-то случилось с OnTradeTransaction ( в истории этого идентификатора нет  )?

Может быть разработчики введут скоро функцию:

bool  HistoryOrderSelectById(
   uint  request_id      // Идентификатор запроса
   );
Eugeniy Lugovoy
1991
Eugeniy Lugovoy 2014.08.07 08:08  
Mikalas:

Добрый день!

Из справки (MQ):

Структура результата торгового запроса (MqlTradeResult)

Отсылая асинхронный ордер я получаю идентификатор запроса ( request_id ). 

 

 

Где искать request_id, если что-то случилось с OnTradeTransaction ( в истории этого идентификатора нет  )?

Может быть разработчики введут скоро функцию:

А, собственно зачем request_id ? Берите тикет ордера и по нему штатно выбирайте ордер...

Sergey Gridnev
5011
Sergey Gridnev 2014.08.07 08:47  
elugovoy:

А, собственно зачем request_id ? Берите тикет ордера и по нему штатно выбирайте ордер...

Он не знает тикет ордера. Он отправляет асинхронные запросы и желает знать как они обработаны, а событие OnTradeTransaction не гарантировано.

Yury Kulikov
30832
Yury Kulikov 2014.08.07 09:48  
Можно организовать свой id используя magic.
Mikhail Filimonov
5931
Mikhail Filimonov 2014.08.07 13:26  
Yurich:
Можно организовать свой id используя magic.

Хорошая идея, НО.

А если не один ордер, а несколько, то как различить?

Yury Kulikov
30832
Yury Kulikov 2014.08.07 14:29  
Mikalas:

Хорошая идея, НО.

А если не один ордер, а несколько, то как различить?

Каждому ордеру свой magic, каждому эксперту свой диапазон magic, если эксперты работают на одном инструменте.
Mikhail Filimonov
5931
Mikhail Filimonov 2014.08.07 15:07  

Yourich!

Прикольно!

У меня работает 50 экспертов, в день 2000 транзакций.

Советники не будут "вылезать" из истории :) 

Ведь нет функции HistoryOrderSelectByMagic()

А разработчикам создать новую функцию не очень сложно и даже очень нужно! 

bool  HistoryOrderSelectById(
   uint  request_id      // Идентификатор запроса
   );
Dennis Kirichenko
11375
Dennis Kirichenko 2014.08.07 15:28  
Mikalas:

Ведь нет функции HistoryOrderSelectByMagic()

А разработчикам создать новую функцию не очень сложно и даже очень нужно! 

Mikalas, поддержу тут разрабов... Если брать возможности Стандартной библиотеки...

Стандартная библиотека на то и стандартная, чтобы включать общие классы и объекты... и это не куча всего и вся...

Имхо, для такой частной задачи нужно создавать свой класс-потомок (от CHistoryOrderInfo) с методом HistoryOrderSelectById().

То же касается и обычной функции HistoryOrderSelect()...

Mikhail Filimonov
5931
Mikhail Filimonov 2014.08.07 15:31  

denkir!

Зачем тогда   OrderSendAsync, если потом его (ордер) нельзя найти стандартными средствами?  

Dennis Kirichenko
11375
Dennis Kirichenko 2014.08.07 15:48  
Mikalas:

denkir!

Зачем тогда   OrderSendAsync, если потом его (ордер) нельзя найти?  

Это вопрос не ко мне :-)

Тут, насколько понял, коллеги пытаются подсказать, как можно выудить инфу о "своих" исторических ордерах, обитающих в истории ордеров и сделок... самый простой и надёжный метод - считывать комментарий ордера, куда можно зашить и id, и магик...

Mikhail Filimonov
5931
Mikhail Filimonov 2014.08.07 15:52  

denkir!

Нельзя "зашить" ID в комментарий, потому что ID возвращает терминал(result), а комментарий в request! 

12345
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий