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

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


//+------------------------------------------------------------------+
//|                                                      OnBookE.mq5 |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
#property version   "1.00"
//---
MqlBookInfo priceArray[];
bool boMBA=true;
bool getBook;
//---
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   boMBA=MarketBookAdd(_Symbol);
   Print("boMBA_ ",boMBA);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

  }
//+------------------------------------------------------------------+
//| BookEvent function                                               |
//+------------------------------------------------------------------+
void OnBookEvent(const string &symbol)
  {
//---
   getBook=MarketBookGet(_Symbol,priceArray);
   Print("getBook_", getBook);
  }
//+------------------------------------------------------------------+

2020.11.13 19:55:05.277 OnBookE (EURUSD.gl,M1) boMBA_ false

И при этом стакан по этому символу есть и успешно работает. Т.е. выходит нет события  BookEvent.

Вопрос разрешился, для форекса стакан показывается, но события нет, для фьючей и акций - работает.

 

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

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

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

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

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

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

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

Код pyhton:

import MetaTrader5 as mt5

ANALYSIS_DAYS = 100
ANALYSIS_MINUTES = 500

mt5.initialize()
all_symbols = mt5.symbols_get()

for cur_symbol in all_symbols:

    rates_d1 = mt5.copy_rates_from_pos(cur_symbol.name, mt5.TIMEFRAME_D1, 1, ANALYSIS_DAYS)
    rates_m1 = mt5.copy_rates_from_pos(cur_symbol.name, mt5.TIMEFRAME_M1, 1, ANALYSIS_MINUTES)

mt5.shutdown()

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

 
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...