Библиотеки: MT4Orders - страница 43

 
На MT4 писал Алерт этой ситуации. Нужно было проверить, как дорого встанет такая проверка, поэтому написал жесткий вариант для замера.
#include <MT4Orders.mqh>
#include <Debug.mqh>

// Получаем все тикеты из истории.
void GetTickets( TICKET_TYPE &Tickets[] )
{
  for (int i = ArrayResize(Tickets, OrdersHistoryTotal()) - 1; i >= 0; i--)
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
      Tickets[i] = OrderTicket();
}

// Выбираем все тикеты из истории.
int CheckTickets( const TICKET_TYPE &Tickets[] )
{
  int Count = 0;
  
  for (int i = ArraySize(Tickets) - 1; i >= 0; i--)
    if (OrderSelect(Tickets[i], SELECT_BY_TICKET))
      Count++;
      
  return(Count);
}

void OnStart()
{
  TICKET_TYPE Tickets[];
  
  GetTickets(Tickets); // Получили тикеты.
  
  ArraySort(Tickets);
  
  BENCH(CheckTickets(Tickets)); // Проверили тикеты.
  
  _P2(CheckTickets(Tickets));
}


На MT4 такой результат.

Time[CheckTickets(Tickets)] = 9667
CheckTickets(Tickets) = 20240

20К тикетов за 10 мс.


На MT5.

Time[CheckTickets(Tickets)] = 5262
CheckTickets(Tickets) = 833

5К MT4-тикетов за 0.8 мс.


Time[CheckTickets(Tickets)] = 700707
СheckTickets(Tickets) = 170458

170К MT4-тикетов за 700 мс.


MT5 работает шустрее MT4 с относительно небольшой историей торгов. При большой истории (сотни тысяч записей) MT5 сильно тормозит. 

 

Интересный случай MT5.

Тейк исполнился частично, после чего был удален. В этом случае имеем ситуацию, что DEAL_ORDER имеет статус ORDER_STATE_CANCELED, а не FILLED/PARTIAL.

При этом еще DEAL_TIME_MSC не равен ORDER_TIME_DONE_MSC.

 
fxsaber:

При этом еще DEAL_TIME_MSC не равен ORDER_TIME_DONE_MSC.

При частичном исполнении лимитников такое случается.


 

Реджект тейка.

Такая ситуация может возникать часто:

  1. Цена дошла до тейка открытой позиции.
  2. MT5 сформировал маркет-ордер. На провайдера ликвидности ушел соответствующий лимитный ордер.
  3. Лимитный ордер зареджектился. Тогда MT5-ордер, что соответствует тейку, удаляется.
  4. Переход на п.1.
Хорошая реализация, т.к. в истории можно видеть отлупы провайдеров. Ну и насильная внутренняя реализация тейков, как лимитников.
 
fxsaber:
  1. Цена дошла до тейка открытой позиции.
  2. MT5 сформировал маркет-ордер. На провайдера ликвидности ушел соответствующий лимитный ордер.
  3. Лимитный ордер зареджектился. Тогда MT5-ордер, что соответствует тейку, удаляется.
  4. Переход на п.1.
Хорошая реализация, т.к. в истории можно видеть отлупы провайдеров. Ну и насильная внутренняя реализация тейков, как лимитников.

Где же тут лимитники?

Чем эта реализация лучше, чем отправка тейка в виде лимитника сразу в момент его установки? Выбором ЛП с лучшей ценой?

 
Andrey Khatimlianskii:

Где же тут лимитники?

MT5 всегда тейки показывает в виде маркетов.

Чем эта реализация лучше, чем отправка тейка в виде лимитника сразу в момент его установки? Выбором ЛП с лучшей ценой?

Да, потому что не биржа, а агрегация.

 
fxsaber:

MT5 всегда тейки показывает в виде маркетов.

Кому показывает?

Неужели нет серверного плагина для вывода ТП в виде лимиток?


fxsaber:

Да, потому что не биржа, а агрегация.

Я бы проверил это утверждение.

Вход же не становится выгоднее маркетом, оттого что это агрегация?

 
Andrey Khatimlianskii:

Кому показывает?

Клиенту.

Неужели нет серверного плагина для вывода ТП в виде лимиток?

Сторонние.

Я бы проверил это утверждение.

Вход же не становится выгоднее маркетом, оттого что это агрегация?

Так лимитник шлется с очень короткой экспирацией.

 
fxsaber:

Каждую фразу приходится додумывать.


Я спрашивал, где реализация тейков, как лимиток, если выше по тексту — "Цена дошла до тейка открытой позиции. MT5 сформировал маркет-ордер".

В ответ получил:

fxsaber:

MT5 всегда тейки показывает [клиенту] в виде маркетов.

Как это сопоставить?


fxsaber:

Сторонние.

И что? Почему не подключить?


fxsaber:

Так лимитник шлется с очень короткой экспирацией.

Какое это имеет отношение к моему вопросу?

Чем вход отличается от выхода? Почему для выхода выгоднее маркет, а для входа - лимит?

 
Andrey Khatimlianskii:

Каждую фразу приходится додумывать.

Издержки формата общения, к сожалению.


MT5 всегда тейки показыает в виде маркетов. Маркеты они или лимитники на самом деле - зависит от сторонних реализаций шлюзов. В данном случае эти маркеты шлются, как лимитники.

MT5 выступает только в качестве БД.

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