返回市场
元交易5服务器

元交易5服务器

作者:Qoyyuum61 星标更新:2025-11-24

项目介绍

MseeP.ai 安全评估徽章

codecov

PyPI 版本

MetaTrader 5 MCP 服务器

这是一个用于 MetaTrader 5 的模型上下文协议(MCP)服务器,允许AI助手与MetaTrader 5平台进行交互,以实现交易和市场数据分析。文档

功能

  • 连接到MetaTrader 5终端
  • 访问市场数据(符号、价格、报价)
  • 下单和管理交易
  • 分析交易历史
  • 通过模型上下文协议集成AI助手

安装

从PyPI

uvx --from mcp-metatrader5-server mt5mcp

从源代码

git clone https://github.com/Qoyyuum/mcp-metatrader5-server.git
cd mcp-metatrader5-server
uv sync
uv run mt5mcp

要求

  • uv(推荐)或pip
  • Python 3.11 或更高版本
  • MetaTrader 5终端安装在Windows上
  • MetaTrader 5账户(模拟或真实)

使用方法

快速开始

服务器默认以标准I/O模式运行,适用于如Claude Desktop等MCP客户端:

uv run mt5mcp

开发模式(HTTP)

为了使用HTTP传输进行测试,请创建一个.env文件:

MT5_MCP_TRANSPORT=http
MT5_MCP_HOST=127.0.0.1
MT5_MCP_PORT=8000

然后运行:

uv run mt5mcp

服务器将在http://127.0.0.1:8000启动。

为MCP客户端安装

方法1:使用uvx(最简单 - 不需要安装)

在您的MCP客户端配置文件中添加以下配置:

对于Claude Desktopclaude_desktop_config.json):

{
  "mcpServers": {
    "mcp-metatrader5-server": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/Qoyyuum/mcp-metatrader5-server",
        "mt5mcp"
      ]
    }
  }
}

方法2:使用FastMCP安装(推荐)

git clone https://github.com/Qoyyuum/mcp-metatrader5-server
cd mcp-metatrader5-server

克隆仓库后,运行以下命令:

对于MCP JSON格式

uv run fastmcp install mcp-json src/mcp_mt5/main.py

对于Claude Desktop

uv run fastmcp install claude-desktop src/mcp_mt5/main.py

对于Claude Code

uv run fastmcp install claude-code src/mcp_mt5/main.py

对于Cursor

uv run fastmcp install cursor src/mcp_mt5/main.py

对于Gemini CLI

uv run fastmcp install gemini-cli src/mcp_mt5/main.py

方法3:手动配置

在您的claude_desktop_config.json或其他LLM配置文件中添加以下内容:

{
  "mcpServers": {
    "mcp-metatrader5-server": {
      "command": "uvx",
      "args": [
        "--from",
        "mcp-metatrader5-server",
        "mt5mcp"
      ]
    }
  }
}

API参考

连接管理

  • initialize(): 初始化MT5终端
  • login(account, password, server): 登录到交易账户
  • shutdown(): 关闭与MT5终端的连接

市场数据函数

  • get_symbols(): 获取所有可用的符号
  • get_symbols_by_group(group): 按组获取符号
  • get_symbol_info(symbol): 获取特定符号的信息
  • get_symbol_info_tick(symbol): 获取特定符号的最新报价
  • copy_rates_from_pos(symbol, timeframe, start_pos, count): 从特定位置获取条形图
  • copy_rates_from_date(symbol, timeframe, date_from, count): 从特定日期获取条形图
  • copy_rates_range(symbol, timeframe, date_from, date_to): 在日期范围内获取条形图
  • copy_ticks_from_pos(symbol, start_pos, count): 从特定位置获取报价
  • copy_ticks_from_date(symbol, date_from, count): 从特定日期获取报价
  • copy_ticks_range(symbol, date_from, date_to): 在日期范围内获取报价

交易功能

  • order_send(request): 向交易服务器发送订单
  • order_check(request): 检查是否可以按指定参数下单
  • positions_get(symbol, group): 获取开放的仓位
  • positions_get_by_ticket(ticket): 通过票号获取开放的仓位
  • orders_get(symbol, group): 获取活跃的订单
  • orders_get_by_ticket(ticket): 通过票号获取活跃的订单
  • history_orders_get(symbol, group, ticket, position, from_date, to_date): 获取历史订单
  • history_deals_get(symbol, group, ticket, position, from_date, to_date): 获取历史成交

示例工作流程

连接并获取市场数据

# 初始化MT5
initialize()

# 登录到您的交易账户
login(account=123456, password="your_password", server="your_server")

# 获取可用的符号
symbols = get_symbols()

# 获取EURUSD的近期价格数据
rates = copy_rates_from_pos(symbol="EURUSD", timeframe=15, start_pos=0, count=100)

# 关闭连接
shutdown()

下单交易

# 初始化并登录
initialize()
login(account=123456, password="your_password", server="your_server")

# 创建订单请求
request = OrderRequest(
    action=mt5.TRADE_ACTION_DEAL,
    symbol="EURUSD",
    volume=0.1,
    type=mt5.ORDER_TYPE_BUY,
    price=mt5.symbol_info_tick("EURUSD").ask,
    deviation=20,
    magic=123456,
    comment="买入订单",
    type_time=mt5.ORDER_TIME_GTC,
    type_filling=mt5.ORDER_FILLING_IOC
)

# 发送订单
result = order_send(request)

# 关闭连接
shutdown()

资源

该服务器提供以下资源,帮助AI助手了解如何使用MetaTrader 5 API:

  • mt5://getting_started: 使用MetaTrader 5 API的基本工作流程
  • mt5://trading_guide: 下单和管理交易指南
  • mt5://market_data_guide: 访问和分析市场数据指南
  • mt5://order_types: 关于订单类型的说明
  • mt5://order_filling_types: 关于订单执行类型的说明
  • mt5://order_time_types: 关于订单时间类型的说明
  • mt5://trade_actions: 关于交易请求动作的说明

提示

该服务器提供以下提示,帮助AI助手与用户互动:

  • connect_to_mt5(account, password, server): 连接到MetaTrader 5并登录
  • analyze_market_data(symbol, timeframe): 分析特定符号的市场数据
  • place_trade(symbol, order_type, volume): 对特定符号下单交易
  • manage_positions(): 管理开放的仓位
  • analyze_trading_history(days): 分析交易历史

开发

项目结构

mcp-metatrader5-server/
├── src/
│   └── mcp_mt5/
│       ├── __init__.py      # 入口点,包含main()
│       ├── main.py          # 包含所有工具的FastMCP服务器
│       └── test_client.py   # 开发用的测试客户端
├── docs/
│   ├── getting_started.md
│   ├── market_data_guide.md
│   ├── trading_guide.md
│   └── publishing.md
├── .env                     # 环境配置(从.env.example创建)
├── README.md
├── pyproject.toml           # 项目元数据(使用hatchling)
└── uv.lock                  # 依赖锁定文件

构建包

使用uv(推荐):

uv build

这将在dist/目录下创建wheel和源分布。

发布到PyPI

使用uv:

# 首先构建
uv build

# 发布到PyPI
uv publish

# 或者首先发布到TestPyPI
uv publish --publish-url https://test.pypi.org/legacy/

许可证

MIT

致谢