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

 
Dmi3:

Я трейдер, что вижу в своих терминалах невооруженным глазом, о том и пою. Моделирует пусть fxsaber или парни из MQ, у них побольше знаний и навыков для такой работы.

Теоретически конечно могу поставить какого-нибудь советника с домашнего ноутбука и посмотреть на его поведение.

Просто подумал, что проблема может быть на стороне сервера, если история глубокая запрашивается.

 
Aleksey Vyazmikin:

Просто подумал, что проблема может быть на стороне сервера, если история глубокая запрашивается.

История во всех советниках запрашивается за последние 120 секунд. Ордеров в день более 10000.

 
Dmi3:

История во всех советниках запрашивается за последние 120 секунд. Ордеров в день более 10000.

Тогда по идеи всё должно быть в памяти.

 

Нужно торговать около сотни независимых торговых логик. При этом торговых символов больше десятка.

Из-за лагов невозможно все это запихать в один асинхронный советник. Приходится создавать несколько советников и запускать их параллельно.

 
fxsaber:

Нужно торговать около сотни независимых торговых логик. При этом торговых символов больше десятка.

Из-за лагов невозможно все это запихать в один асинхронный советник. Приходится создавать несколько советников и запускать их параллельно.

А потом оказывается, что в один терминал более 100 советников не запихать и приходится запускать несколько параллельных терминалов. А потом....

 
Dmi3:

А потом оказывается, что в один терминал более 100 советников не запихать и приходится запускать несколько параллельных терминалов. А потом....

Как только лаги уберут, можно будет запихать в один советник. Это сильно разгрузит VPS.

 
В OnTick запрашиваю историю тиков с предыдущего тика.
2020.08.17 21:26:45.729 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:26:47.848 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:26:47.848 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:26:49.959 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:26:53.135 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:26:54.199 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 6 ms.
2020.08.17 21:26:54.199 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:26:54.199 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:26:54.199 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:27:00.525 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:27:08.956 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:27:13.173 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:27:27.931 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:27:30.048 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:27:30.048 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:27:42.669 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:27:43.726 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.

Очень стабильный результат.

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Библиотеки: MT4Orders

fxsaber, 2020.08.18 08:49

Подобный результат можно видеть при выводе лагов > 30 ms.

2020.08.18 05:12:20.760 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 45 ms.
2020.08.18 06:08:07.116 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 38 ms.
2020.08.18 06:44:57.080 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 59 ms.
2020.08.18 07:01:37.171 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 33 ms.
2020.08.18 07:04:19.996 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 34 ms.
2020.08.18 07:04:55.020 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 43 ms.
2020.08.18 07:30:07.414 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 37 ms.
2020.08.18 07:38:31.913 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 40 ms.
2020.08.18 07:44:08.415 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 36 ms.
2020.08.18 07:45:22.918 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 38 ms.
2020.08.18 08:00:37.016 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 40 ms.
2020.08.18 08:01:36.007 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 33 ms.
2020.08.18 08:08:26.948 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 34 ms.
2020.08.18 08:18:41.664 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 33 ms.
2020.08.18 08:48:51.114 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 32 ms.
2020.08.18 09:12:33.762 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 49 ms.
2020.08.18 09:28:42.364 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 47 ms.
2020.08.18 09:28:42.364 Alert: Time[MT4Orders.mqh 1808: ::PositionSelectByTicket(Ticket)] = 38 ms.
2020.08.18 09:30:30.665 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 40 ms.
2020.08.18 09:33:50.114 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 44 ms.
2020.08.18 09:38:41.204 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 77 ms.

Без истории торгов приличные лаги.

 
Еще на придумал, как такое мониторить.
2020.08.18 11:14:05.072 MarketWatchTick:  time = 2020.08.18 11:14:00.674
2020.08.18 11:14:05.195 MarketWatchTick:  time = 2020.08.18 11:14:05.929

Слева локальное время, справа - время последней котировки символа.

Видно, что между распечатками (делаются в OnTick) двух строк прошло 100 мс. При этом время символа изменилось на пять секунд!


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


Заметил случайно, обратив внимание, что очень много тиков пришло между соседними OnTick-вызовами.

 

Прошу разработчиков рекомендовать свою последовательность действий по проверке готовности компьютера к HFT.

Для того же ЛЧИ нужно готовить соответствующую машину. Наверное, будет правильно иметь официальные рекомендации (прохождение каких-то тестов) по этому поводу.

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