ФОРТС. Вопросы по исполнению - страница 173

 
Dmitriy Skub #:
Была такая мысль, но задержки возникали и на с умеренно-низкой активности. ИМХО, там что-то программное - какая-то недоработка в логике, напри

Я не знаю каким образом распределяли юзеров по 6 серверам, возможно, что распределителя нет вовсе и, тогда

все торгующие оказывались на 1 сервере - тогда, даже при спокойном рынке - беда!

 
Забыл сказать. в Финаме всего 2 сервера :(
 
prostotrader #:

Я не знаю каким образом распределяли юзеров по 6 серверам, возможно, что распределителя нет вовсе и, тогда

все торгующие оказывались на 1 сервере - тогда, даже при спокойном рынке - беда!

Изменение сервера не спасало в таких ситуациях. Все накрывалось синхронно. Дело темное.

 

Ребят, вот тут

https://www.mql5.com/ru/forum/452461/page41#comment_50169200

никак не могут люди поверить, что цена (аск и бид) вполне могут изменяться без изменения ласт. кому не сильно лень объясните там плиз.

Противоречие - путь к достижению истины.
Противоречие - путь к достижению истины.
  • 2023.10.26
  • www.mql5.com
Мнимое доказательство истины одной стороной не является доказательством для другой...
 

Есть гипотеза, что если сделать одновременную асинхронную модификацию нескольких лимитников, то время исполнения приказа в Журнале будет расти.

Могли бы проверить на ФОРТС?


Воспроизвел на FOREX с биржевым исполнением (ECN).

#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

void OnStart()
{
  ulong Tickets[];
  
  // Выставили лимитники (далеко) синхронно.
  for (uint i = ArrayResize(Tickets, 5); (bool)i--;)
    Tickets[i] = OrderSend(_Symbol, OP_BUYLIMIT, 0.1, SymbolInfoDouble(_Symbol, SYMBOL_ASK) - 1e4 * _Point, 0, 0, 0);

  // Модифицируем лимитники асинхронно.
  for (uint i = ArraySize(Tickets); (bool)i--;)
    if (OrderSelect(Tickets[i], SELECT_BY_TICKET))
//      OrderModify(Tickets[i], OrderOpenPrice() - _Point, OrderStopLoss(), OrderTakeProfit(), OrderExpiration());    
      OrderModifyAsync(Tickets[i], OrderOpenPrice() - _Point, OrderStopLoss(), OrderTakeProfit(), OrderExpiration());    
      
  // Сразу удалять лимитники нельзя - идет модификация, ждем.
  Sleep(1000);
    
  // Удаляем асинхронно.
  for (uint i = ArraySize(Tickets); (bool)i--;)
    OrderDeleteAsync(Tickets[i]);    
}


Результат (пинг 40 мс).

// Выставили лимитники (далеко) синхронно.
2024.04.03 08:06:18.314 : buy limit 0.1 EURUSD.ex at 0.97759
2024.04.03 08:06:18.356 : accepted buy limit 0.1 EURUSD.ex at 0.97759
2024.04.03 08:06:18.356 : buy limit 0.1 EURUSD.ex at 0.97759 placed for execution
2024.04.03 08:06:18.383 : order #47962514 buy limit 0.1 / 0.1 EURUSD.ex at 0.97759 done in 68.536 ms
2024.04.03 08:06:18.383 : buy limit 0.1 EURUSD.ex at 0.97760
2024.04.03 08:06:18.424 : accepted buy limit 0.1 EURUSD.ex at 0.97760
2024.04.03 08:06:18.425 : buy limit 0.1 EURUSD.ex at 0.97760 placed for execution
2024.04.03 08:06:18.451 : order #47962515 buy limit 0.1 / 0.1 EURUSD.ex at 0.97760 done in 68.456 ms
2024.04.03 08:06:18.452 : buy limit 0.1 EURUSD.ex at 0.97760
2024.04.03 08:06:18.492 : accepted buy limit 0.1 EURUSD.ex at 0.97760
2024.04.03 08:06:18.493 : buy limit 0.1 EURUSD.ex at 0.97760 placed for execution
2024.04.03 08:06:18.520 : order #47962516 buy limit 0.1 / 0.1 EURUSD.ex at 0.97760 done in 68.536 ms
2024.04.03 08:06:18.520 : buy limit 0.1 EURUSD.ex at 0.97760
2024.04.03 08:06:18.562 : accepted buy limit 0.1 EURUSD.ex at 0.97760
2024.04.03 08:06:18.562 : buy limit 0.1 EURUSD.ex at 0.97760 placed for execution
2024.04.03 08:06:18.588 : order #47962517 buy limit 0.1 / 0.1 EURUSD.ex at 0.97760 done in 68.286 ms
2024.04.03 08:06:18.589 : buy limit 0.1 EURUSD.ex at 0.97760
2024.04.03 08:06:18.630 : accepted buy limit 0.1 EURUSD.ex at 0.97760
2024.04.03 08:06:18.631 : buy limit 0.1 EURUSD.ex at 0.97760 placed for execution
2024.04.03 08:06:18.657 : order #47962518 buy limit 0.1 / 0.1 EURUSD.ex at 0.97760 done in 68.268 ms

// Модифицируем лимитники асинхронно.
2024.04.03 08:06:18.657 : modify order #47962514 buy limit 0.1 EURUSD.ex at 0.97759 sl: 0.00000 tp: 0.00000 -> 0.97758, sl: 0.00000 tp: 0.00000
2024.04.03 08:06:18.658 : modify order #47962515 buy limit 0.1 EURUSD.ex at 0.97760 sl: 0.00000 tp: 0.00000 -> 0.97759, sl: 0.00000 tp: 0.00000
2024.04.03 08:06:18.658 : modify order #47962516 buy limit 0.1 EURUSD.ex at 0.97760 sl: 0.00000 tp: 0.00000 -> 0.97759, sl: 0.00000 tp: 0.00000
2024.04.03 08:06:18.658 : modify order #47962517 buy limit 0.1 EURUSD.ex at 0.97760 sl: 0.00000 tp: 0.00000 -> 0.97759, sl: 0.00000 tp: 0.00000
2024.04.03 08:06:18.658 : modify order #47962518 buy limit 0.1 EURUSD.ex at 0.97760 sl: 0.00000 tp: 0.00000 -> 0.97759, sl: 0.00000 tp: 0.00000
2024.04.03 08:06:18.697 : accepted modify order #47962514 buy limit 0.1 EURUSD.ex at 0.97759 sl: 0.00000 tp: 0.00000 -> 0.97758, sl: 0.00000 tp: 0.00000
2024.04.03 08:06:18.698 : accepted modify order #47962515 buy limit 0.1 EURUSD.ex at 0.97760 sl: 0.00000 tp: 0.00000 -> 0.97759, sl: 0.00000 tp: 0.00000
2024.04.03 08:06:18.698 : accepted modify order #47962516 buy limit 0.1 EURUSD.ex at 0.97760 sl: 0.00000 tp: 0.00000 -> 0.97759, sl: 0.00000 tp: 0.00000
2024.04.03 08:06:18.699 : accepted modify order #47962517 buy limit 0.1 EURUSD.ex at 0.97760 sl: 0.00000 tp: 0.00000 -> 0.97759, sl: 0.00000 tp: 0.00000
2024.04.03 08:06:18.699 : accepted modify order #47962518 buy limit 0.1 EURUSD.ex at 0.97760 sl: 0.00000 tp: 0.00000 -> 0.97759, sl: 0.00000 tp: 0.00000
2024.04.03 08:06:18.726 : modify #47962514 buy limit 0.1 EURUSD.ex -> price: 0.97758, sl: 0.00000, tp: 0.00000 done in 68.836 ms
2024.04.03 08:06:18.751 : modify #47962515 buy limit 0.1 EURUSD.ex -> price: 0.97759, sl: 0.00000, tp: 0.00000 done in 93.438 ms
2024.04.03 08:06:18.824 : modify #47962516 buy limit 0.1 EURUSD.ex -> price: 0.97759, sl: 0.00000, tp: 0.00000 done in 166.921 ms
2024.04.03 08:06:18.825 : modify #47962517 buy limit 0.1 EURUSD.ex -> price: 0.97759, sl: 0.00000, tp: 0.00000 done in 167.316 ms
2024.04.03 08:06:18.826 : modify #47962518 buy limit 0.1 EURUSD.ex -> price: 0.97759, sl: 0.00000, tp: 0.00000 done in 168.118 ms

Отлично виден рост длительности модификации лимитника. Это значит, что если выставление (модификация) лимитников идет скопом (как это просиходит на МО от разных клиентов), получаются огромные задержки. Похоже, в этом причина лагов в MT5. При этом на самой бирже все происходит мгновенно.


ЗЫ Для сравнения результат на FOREX не с биржевым исполнением (STP) с тем же пингом.

// Выставили лимитники (далеко) синхронно.
2024.04.03 08:24:05.742 : buy limit 0.1 EURUSD at 0.97771
2024.04.03 08:24:05.784 : accepted buy limit 0.1 EURUSD at 0.97771
2024.04.03 08:24:05.785 : order #47962559 buy limit 0.1 / 0.1 EURUSD at 0.97771 done in 42.498 ms
2024.04.03 08:24:05.785 : buy limit 0.1 EURUSD at 0.97771
2024.04.03 08:24:05.826 : accepted buy limit 0.1 EURUSD at 0.97771
2024.04.03 08:24:05.827 : order #47962560 buy limit 0.1 / 0.1 EURUSD at 0.97771 done in 41.951 ms
2024.04.03 08:24:05.827 : buy limit 0.1 EURUSD at 0.97771
2024.04.03 08:24:05.868 : accepted buy limit 0.1 EURUSD at 0.97771
2024.04.03 08:24:05.869 : order #47962561 buy limit 0.1 / 0.1 EURUSD at 0.97771 done in 42.209 ms
2024.04.03 08:24:05.869 : buy limit 0.1 EURUSD at 0.97771
2024.04.03 08:24:05.910 : accepted buy limit 0.1 EURUSD at 0.97771
2024.04.03 08:24:05.910 : order #47962562 buy limit 0.1 / 0.1 EURUSD at 0.97771 done in 41.320 ms
2024.04.03 08:24:05.911 : buy limit 0.1 EURUSD at 0.97771
2024.04.03 08:24:05.952 : accepted buy limit 0.1 EURUSD at 0.97771
2024.04.03 08:24:05.953 : order #47962563 buy limit 0.1 / 0.1 EURUSD at 0.97771 done in 42.212 ms

// Модифицируем лимитники асинхронно.
2024.04.03 08:24:05.953 : modify order #47962559 buy limit 0.1 EURUSD at 0.97771 sl: 0.00000 tp: 0.00000 -> 0.97770, sl: 0.00000 tp: 0.00000
2024.04.03 08:24:05.953 : modify order #47962560 buy limit 0.1 EURUSD at 0.97771 sl: 0.00000 tp: 0.00000 -> 0.97770, sl: 0.00000 tp: 0.00000
2024.04.03 08:24:05.954 : modify order #47962561 buy limit 0.1 EURUSD at 0.97771 sl: 0.00000 tp: 0.00000 -> 0.97770, sl: 0.00000 tp: 0.00000
2024.04.03 08:24:05.954 : modify order #47962562 buy limit 0.1 EURUSD at 0.97771 sl: 0.00000 tp: 0.00000 -> 0.97770, sl: 0.00000 tp: 0.00000
2024.04.03 08:24:05.954 : modify order #47962563 buy limit 0.1 EURUSD at 0.97771 sl: 0.00000 tp: 0.00000 -> 0.97770, sl: 0.00000 tp: 0.00000
2024.04.03 08:24:05.994 : accepted modify order #47962559 buy limit 0.1 EURUSD at 0.97771 sl: 0.00000 tp: 0.00000 -> 0.97770, sl: 0.00000 tp: 0.00000
2024.04.03 08:24:05.994 : accepted modify order #47962560 buy limit 0.1 EURUSD at 0.97771 sl: 0.00000 tp: 0.00000 -> 0.97770, sl: 0.00000 tp: 0.00000
2024.04.03 08:24:05.995 : modify #47962559 buy limit 0.1 EURUSD -> price: 0.97770, sl: 0.00000, tp: 0.00000 done in 42.418 ms
2024.04.03 08:24:05.996 : accepted modify order #47962561 buy limit 0.1 EURUSD at 0.97771 sl: 0.00000 tp: 0.00000 -> 0.97770, sl: 0.00000 tp: 0.00000
2024.04.03 08:24:05.996 : modify #47962560 buy limit 0.1 EURUSD -> price: 0.97770, sl: 0.00000, tp: 0.00000 done in 42.992 ms
2024.04.03 08:24:05.997 : accepted modify order #47962562 buy limit 0.1 EURUSD at 0.97771 sl: 0.00000 tp: 0.00000 -> 0.97770, sl: 0.00000 tp: 0.00000
2024.04.03 08:24:05.998 : modify #47962561 buy limit 0.1 EURUSD -> price: 0.97770, sl: 0.00000, tp: 0.00000 done in 44.228 ms
2024.04.03 08:24:05.999 : accepted modify order #47962563 buy limit 0.1 EURUSD at 0.97771 sl: 0.00000 tp: 0.00000 -> 0.97770, sl: 0.00000 tp: 0.00000
2024.04.03 08:24:05.999 : modify #47962562 buy limit 0.1 EURUSD -> price: 0.97770, sl: 0.00000, tp: 0.00000 done in 45.031 ms
2024.04.03 08:24:06.000 : modify #47962563 buy limit 0.1 EURUSD -> price: 0.97770, sl: 0.00000, tp: 0.00000 done in 45.868 ms

Видно, что задержек исполнения нет. При этом accepted-транзакции с каким-то лагом. Также можно заметить, что выставление лимитников идет быстрее - отсутствуют еще одни MT5-тормоза биржевого исполнения.

 
МО это что?
 
Dmitriy Skub #:
МО это что?

ФОРТС. Не знаю, почему написал МО.

 
fxsaber #:

ФОРТС. Не знаю, почему написал МО.

На ФОРТС проверяется постоянно - не растет время модификации для асинхронных (не замечал такого).
 
Dmitriy Skub #:
На ФОРТС проверяется постоянно - не растет время модификации для асинхронных (не замечал такого).

Одновременно несколько асинхронных по одному символу?

 
fxsaber #:

Одновременно несколько асинхронных по одному символу?

Да.

Как время будет, запущу Ваш скрипт. Только там цену надо подкорректировать - слишком большое отклонение. Там есть ограничения.

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