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

 
capissimo:

По крайней мере, должна иметься детальная документация, учитывающая все случаи. Универсум не так-то большой - всего 3 ветки операционных систем - Win/Linux/MacOS.

Установил Microsoft build tools с https://visualstudio.microsoft.com/ru/downloads/?rr=https%3A%2F%2Fwww.google.com%2F. Теперь пакет устанавливается в Python 3.8. Эта проблема РЕШЕНА.

C:\Users\labor>pip install MetaTrader5

Collecting MetaTrader5

  Using cached https://files.pythonhosted.org/packages/3c/c8/713f1b8283cbbdef30dc9cf50a5d767f9b4a194eb4f886a8e50074b696a1/MetaTrader5-5.0.6.tar.gz

Installing collected packages: MetaTrader5

    Running setup.py install for MetaTrader5 ... done

Successfully installed MetaTrader5-5.0.6


НО! Ошибка RuntimeError: IPC call failed осталась:

C:\Users\labor>C:\Users\labor\Anaconda3\envs\metatrader5\python.exe C:/Users/labor/Downloads/MetaTrader5-Python/metatrader5-test.py

[2, 'Exness-MT5Real', '0000000']  # код обнулен в распечатке

[500, 2174, '11 Oct 2019']

Traceback (most recent call last):

  File "C:/Users/labor/Downloads/MetaTrader5-Python/metatrader5-test.py", line 10, in <module>

    ticks1 = MT5CopyTicksFrom("EURAUD", datetime(2019,1,28,13), 10000, MT5_COPY_TICKS_ALL)

RuntimeError: IPC call failed

такая же ошибка возникает когда нет такого символа на счете в мт5. Например, EURPLN нету в терминале


 
capissimo:
Терминал работает как надо.

Пожалуйста, подключитесь к серверу MetaQuotes-Demo, выберите Help -> Check Desktop Updates -> Latest Beta Build, дождитесь обновления. Билд должен быть старше или равен 2174. Попробуйте запустить ваш скрипт на этом сервере и сообщите результат.


PS. Еще, убедитесь что у вас открыт счет в терминале, ф-ция MT5TerminalInfo() возвращает разумные значения и MT5WaitForTerminal() вернул True.

 
Maxim Dmitrievsky:

такая же ошибка возникает когда нет такого символа на счете в мт5. Например, EURPLN нету в терминале


Это учел с самого начала - изменил код под свои активы, не работает
 
Almaz:

Пожалуйста, подключитесь к серверу MetaQuotes-Demo, выберите Help -> Check Desktop Updates -> Latest Beta Build, дождитесь обновления. Билд должен быть старше или равен 2174. Попробуйте запустить ваш скрипт на этом сервере и сообщите результат.


PS. Еще, убедитесь что у вас открыт счет в терминале, ф-ция MT5TerminalInfo() возвращает разумные значения и MT5WaitForTerminal() вернул True.

Счет открыт, терминал работает, и пакет возвращает из него мой пароль и пр. ([2, 'Exness-MT5Real', '0000000'] , прим: пароль запикан), но на этапе извлечения из него данных возникает ошибка.

В Anaconda Python та же хрень (снес Python 3.8 и установил свежий дистрибутив Anaconda, который использует одну из версий Python 3.7 и pip-нул в нее ваш MetaTrader5):

  File "C:\Users\labor\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile

    exec(compile(f.read(), filename, 'exec'), namespace)

  File "C:/Users/labor/.spyder-py3/temp.py", line 17, in <module>

    eurusd_rates = MT5CopyRatesFrom("EURUSD", MT5_TIMEFRAME_M1, datetime(2019,4,5,15), 1000)

RuntimeError: IPC call failed

Как видно, спотыкается на MT5CopyRatesFrom во время какой-то файловой операции.
 

Выпустили обновленную версию пакета MetaTrader 5.0.7 для Python.

Обновиться можно так:

pip install --upgrade matplotlib
pip install --upgrade MetaTrader5
 
MetaQuotes Software Corp.:

Выпустили обновленную версию пакета MetaTrader 5.0.7 для Python.

Обновиться можно так:

какие-то изменения?

 
Maxim Dmitrievsky:

какие-то изменения?

Переход от true/false результатов к детальным числовым кодам.

Улучшили режимы ожидания доступности данных из терминала.
 
Almaz:

Пожалуйста, подключитесь к серверу MetaQuotes-Demo, выберите Help -> Check Desktop Updates -> Latest Beta Build, дождитесь обновления. Билд должен быть старше или равен 2174. Попробуйте запустить ваш скрипт на этом сервере и сообщите результат.


PS. Еще, убедитесь что у вас открыт счет в терминале, ф-ция MT5TerminalInfo() возвращает разумные значения и MT5WaitForTerminal() вернул True.

Мой терминал имеет build 2190; в терминале тот же инструмент, который запрашивется в скрипте. Скрипт возвращает имя моего брокера и торговый код:  [2, 'Exness-MT5Real', '*******'].

После обновления пакета ошибка возникает на той же самой строке кода, на сообщение об ошибке изменилось: RuntimeError: Terminal: Call failed

(base) C:\Users\labor>python.exe C:/Users/labor/Downloads/MetaTrader5-Python/mt5test2.py

[2, 'Exness-MT5Real', '0000000']

[500, 2190, '18 Oct 2019']

Traceback (most recent call last):

  File "C:/Users/labor/Downloads/MetaTrader5-Python/mt5test2.py", line 17, in <module>

    eurusd_rates = MT5CopyRatesFrom("EURUSD", MT5_TIMEFRAME_M1, datetime(2019,4,5,15), 1000)

RuntimeError: Terminal: Call failed

 
capissimo:

Мой терминал имеет build 2190; в терминале тот же инструмент, который запрашивется в скрипте. Скрипт возвращает имя моего брокера и торговый код:  [2, 'Exness-MT5Real', '*******'].

Обновитесь до питон пакета MetaTrader 5.0.7 и приложите результаты, пожалуйста.

 
MetaQuotes Software Corp.:

Обновитесь до питон пакета MetaTrader 5.0.7 и приложите результаты, пожалуйста.

1) использую Anaconda Python 3.7.4 и работаю в виртуальной среде base. Кстати, для какой версии Python предназначен пакет MetaTrader 5.0.7 ? 

2) по вашей просьбе снова установил Python 3.8, обновил pip и уже на этапе установки matplotlib получаю вот это (весь ПРОТОКОЛ см. в скрепке):

Microsoft Windows [Version 10.0.17134.1069]. Чертовщина...

(c) Корпорация Майкрософт (Microsoft Corporation), 2018. Все права защищены.

C:\Users\labor>pip install matplotlib

Collecting matplotlib

  Using cached https://files.pythonhosted.org/packages/12/d1/7b12cd79c791348cb0c78ce6e7d16bd72992f13c9f1e8e43d2725a6d8adf/matplotlib-3.1.1.tar.gz

Requirement already satisfied: cycler>=0.10 in c:\python38\lib\site-packages (from matplotlib) (0.10.0)

Requirement already satisfied: kiwisolver>=1.0.1 in c:\python38\lib\site-packages (from matplotlib) (1.1.0)

Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in c:\python38\lib\site-packages (from matplotlib) (2.4.2)

Requirement already satisfied: python-dateutil>=2.1 in c:\python38\lib\site-packages (from matplotlib) (2.8.0)

Requirement already satisfied: numpy>=1.11 in c:\python38\lib\site-packages (from matplotlib) (1.17.3)

Requirement already satisfied: six in c:\python38\lib\site-packages (from cycler>=0.10->matplotlib) (1.12.0)

Requirement already satisfied: setuptools in c:\python38\lib\site-packages (from kiwisolver>=1.0.1->matplotlib) (41.2.0)

Installing collected packages: matplotlib

    Running setup.py install for matplotlib ... error

    ERROR: Command errored out with exit status 1:

     command: 'c:\python38\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\labor\\AppData\\Local\\Temp\\pip-install-unwrm6r5\\matplotlib\\setup.py'"'"'; __file__='"'"'C:\\Users\\labor\\AppData\\Local\\Temp\\pip-install-unwrm6r5\\matplotlib\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\labor\AppData\Local\Temp\pip-record-ly12rvmr\install-record.txt' --single-version-externally-managed --compile

............. продолжение в файле

3) установил matplotlib с помощью ресурса http://www.lfd.uci.edu/~gohlke/pythonlibs/, установил стандартно pytz и ваш пакет. Получил ту же ошибку: RuntimeError: Terminal: Call failed. См. скрепку 2.

Файлы:
6ww6n.zip  7 kb
report.zip  2 kb
Причина обращения: