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

 

И еще один:

2020.02.27 14:59:50.616 ExecutionSpeed (EURUSD,H1)      0 - 1532297: 00:00:14.989
2020.02.27 14:59:50.616 ExecutionSpeed (EURUSD,H1)      1 - 1528006: 00:00:04.983
2020.02.27 14:59:50.616 ExecutionSpeed (EURUSD,H1)      2 - 1527412: 00:00:03.543
2020.02.27 14:59:50.616 ExecutionSpeed (EURUSD,H1)      3 - 1528097: 00:00:01.812
2020.02.27 14:59:50.616 ExecutionSpeed (EURUSD,H1)      4 - 1478424: 00:00:01.502
2020.02.27 14:59:50.616 ExecutionSpeed (EURUSD,H1)      5 - 1478368: 00:00:01.502
2020.02.27 14:59:50.616 ExecutionSpeed (EURUSD,H1)      6 - 1478410: 00:00:01.502
2020.02.27 14:59:50.616 ExecutionSpeed (EURUSD,H1)      7 - 1478344: 00:00:01.501
2020.02.27 14:59:50.616 ExecutionSpeed (EURUSD,H1)      8 - 1733682: 00:00:01.480
2020.02.27 14:59:50.616 ExecutionSpeed (EURUSD,H1)      9 - 737378: 00:00:00.346
 
Andrey Khatimlianskii:

Вот такой есть реал:

Спасибо за информацию. Такое длительное исполнение, наверное, связано со сторонними шлюзами. Интересно, как на биржах.

 
На 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:

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

Клиенту.

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

Сторонние.

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

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

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