Вопрос или проблема
Я использую mt5linux, но когда пытаюсь подключиться к демо-счету, просто чтобы увидеть, работает ли это, у меня много ошибок:
Traceback (most recent call last):
File "/PycharmProjects/MT5 BOT 1/main.py", line 33, in <module>
startup = mt5_lib.start_mt5(project_settings=mt5_settings)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/PycharmProjects/MT5 BOT 1/mt5_lib.py", line 10, in start_mt5
mt5 = MetaTrader5()
^^^^^^^^^^^^^
File "/PycharmProjects/MT5 BOT 1/.venv/lib/python3.12/site-packages/mt5linux/__init__.py", line 364, in __init__
self.__conn = rpyc.classic.connect(host,port)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/PycharmProjects/MT5 BOT 1/.venv/lib/python3.12/site-packages/rpyc/utils/classic.py", line 76, in connect
return factory.connect(host, port, SlaveService, ipv6=ipv6, keepalive=keepalive)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/PycharmProjects/MT5 BOT 1/.venv/lib/python3.12/site-packages/rpyc/utils/factory.py", line 102, in connect
s = SocketStream.connect(host, port, ipv6=ipv6, keepalive=keepalive)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/PycharmProjects/MT5 BOT 1/.venv/lib/python3.12/site-packages/rpyc/core/stream.py", line 174, in connect
return cls(cls._connect(host, port, **kwargs))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/PycharmProjects/MT5 BOT 1/.venv/lib/python3.12/site-packages/rpyc/core/stream.py", line 126, in _connect
s = socket_backoff_connect(family, socktype, proto, sockaddr, timeout, attempts)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/PycharmProjects/MT5 BOT 1/.venv/lib/python3.12/site-packages/rpyc/lib/__init__.py", line 146, in socket_backoff_connect
sock.connect(addr)
ConnectionRefusedError: [Errno 111] Connection refused
Process finished with exit code 1
Я фактически не использую пакет MetaTrader5, потому что он не может работать на Linux, я пытался установить его через Wine, но это не сработало, поэтому я использовал mt5linux, но меня интересует, вызывает ли это mt5linux мою проблему или это моя ошибка в коде …
Я просто хочу знать, может ли кто-нибудь хотя бы сказать, откуда происходит ошибка, я не могу продолжать разрабатывать своего бота, если не могу даже подключиться к счету ….
Я использовал settings.json с учетными данными демо-счета
"username": "*",
"password": "*",
"server": "MetaQuotes-Demo",
Возможно, это не тот сервер, который я должен использовать для демо, но я думаю, что это не проблема, я сейчас в замешательстве, был бы признателен за любую помощь. Спасибо.
Я установил пакет rpyc через pip, но он все равно не работает …
Ответ или решение
Ошибка соединения “[Errno 111] Connection refused” в библиотеке mt5linux для MetaTrader 5 — это распространенная проблема, с которой могут столкнуться пользователи, пытающиеся подключиться к демо-аккаунту. Давайте внимательно рассмотрим этот вопрос и предложим возможные пути его решения.
Понимание проблемы
Ошибка соединения означает, что программа не может установить связь с сервером. Как показано в предоставленном вами трассировке стека, выполнение программы в строке SocketStream.connect(host, port)
завершается неудачей. Эта ошибка может быть вызвана несколькими причинами, и чтобы её устранить, важно проанализировать каждую из них.
Шаги по устранению неполадок
-
Проверка параметров подключения:
- Убедитесь, что в вашем файле
settings.json
указаны правильные учетные данные (имя пользователя, пароль, сервер). - Ваша текущая конфигурация должна выглядеть следующим образом:
{ "username": "ваше_имя_пользователя", "password": "ваш_пароль", "server": "MetaQuotes-Demo" }
- Убедитесь, что вы используете именно тот сервер, на который хотите подключиться. Например, с использованием
MetaQuotes-Demo
вы не должны сталкиваться с проблемами.
- Убедитесь, что в вашем файле
-
Проверка работы сервера:
- Убедитесь, что сервер MetaQuotes действительно работает и доступен. Попробуйте подключиться к нему с других приложений или устройств.
- Также проверьте, не блокирует ли ваш брандмауэр или антивирус соединение с этим сервером.
-
Настройки rpyc:
- Библиотека rpyc используется для удалённого вызова процедур, проверьте, правильно ли запущен rpyc-сервер. Необходимо убедиться, что он слушает на ожидаемом порту и доступен для подключения.
- Если вы используете локальную версию rpyc, вероятно, на вашем компьютере не запущен rpyc-сервер. В этом случае следует его запустить, используя команду, подобную следующей:
python -m rpyc_classic
-
Проверка конфигурации сети:
- Убедитесь, что у вас есть доступ к интернету и что нет ограничений со стороны вашего провайдера.
- Иногда проблема может быть связана с сетевыми настройками маршрутизатора. Попробуйте временно отключить VPN или прокси, если они используются.
-
Обновление и переустановка библиотек:
- Убедитесь, что все ваши библиотеки, включая
mt5linux
иrpyc
, обновлены до последних версий. Иногда проблемы могут быть вызваны конфликтующими версиями библиотек.pip install --upgrade mt5linux rpyc
- Убедитесь, что все ваши библиотеки, включая
-
Запись сообщений журнала:
- Добавьте дополнительные логи в вашу программу для отслеживания этапов и ошибок. Это может помочь в диагностике проблемы.
Заключение
Если все предложенные решения не помогли, стоит рассмотреть возможность обращения к сообществу пользователей mt5linux или к документации по данным библиотекам. Возможно, другие пользователи столкнулись с аналогичной проблемой и смогут предложить решение. Не стоит забывать и о том, что использование Wine для запуска MetaTrader на Linux может вызвать дополнительные сложности, что и побудило вас перейти на mt5linux.
Теперь, следуя предложенной инструкции, вы сможете диагностировать и устранить проблему соединения, что позволит вам продолжить разработку вашего торгового бота. Если потребуется дальнейшая помощь, не стесняйтесь обращаться к специализированным форумам и сообществам разработчиков.