python - MT5/Metatrader 5 使用 python 连接到不同的 MT5 终端
问题描述
我有多个使用以下代码连接到 Mt5 终端的 python 程序。
# Establish connection to the MetaTrader 5 terminal
if not mt5.initialize("C:\\Program Files\\ICMarkets - MetaTrader 5 - 01\\terminal64.exe"):
print("initialize() failed, error code =", mt5.last_error())
quit()
MT5 的 python 模块是这里的一个 - https://www.mql5.com/en/docs/integration/python_metatrader5
我遇到的问题是,当多个程序连接到同一个 MT5terminal.exe
时,性能会下降并且一个或多个 python 程序退出并出现错误。为了克服这个问题,我安装了多个 MT5 副本并更新了 python 代码,以便不同的 python 程序副本使用不同的 MT5 安装。但是,只有第一次安装 MT5 是唯一可以被所有 python 程序调用的。尝试使用terminal.exe
其他安装中的任何其他内容会引发异常并且连接失败。
互联网上也没有太多可以解决此问题。如果有人有解决这个问题的想法或已经解决了这个问题,我很想听听你的意见。
这样的错误是 -
initialize() failed, error code = (-10003, "IPC initialize failed, Process create failed 'C:\\Program Files\\ICMarkets - MetaTrader 5 - 02\terminal64.exe'")
这可能与 Windows 的默认指向第一次安装或您甚至不会想到的类似情况有关。只是在这里大声思考。
解决方案
根据我的经验,恕我直言,MT5 python API 并非旨在同时处理来自同一台机器的多个连接。
我通过创建虚拟机并通过它们运行所有东西来克服这个问题。我使用 Oracle VM 是因为它是免费的,我有过使用它的经验,但它不擅长共享资源。
如果您的机器不是很强大,您可能需要考虑其他一些解决方案。听说Docker擅长共享主机资源。
推荐阅读
- google-apps-script - 在 v8 vs Rhino 中使用侧边栏 // 不工作 vs 工作
- salesforce - Docusign 'Generate Document' (File) 'owner' 应该是生成文档的人
- jsf - 切换时更改 p:autoComplete 默认行为
- javascript - 如何在 Vue.js 中访问 DOM
- rust - 便携式安装找不到 std 和 core 的 crate
- php - 使用带有 CURL 的 Geolocation API 获取纬度和经度时出错
- python - 具有多个估计器的 Sklearn 管道
- php - Laravel 使用条件表名对两个表进行连接查询
- python - 有没有办法从 yfinance 重命名数据框中的这些列?
- jquery - 如何在 mvc 视图中获取输入值?