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

 
Maxim Dmitrievsky:

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

Вы сами проверьте.

Но не забывайте, что реальная обертка над ONNX будет однозначно на C++ в виде библиотеки/модуля для питона, а дальше драйвер/библиотеки конкретной видеокарты(если она пригодна).

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

Люди недостаточно понимают, что Питон - это реально всего лишь обвязка над вызовами библиотек и ничего больше. Они думают, что питон мощный и современный язык. Но в реальности это обвязка между С++ библиотеками ;)

Причем каждая библиотека имеет чудовищные расходы на обеспечение совместимости с динамическими структурами питона(даже в numpy).

 
Renat Fatkhullin:

Вы сами проверьте.

Но не забывайте, что реальная обертка над ONNX будет однозначно на C++ в виде библиотеки/модуля для питона, а дальше драйвер/библиотеки конкретной видеокарты(если она пригодна).

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

Люди недостаточно понимают, что Питон - это реально всего лишь обвязка над вызовами библиотек и ничего больше. Они думают, что питон мощный и современный язык. Но в реальности это обвязка между С++ библиотеками ;)

Причем каждая библиотека имеет чудовищные расходы на обеспечение совместимости с динамическими структурами питона(даже в numpy).

Проверю.. пока не разбирался в деталях

понятно, что питон, в основном, для исследований.

Но чтобы потом вытащить код какой-нибудь нейросети уже обученной (а они каждый раз меняются при исследованиях), то переносить что-то куда-то уже нереально :)

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

 
Renat Fatkhullin:

Nein. Es ist naiv zu glauben, dass wir Selbstmord begehen und eine Sprache wählen werden, die hunderte Male langsamer ist als unsere, um den Tester loszuwerden.

Für uns ist es viel rentabler, unsere Idee zu entwickeln, C ++ - Bibliotheken von Drittanbietern in MQL5-Module neu zu kompilieren. Zu diesem Zweck haben wir begonnen, einen externen LLVM-Compiler in den Editor aufzunehmen.

Я не знаю, правильно ли был переведен мой вопрос. Вопрос немного другой.

Получает ли модуль Python команды для тестера стратегий? В конце концов или определенно нет?
 

Вставлю и свои 5 копеек )))

Я за Питон взялся именно потому, что в нём намного проще (мне кажется) работать с сетями. Куча наработок. Бери и применяй. И от нейронных сетей уже не отмахнуться. На мой взгляд в MQL просто необходимы библиотеки для работы с этой сущностью...

 
Almaz:

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

Немного изменил код Питона: запрос тиков увеличил с одного дня до 30, запись в файл организовал не построчно, а блоками по 500 строк. Время работы уменьшилась на пару секунд. Показатель ни о чём.

Переделал свой индикатор. Добавил буферов и запись данных в файл построчно. Запрос тиков остался прежний - один день.

Забросил индикатор на график

2020.11.29 17:58:07.306 newCandles_F_1.01 (GBPUSD,H2)   00:01:01

Индикатор отрисовался и записал все данные в файл за минуту.

Питон - 3 часа

MQL    - 1 минута

 

Приветствую всех.

Подскажите почему.

Читаю csv файл в датафрейм. Потом складываю несколько строк в одну и записываю в новый csv файл

....
csv_framе = pd.read_csv(flname, delimiter=',')
# тут меняю имя файла
if os.path.isfile(flname):
    os.remove(flname)

rows, cols = csv_framе.shape
for i in range(candles_in_train, rows):
    lst = list()
    for k in range(candles_in_train):
        m = i - candles_in_train + k
        l = list(csv_framе.iloc[m])
        if m < i - 1:
            del l[-1]
        lst += l
    mf.write_csv_data(flname, 'a', lst)

Этот код работает 17 секунд.

Но если я всё это сразу помещаю в новый фрейм и потом сбрасываю его в файл, то время отработки кода увеличивается до 1 мин. 44 сек.

...
new_frame = pd.DataFrame()

rows, cols = csv_framе.shape
for i in range(candles_in_train, rows):
    lst = list()
    for k in range(candles_in_train):
        m = i - candles_in_train + k
        l = list(csv_fraim.iloc[m])
        if m < i - 1:
            del l[-1]
        lst += l
    #mf.write_csv_data(flname, 'a', lst)
    r, c = new_frame.shape
    if r == 0:
        new_frame = pd.DataFrame([lst])
    else:
        new_frame.loc[r] = lst
new_frame.to_csv(flname, header=None, index=False)

Почему так?

 

проблема с кодировкой? (переводчик Google)


 

Есть таблица (pandas DataFrame). Как создать новый столбец по условию: если столбец "1" < столбца "2" тогда запишем 145 иначе запишем 874?


add:

в общем решил через

import numpy as np
... np.where(
 
Доброго времени суток, а по средствам Python в MT5 можно добраться до WinApi ?

Конкретно интересует будет ли работать ?

keybd_event(VK_CONTROL,0,0,0);
 

Как сделать смещение?

Вот такая таблица (Data Frame)

      time  
2020-11-25
2020-11-26
2020-11-27
2020-11-30 
2020-12-01        

как сделать так:

      time             time_1
2020-11-25	   2020-11-26
2020-11-26         2020-11-27
2020-11-27         2020-11-30
2020-11-30         2020-12-01 
2020-12-01         ничего не писать