You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查找Python版MetaTrader5库函数源码并添加ObjectGetDouble

解决MetaTrader5 Python库源码查找与ObjectGetDouble函数调用问题

一、为什么找不到mt5.account_info()的源码?

MetaTrader5的Python库属于C扩展模块,并非纯Python实现:

  • 你看到的__init__.py只是Python层的入口文件,仅包含少量辅助逻辑,核心功能(比如account_info())都在编译后的二进制文件中(Windows下为.pyd,Linux/macOS下为.so)。
  • 这类二进制文件无法直接查看源码,且官方并未开源该库的底层实现,因此你没法通过常规方式找到account_info()的代码实现。

二、调用未封装的ObjectGetDouble函数的可行方案

鉴于你不熟悉C++和MQL5,推荐两种低门槛的实现方案:

方案1:用极简MQL5脚本导出数据到CSV,Python读取

不需要复杂的MQL5知识,按以下步骤操作即可:

  1. 打开MT5终端的MQL5编辑器,新建一个脚本文件(比如ExportObjectData.mq5)
  2. 粘贴以下代码,替换成你的对象名称和需要获取的属性:
void OnStart()
{
    // 打开CSV文件,不存在则创建
    int fileHandle = FileOpen("object_values.csv", FILE_WRITE | FILE_CSV | FILE_ANSI);
    if(fileHandle != INVALID_HANDLE)
    {
        // 示例:获取当前品种上名为"TrendLine"对象的价格属性
        double targetValue = ObjectGetDouble(_Symbol, "TrendLine", OBJPROP_PRICE);
        // 写入数据:品种名称、对象名称、获取到的数值
        FileWrite(fileHandle, _Symbol, "TrendLine", targetValue);
        // 关闭文件
        FileClose(fileHandle);
    }
}
  1. 将脚本放到MT5安装目录的MQL5/Scripts文件夹,回到终端在「导航」面板的「脚本」分类找到它,右键运行
  2. 生成的CSV文件在MT5的Files文件夹,Python用普通文件读取或pandas.read_csv即可获取数据

方案2:借助MT5的HTTP API(无需编写MQL5代码)

  1. 在MT5终端的「工具-选项-服务器」中开启「允许WebRequest用于列出的URL」,添加http://localhost
  2. 在MT5的「工具-选项-EA交易」中开启「允许自动交易」和「允许WebRequest」
  3. 用Python发送HTTP请求获取对象数据,示例代码:
import requests

# 替换成你的MT5终端端口(默认是80)
url = "http://localhost:80/api/object/getdouble"
params = {
    "symbol": "EURUSD",
    "object_name": "TrendLine",
    "property": "OBJPROP_PRICE"
}
response = requests.get(url, params=params)
data = response.json()
print(data["value"])

注意:部分MT5版本可能需要手动配置HTTP API端口,具体可参考终端内置帮助文档。

不推荐自行扩展Python库

给MetaTrader5 Python库添加ObjectGetDouble封装需要掌握C++编程、MT5的C API接口,门槛极高,不适合编程经验尚浅的开发者。

内容的提问来源于stack exchange,提问作者Andrew Booth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 12:20:59