Группа пользователей MetaTrader 5 Python - краткое содержание - страница 12
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Форум о трейдинге, автоматизированных торговых системах и тестировании торговых стратегий
MetaTrader 5 Python User Group - как использовать Python в Metatrader
Рашид Умаров, 2020.03.28 09:11
В справку добавлены описания 3 новых функций:
Кроме того, внесены изменения в описания многих функций по мере их доработки. Почти все примеры были переписаны с учетом новой функциональности. Однако примеры для следующих функций на сайте еще не обновлены, это произойдет чуть позже:
Насколько важно вызывать mt5.shutdown()?
Я полагаю, что это довольно важно, иначе это не было бы частью общепринятой практики. Но тогда почему он никогда не представлен в блоке try/finally? Если пользовательский код вызовет исключение, то mt5.shutdown не будет вызван. Другой проблемой является отсутствие пользовательских исключений в MT5 python. Я хотел бы предложить добавить контекстный менеджер в официальную библиотеку MT5, а также уникальное исключение, которое можно было бы перехватывать в блоке try. Пример:
Этот код устанавливает контекстный менеджер MT5-соединений и инициализирует MT5 connect при входе и выключает его при выходе, гарантируя, что функция mt5.shutdown() всегда вызывается.
Получается следующий результат:
Вот код менеджера контекста:
Этот код устанавливает менеджер контекста соединения MT5, инициализирует его при входе и выключает при выходе, обеспечивая постоянный вызов функции mt5.shutdown().
Это приводит к следующему результату:
Вот код менеджера контекста:
Хороший пример, я бы посоветовал devops включить его в документацию.
Насколько важно вызывать mt5.shutdown()?
MetaTrader5 - в условиях реализации ограниченный ресурс.
На хосте может быть запущено несколько терминалов. Чтобы указать, какой именно запущен - используется path-переменная.
Точнее, первый, неименованный параметр.
Если вам нужно переподключиться - сменить счет или терминал, необходимо выполнить mt5.shutdown()
Вот код менеджера контекста:
MetaTrader5 - Исключение не обрабатывается в классической концепции python, необходимо использовать last_error()
https://www.mql5.com/en/docs/integration/python_metatrader5/mt5lasterror_py
MetaTrader5 - в условиях реализации ограниченный ресурс.
На хосте может быть запущено несколько терминалов. Чтобы указать, какой из них запущен - используется переменная path.
Точнее, первый, безымянный параметр.
Если вам нужно переподключиться - сменить учетную запись или терминал, необходимо выполнить mt5.shutdown()
То есть, если я правильно вас понял, нельзя иметь более одного одновременного терминального подключения?
Я обнаружил проблему с обработкой **kwargs в некоторых функциях, которые могут вызываться как с аргументами, так и без них. Пожалуйста, обратитесь к этим модульным тестам pytest.
Ожидаемое поведение:
Все функции должны быть способны исключать **kwargs и возвращать эквивалент вызова без аргументов:
Это нежелательное обходное решение
pytest
Привет,
Я новичок в MetaTrader5. Я решил начать программировать в этой области и ищу способ интегрировать Python3 в него, чтобы я мог извлекать исторические данные в качестве первой программы HelloWorld.
Я также использую Debian 10 Buster. Я подготовил все пакеты в соответствии с инструкцией здесь, но, к сожалению, я не могу импортировать MetaTrader5 и сталкиваюсь с этой ошибкой:
Error:Кто-нибудь знает, как преодолеть эту ошибку?
Я также успешно установил пакет:
Я установил MetaTrader5 через pip3, но эта ошибка заставила меня удалить его и переустановить с помощью самого файла колеса MetaTrader5, но та же ошибка. Я проверил файл MetaTrader5 .whl на pypi.org и обнаружил, что в имени файла присутствует название win_amd64 или win32. Это заставило меня переименовать файл в соответствии с архитектурой моей системы, но после успешной установки (как и раньше) снова появляется та же ошибка. Неужели этот пакет был разработан только для Windows? Если да, то есть ли другой способ развернуть этот пакет в GNU/Linux.
СпасибоЭтот пакет был разработан только для Windows?
Да. Для его работы требуется запущенный терминал MT5, который работает только под Windows.
Итак, если я правильно вас понял, невозможно иметь более одного одновременного терминального соединения?
Да, 1 терминал - 1 соединение.
В моей задаче требовалось использовать более 1 терминального соединения, и в коде я использовал threading.RLock() в качестве семафора :)
Ничего лучше я не придумал...