Ошибки, баги, вопросы - страница 2904

 
suncrypto:

Здравствуйте!

Обращение к разработчикам.

Продолжаю тестировать связку Python - MT5. Выявился еще один интересный момент, возможно баг.
Суть.

Иногда выполняю операцию по отбору финансовых инструментов среди всех имеющихся в терминале (около 4000 тыс).
К терминалу подключаюсь из внешнего приложения, т.е. запуск скриптов осуществляется не внутри терминала.

По каждому из символов получаю дневные и минутные бары, затем через "pandas" провожу вычисления и первичный отбор инструментов.
Заметил, что после одной такой операции, сам терминал начинает постепенно нагружать процессор до 70-80%.
После отработки скрипта, загрузка процессора не падает (пробовал ждать минут 15), сам терминал сильно тормозит. Помогает только закрытие терминала.
Если запустить скрипт 2 раза не закрывая терминал, то скрипт отрабатывает без ошибок, но загрузка процессора так и остается на уровне 70-80%

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

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

Код pyhton:

С уважением, Александр

Никакой ошибки в поведении терминала нет. Вам нужно понимать, что для того чтобы работать с 1000 и  более символов - нужно мощное железо и много памяти. Также рекомендуется сильно ограничить количество баров на графике (в настройках терминала).

Как минимум i7 или i9 девятого, а лучше десятого поколения. Памяти как минимум 32 Гб.


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

 
Vladimir Karputov:

Никакой ошибки в поведении терминала нет. Вам нужно понимать, что для того чтобы работать с 1000 и  более символов - нужно мощное железо и много памяти. Также рекомендуется сильно ограничить количество баров на графике (в настройках терминала).

Как минимум i7 или i9 девятого, а лучше десятого поколения. Памяти как минимум 32 Гб.


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

Возможно ошибки нет, я не утверждаю, я обратил внимание на это поведение, как возможный баг, эта ветка вроде для этого предназначена, или я ошибаюсь?

Исходя из того, что Вы говорите, железо у меня более чем достаточное. Расход памяти, кстати, относительно небольшой для данной операции, около 3,5 Гб. С памятью все ок, и в целом все стабильно работает.

Сейчас в настройках количество баров специально уменьшил с 1млн до 1тыс. Проверил. Это никак не повлияло. Думаю это больше повлияет на то, если я в терминале открою несколько сотен вкладок.

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

И я разве утверждал, что запрос котировок это простая операция? Я написал совсем о другом. О том, что я упростил скрипт до примитивного, чтобы другие факторы не оказывали влияние и оставил "только запрос котировок".

Если Вы и вправду думаете, что для торговли необходимо понимание, что запрос котировок это непростая операция, то это совсем не так.

По поводу совета бросать торговлю и не подходить к компьютеру, опоздали. По первому пункту лет на 25 минимум, по второму лет на 10 минимум.

Если разработчики почитают нужным, то примут предоставленную информацию к сведению. Если нет, значит нет.

С уважением, Александр.

 
suncrypto:

Возможно ошибки нет, я не утверждаю, я обратил внимание на это поведение, как возможный баг, эта ветка вроде для этого предназначена, или я ошибаюсь?

Исходя из того, что Вы говорите, железо у меня более чем достаточное. Расход памяти, кстати, относительно небольшой для данной операции, около 3,5 Гб. С памятью все ок, и в целом все стабильно работает.

Сейчас в настройках количество баров специально уменьшил с 1млн до 1тыс. Проверил. Это никак не повлияло. Думаю это больше повлияет на то, если я в терминале открою несколько сотен вкладок.

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

И я разве утверждал, что запрос котировок это простая операция? Я написал совсем о другом. О том, что я упростил скрипт до примитивного, чтобы другие факторы не оказывали влияние и оставил "только запрос котировок".

Если Вы и вправду думаете, что для торговли необходимо понимание, что запрос котировок это непростая операция, то это совсем не так.

По поводу совета бросать торговлю и не подходить к компьютеру, опоздали. По первому пункту лет на 25 минимум, по второму лет на 10 минимум.

Если разработчики почитают нужным, то примут предоставленную информацию к сведению. Если нет, значит нет.

С уважением, Александр.

После уменьшения кол-ва баров Вы терминал перезагружали?

 
Vladimir Karputov:

После уменьшения кол-ва баров Вы терминал перезагружали?

Конечно.
 
Vladimir Karputov:

После уменьшения кол-ва баров Вы терминал перезагружали?

suncrypto:
Конечно.

Провел эксперимент.

В терминале открыл примерно 100 окон (больше терминал не открывает, ограничение).
Нагрузка на процессор незначительно выросла, до 8-10% и объем использованной памяти увеличился, что логично.
Затем закрыл терминал, открыл заново, нагрузка выросла до 70-80% и через примерно минуту нормализовалась и вернулась к 8-10%.

(В настройках поставил 1 млн баров.)


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

 
suncrypto:

Если это фича, то закрыть после такой операции терминал и заново открыть, вполне себе решение. Операция не частая.

Да, по идее терминал поддерживает кэш недавно запрошенных таймсерий.

Но он не должен делать это вечно, кажется 3 или 5 минут таймаут был.

 
suncrypto:


Обратите внимание что начиная с билда 2650:


1.Terminal: Добавлена настройка "Заранее загружать данные графиков по открытым позициям и ордерам".


Для экономии трафика торговая платформа загружает ценовую историю по инструментам только в момент ее фактического запроса, например, при открытии графика или при запуске тестирования. Однако для активно используемых инструментов это может быть не всегда удобно. Если включить новую опцию, то графики инструментов, по которым у вас есть открытые позиции или отложенные ордера, будут обновляться в фоновом режиме каждый раз при запуске платформы. Таким образом, при открытии графиков вам не придется ждать дозагрузки данных, они будут сразу доступны для анализа.

Новая версия платформы MetaTrader 5 build 2650: Фоновая загрузка графиков и улучшения в профилировщике MQL5-кода
Новая версия платформы MetaTrader 5 build 2650: Фоновая загрузка графиков и улучшения в профилировщике MQL5-кода
  • 2020.10.08
  • www.mql5.com
В пятницу 9 октября 2020 года будет выпущена обновленная версия платформы MetaTrader 5...
 
Andrey Khatimlianskii:

Да, по идее терминал поддерживает кэш недавно запрошенных таймсерий.

Но он не должен делать это вечно, кажется 3 или 5 минут таймаут был.

Да, в самом терминале все отлично. При закрытии "лишних" окон, снижается и нагрузка на процессор и потребление памяти.
Вопрос пока только о внешнем подключении из питона.
 
Vladimir Karputov:

Обратите внимание что начиная с билда 2650:


1.Terminal: Добавлена настройка "Заранее загружать данные графиков по открытым позициям и ордерам".


Для экономии трафика торговая платформа загружает ценовую историю по инструментам только в момент ее фактического запроса, например, при открытии графика или при запуске тестирования. Однако для активно используемых инструментов это может быть не всегда удобно. Если включить новую опцию, то графики инструментов, по которым у вас есть открытые позиции или отложенные ордера, будут обновляться в фоновом режиме каждый раз при запуске платформы. Таким образом, при открытии графиков вам не придется ждать дозагрузки данных, они будут сразу доступны для анализа.

По данному моменту есть оговорка: "графики инструментов, по которым у вас есть открытые позиции или отложенные ордера".
Плюс у меня уже все графики загружены в локальную БД, в момент работы скрипта, трафик мизерный.

Хоть это и не совсем корректно, но если провести аналогию с SQL сервером, к которому делаешь хоть 1 млн запросов на получение данных, то да, в моменте будет пиковая нагрузка на процессор, но по завершении операции нагрузка на процессор однозначно снизится.

Конечно, метатрейдер все же не sql сервер, это другая платформа, но почему то мне кажется, что после выполнения запросов к метатрейдеру на котировки и закрытия с ним соединения, все должно нормализоваться. Надеюсь разработчики метатрейдера пояснят.

 
mox_dimass:

Что за баг с ролловером в тестере? В файле приложил скрин с примером: открытая позиция Sell, закрывается по ролловеру через Buy, затем заново открывается через Sell, но с нулевым объемом.

В результате нет переоткрытия позиции, она исчезает. На скрине выделил. Я уже ранее писал об этом правда без картинок. Что это за баг?  Из-за этого нет возможности тестировать.

Интересно разработчики будут реагировать на этот глюк? Ведь ролловер генерится тестером а не моей прогой.

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