MetaTrader 5 Python User Group - как использовать Python в Метатрейдере - страница 80

 
Сергей Таболин:

Очередной вопрос от новичка.

Ситуация такая. Есть у меня индикатор. При добавлении его на график, в "холодном" режиме, он просчитывается секунд 7-8.

Теперь написал всё то же в питоне. Отличие в том, что питон пишет данные в файл .csv

Я понимаю, потери на соединение с МТ5, прочие накладные моменты.... Но, 8 секунд против 3-х часов..... ???????? КАК ???????????

А чего вы хотели от языка, который в сотни раз медленнее С++?

Все быстрое на Питоне написано в виде С++ модулей. Если нет подходящего быстрого модуля, то все будет бесконечно медленно.


copy_ticks_range, как и остальные методы извлечения данных в Python API написаны нами сверх эффективно и быстро на уровне отдачи этих данных в MQL5.
 
Renat Fatkhullin:

А чего вы хотели от языка, который в сотни раз медленнее С++?

Все быстрое на Питоне написано в виде С++ модулей. Если нет подходящего быстрого модуля, то все будет бесконечно медленно.


copy_ticks_range, как и остальные методы извлечения данных в Python API написаны нами сверх эффективно и быстро на уровне отдачи этих данных в MQL5.

Медленнее, не на СТОЛЬКО же....

Спасибо, Ренат, за ответ. Я так понял, что такая скорость - это исключительно на совести Питона? Я и сам думал, что ни обращение за тиками в МТ, ни запись данных в файл не могут замедлить работу настолько...

 

Теперь понимаете, почему мы столько сил вкладываем в производительность языка?

Иначе невозможно обработать современные обьемы.

Мы поддерживаем Питон не сам по себе, а ради моста в эффективные библиотеки, написанные для него(на С++).

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

Тогда наверняка будет включен функционал API для использования тестера с Python, не так ли?

Приветствия
 
Christian:

Тогда наверняка будет включен функционал API для использования тестера с Python, не так ли?

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

Нам гораздо выгоднее развить свою идею перекомпиляции сторонних C++ библиотек в MQL5 модули. Для этого мы начали включать внешний LLVM компилятор в редактор.

 
Renat Fatkhullin:

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

Нам гораздо выгоднее развить свою идею перекомпиляции сторонних C++ библиотек в MQL5 модули. Для этого мы начали включать внешний LLVM компилятор в редактор.

Есть ли надежда развития идеи, в поддержке С/C++  .lib  или  .a  статических библиотек, линкующихся в проект mql программы?

 
Roman:

Есть ли надежда развития идеи, в поддержке С/C++  .lib  или  .a  статических библиотек, линкующихся в проект mql программы?

Нет. Вы всегда можете использовать любые DLL при явном контроле прав доступа.

 
Я понимаю, потери на соединение с МТ5, прочие накладные моменты.... Но, 8 секунд против 3-х часов..... ???????? КАК ???????????

Привидите пример вашего кода на Python который тормозит, по словам не понятно что он делает и как вы получаете данные. И зачем он постоянно пишет в файл? Нельзя это сделать в конце?

 
Renat Fatkhullin:

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

Нам гораздо выгоднее развить свою идею перекомпиляции сторонних C++ библиотек в MQL5 модули. Для этого мы начали включать внешний LLVM компилятор в редактор.

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

 

Заметил странность при выводе:

[89, '2020.01.16', 3, 15, 3, 16, Timedelta('0 days 01:16:53.966000')]
[90, '2020.01.16', 3, 16, 3, 17, Timedelta('0 days 00:25:39.266000')]
[91, '2020.01.16', 3, 17, 4, 12, Timedelta('0 days 19:07:12.757000')]
[92, '2020.01.17', 4, 12, 4, 13, Timedelta('0 days 00:36:14')]
[93, '2020.01.17', 4, 13, 4, 15, Timedelta('0 days 02:21:01.630000')]
[94, '2020.01.17', 4, 15, 4, 17, Timedelta('0 days 02:12:28.692000')]
[95, '2020.01.17', 4, 17, 0, 11, Timedelta('0 days 17:30:16.404000')]

Это == 00:36:14.000000 ?

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