MT5 и скорость в боевом исполнении - страница 92

 
fxsaber:

Мониторьте расхождение между TimeLocal и TimeCurrent.

И если TimeLocal() будет в таких ситуациях отставать, причина в операционной системе?
 
Vasiliy Pushkaryov:
И если TimeLocal() будет в таких ситуациях отставать, причина в операционной системе?

TimeLocal не отстает. Расхождения - брокер.

 
Vasiliy Pushkaryov:

Может кто-то сталкивался, в чем может быть причина таких зависаний или торможений?

Первое что приходит на ум - баг в коде из-за которого запускается расчет который длится очень долго по времени (например в цикле от 1 до 10 из-за бага перебирается весь int)

 
fxsaber:

TimeLocal не отстает. Расхождения - брокер.

Спасибо. Попробую.
 
Andrei Trukhanovich:

Первое что приходит на ум - баг в коде из-за которого запускается расчет который длится очень долго по времени (например в цикле от 1 до 10 из-за бага перебирается весь int)

Вроде, в справке, написано, что зацикленный эксперт не может нарушить работу других программ. А тут все замирает, потом все снова начинает работать.

Параллельно работает 7 терминалов МТ4 и три терминала МТ5. Может мощностей не хватает ?



 
Vasiliy Pushkaryov:

Вроде, в справке, написано, что зацикленный эксперт не может нарушить работу других программ. А тут все замирает, потом все снова начинает работать.

Да, странно, я увидел только вкладку экспертов, логи не увидел в первый раз.

Параллельно работает 7 терминалов МТ4 и три терминала МТ5. Может мощностей не хватает ?

Если так, то скорее всего тормозили бы все терминалы. Ну и плюс загрузка проца должна просто шкалить на 100% в этом случае

 

Множество TerminalA - терминалы, которые имеют данные о пинге (xxx ms) до access points.

Множество TerminalB - терминалы, которые не имеют данных о пинге (n/a) до access points.


Терминалы из обоих множеств могут быть подключены при этом к одной и той же Access Point и одинаково торговать - OrderSend отправляются и принимаются ответы.


TerminalA минимально грузит процессор.


TerminalB:

  • максимально грузит CPU.
  • после перезагрузки остается быть TerminalB.
  • После "Пересканировать сеть" (вручную через GUI) меняет тип на TerminalA. Соответственно, перестает грузить CPU.


Если столкнулись с необъяснимо высокой загрузкой CPU, попробуйте сделать перескан. Мне это помогло все TerminalB сделать TerminalA.

 

Не знаю причин, но, похоже, у моего брокера торговый оборот, количество сделок и количество активных торговых счетов на MT5 больше, чем на MT4.

К сожалению, есть только суммарная информация по платформам.

Количество закрытых позиций :129 714
Торговый оборот ($) :$ 5 747 296 372
Активных счетов :498

Но косвенные признаки дают повод говорить об опережении MT5 над MT4. Причины такого положения дел - только гадать.


Что знаю про клиентов:

  • >95% сделок (~99% оборота) - автоторговля.
  • У некоторых клиентов MT5-терминал выжирает > 10 гигов памяти (исторические кеши), MT4 при той же торовле < 1 гига. Но несмотря на это, готовы переплачивать за более мощный VPS, но торговать именно на MT5, а не на четверке.
  • Почти все скальперы. Основной профит приходится на вечерне-ночную флетовую торговлю.
  • Зашкаливающая (если сравнивать с другими брокерами) активность (в плюс) в период ролловера - огромных спредов.
 
fxsaber #:

Мониторьте расхождение между TimeLocal и TimeCurrent.

Спасибо за подсказку. Поймали такую ситуацию. В OnTimer() отслеживал расхождение между TimeLocal() и TimeCurrent()


Со вчерашнего вечера в 21:58 TimeCurrent() стал возвращать одно и то же время. Отпустило сегодня в 00:08. Т.е. чуть более двух часов была такая ситуация со всех символов.

 

Не удаленной машине (не VPS) с хорошими характеристиками и пингом до торгового сервера <4 мс увидел много случаев регулярных тормозов при просмотре логов Терминалов (b2958).


Взял первый попавшийся для демонстрации здесь.

2022.01.18 23:00:09.375  Trades  '': modify order #7133346 sell limit 0.23 USDCHF at 0.91744 sl: 0.00000 tp: 0.91709 -> 0.91741, sl: 0.00000 tp: 0.91709
2022.01.18 23:00:17.752  Trades  '': accepted modify order #7133346 sell limit 0.23 USDCHF at 0.91741 sl: 0.00000 tp: 0.91709 -> 0.91741, sl: 0.00000 tp: 0.91709
2022.01.18 23:00:17.769  Trades  '': modify #7133346 sell limit 0.23 USDCHF -> price: 0.91741, sl: 0.00000, tp: 0.91709) done in 8393.712 ms


Модификация лимитника длилась восемь секунд. Большинство же модификаций происходит за такое примерно время.

2022.01.18 23:11:00.751 Trades  '': modify #7133346 sell 0.23 USDCHF sl: 0.00000, tp: 0.91711 -> sl: 0.00000, tp: 0.91712
2022.01.18 23:11:00.761 Trades  '': accepted modify #7133346 sell 0.23 USDCHF sl: 0.00000, tp: 0.91711 -> sl: 0.00000, tp: 0.91712
2022.01.18 23:11:00.763 Trades  '': modify #7133346 sell 0.23 USDCHF -> sl: 0.00000, tp: 0.91712 done in 12.422 ms


Даже для пинга 4 мс это многовато, но все же ни в какое сравнение не идет с восемью секундами.


На машине работают только MT5-терминалы и средняя нагрузка на CPU ~1%. Анализ показал, что во время тормозов нагрузка вплесками доходит до 100% при сильной активности рынка и торговых приказов. Как итог, ответ от торгового сервера до терминала длится ОЧЕНЬ долго. По случаям тормозов запрашивал у брокера информацию. На стороне торгового сервера все мгновенно и приказ доходит от терминала до сервера по первой строке modify. Т.е. отправка приказа не тормозит, лаги случаются при получении ответа в терминал.


Сомневаюсь, что разработчики смогут здесь что-то улучшить. Кто ОЧЕНЬ активно торгует, поделитесь наблюдениями этой темы по своим логам.