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

 
Maxim Dmitrievsky:

Ренат, есть какой-нибудь апдейт по поддержке ONNX? 

Нет.

Пока нет спроса и подготовленной аудитории.

 

Много изменений сделали да прошедший год, старые скрипты перестали работать.

Есть терминал MT5 build 2361, 32bit на Windows 7. Сам он работает, но вот подключение python скриптов перестало работать (хотя в начале года работало).

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

import MetaTrader5 as mt5
from time import sleep

mt5.initialize()
print('start')
print(mt5.terminal_info())
sleep(10) 

mt5.shutdown()
print('end')

Вопрос какую версию python модуля MetaTrader5 необходимо установить чтобы опять всё заработало ? (или как откатить обновления терминала ?)

Устанавливал разные версии модуля - все выдают ошибки. Те что поновее выдают -10003, 'IPC initialize failed, MetaTrader 5 x64 not found',

некоторые проходят инициализацию , запускают терминал, но при запросе чего либо выдают RuntimeError: IPC recv failed in 'py_test.py'

Самые старые 5.0.10 имеют другие команды, но тоже не работают

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

64 битная версия терминала требует обновления ОС и еще обновления кучи всего, плюс ОС 64 бит жрет в разы больше памяти и места на дисках, плохой вариант. Вообще политика автообновлений чего либо - плохая. Работает - не трогай.

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

Автоматическое обновление - Для продвинутых пользователей - Справка по MetaTrader 5
Автоматическое обновление - Для продвинутых пользователей - Справка по MetaTrader 5
  • www.metatrader5.com
В платформу встроена система автоматического обновления. Она позволяет своевременно получать и устанавливать новые версии программы. Эту систему отключить нельзя. Порядок обновления При подключении к торговому серверу происходит проверка наличия обновлений платформы. Если найдено обновление какого-либо из компонентов торговой платформы...
 
Lyuk:


Поддержка 32-битной операционной системы отключена много билдов назад. С тех пор терминал сильно изменялся. Отсюда вероятное разрешение Вашей проблемы: Вам НУЖНО использовать 64-битную Windows 10.

 

Но БЫЛ же совместимый билд терминала и модуля, можно просто их установить, без новых возможностей.

И обязательность Windows 10 64 bit это уже перебор для программы типа терминала. Слишком она тяжелая, жрущая, ненадежная, чтоб запускать на ней что либо требующее длительной работы. Там ещё свои проблемы с автообновлениями. Очень жаль что МТ привязан к этой системе.

 
Vladimir Karputov:

Вам НУЖНО использовать 64-битную Windows 10.

А чем Windows 7 x64 не подходит? Я пропустил очередную новость???

 
Aleksey Vyazmikin:

А чем Windows 7 x64 не подходит? Я пропустил очередную новость???

как по мне 7ка лучше 10ки. нет ориента на мобильные системы.

 
Valeriy Yastremskiy:

как по мне 7ка лучше 10ки. нет ориента на мобильные системы.

Согласен, почти год работал на 10ке и приходя домой радовался семерке!

 
Renat Fatkhullin:

Нет.

Пока нет спроса и подготовленной аудитории.

4 человека пока что изъявили спрос, в теме машинного обучения :) мне кажется, что если будет такая возможность и пара статей на тему, то питонщики начнут переносить модели. Особенно англоязычные.
 
2020.11.09 09:43:31.509 Terminal        MetaTrader 5 x64 build 2670 started for MetaQuotes Software Corp.
2020.11.09 09:43:31.510 Terminal        Windows 10 build 19042, Intel Core i7-9750H  @ 2.60GHz, 23 / 31 Gb memory, 1665 / 1861 Gb disk, IE 11, UAC, GMT+2
2020.11.09 09:43:31.510 Terminal        C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075


Запускаю и как скрипт в редакторе MetaEditor и в jupyter notebook. 

Python version:  sys.version_info(major=3, minor=7, micro=6, releaselevel='final', serial=0)
Scikit-Learn version:  0.23.1


Не получается распечатать первые пять строк объекта DataFrame.

Беру скрипт из поставки 'data folder'\Scripts\Python\copy_rates_from.py' и добавляю строки:

from datetime import datetime
import MetaTrader5 as mt5
# выведем данные о пакете MetaTrader5
print("MetaTrader5 package author: ",mt5.__author__)
print("MetaTrader5 package version: ",mt5.__version__)

# импортируем модуль pandas для вывода полученных данных в табличной форме
import pandas as pd
pd.set_option('display.max_columns', 500) # сколько столбцов показываем
pd.set_option('display.width', 1500)      # макс. ширина таблицы для показа
# импортируем модуль pytz для работы с таймзоной
import pytz

# установим подключение к терминалу MetaTrader 5
if not mt5.initialize():
    print("initialize() failed")
    mt5.shutdown()

# установим таймзону в UTC
timezone = pytz.timezone("Etc/UTC")
# создадим объект datetime в таймзоне UTC, чтобы не применялось смещение локальной таймзоны
utc_from = datetime(2020, 1, 10, tzinfo=timezone)
# получим 10 баров с EURUSD H4 начиная с 01.10.2020 в таймзоне UTC
rates = mt5.copy_rates_from("EURUSD", mt5.TIMEFRAME_H4, utc_from, 10)

# завершим подключение к терминалу MetaTrader 5
mt5.shutdown()
# выведем каждый элемент полученных данных на новой строке
print("Выведем полученные данные как есть")
for rate in rates:
    print(rate)

# создадим из полученных данных DataFrame
rates_frame = pd.DataFrame(rates)

# выведем пять первых строк (метод 'head' pandas)
print("\nВыведем пять первых строк")
rates_frame.head()

rates_frame['time']=pd.to_datetime(rates_frame['time'], unit='s')

# выведем данные
print("\nВыведем датафрейм с данными")
print(rates_frame)

rates_frame['time']=pd.to_datetime(rates_frame['time'], unit='s')

# выведем данные
print("\nВыведем датафрейм с данными")
print(rates_frame)

а метод ничего не выводит:

(1578614400, 1.11051, 1.11093, 1.11017, 1.11041, 2448, 1, 0)

Выведем пять первых строк

Выведем датафрейм с данными



Почему метод 'head()' не сработал, а вот такой манёвр:

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

Новая версия платформы MetaTrader 5 build 2650: Фоновая загрузка графиков и улучшения в профилировщике MQL5-кода

Rashid Umarov, 2020.11.10 14:03

Попробуй

# выведем пять первых строк (метод 'head' pandas)
print("\nВыведем пять первых строк")
print(rates_frame.head())

Результат

Выведем пять первых строк
         time     open     high      low    close  tick_volume  spread  real_volume
0  1578484800  1.11384  1.11386  1.11110  1.11200        12101       0            0
1  1578499200  1.11200  1.11308  1.11087  1.11180        13243       0            0
2  1578513600  1.11180  1.11180  1.11018  1.11041         5709       0            0
3  1578528000  1.11053  1.11194  1.11033  1.11174         4409       0            0
4  1578542400  1.11174  1.11190  1.11126  1.11183         2964       0            0



сработал?

 
Vladimir Karputov:

Почему метод 'head()' не сработал, а вот такой манёвр:


сработал?

Потому что метод head() (https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.head.html) возвращает объект, а не делает вывод в лог. Чтобы увидеть содержимое, нужно объект явно отправить в print()

Это анакондa для удобства выводит объекты как если бы вызвана команда print().