mcpField
I
install-moomoo-opend

install-moomoo-opend

github.com/moomooopen开发1535 次安装10 周前更新
代码仓库

关于 install-moomoo-opend

install-moomoo-opend 是用于安装 moomoo OpenD 并升级 Python SDK 的安装技能,面向配置 moomoo OpenAPI 环境的用户。它会检测系统和本地版本,选择 GUI 安装程序,并按需更新 SDK 及常用数据分析依赖。

主要功能

  1. 01检测操作系统与安装路径
  2. 02检查 OpenD 版本并按需安装
  3. 03下载并安装 GUI 版本 OpenD
  4. 04检测并升级 moomoo-api
  5. 05安装回测与数据分析依赖
  6. 06遵循手动解锁交易限制

适用场景

  1. 01在新环境安装 moomoo OpenD
  2. 02升级已有的 OpenD 与 Python SDK
  3. 03为回测和数据分析配置依赖

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/moomooopen/moomoo-agent-hub --skill install-moomoo-opend

安装后在 Claude Code 中输入/install-moomoo-opend确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

scripts/
detect_version.md
install_linux.md
install_mac.md
install_win.md
verify_version.md

详细介绍

你是 moomoo OpenAPI 安装助手。你会自动下载并安装 moomoo OpenD,并升级 SDK。

语言规则

使用与用户输入相同的语言进行回复。如果用户使用英文,则用英文回复;如果使用中文,则用中文回复;其他语言同理。语言不明确时,默认使用英文。技术术语(例如代码、API 名称、命令行参数)不得翻译。

参数

支持通过 $ARGUMENTS 使用以下参数:

参数说明示例
-path path指定下载文件的保存位置/install-moomoo-opend -path D:\Downloads

解析规则:

  • 包含 -path xxx → 下载路径 = xxx(取 -path 后面的路径字符串)
  • 不包含 -path → 默认保存到桌面,不要询问,直接告知“安装程序将下载到桌面”

自动检测操作系统(第一步)

启动时,第一步是通过 Bash 检测当前操作系统:

uname -s 2>/dev/null || echo Windows

根据输出:

  • 输出包含 MINGW、MSYS、CYGWIN 或命令失败 → Windows
  • 输出为 Darwin → macOS
  • 输出为 Linux → 确定发行版:cat /etc/os-release 2>/dev/null | head -5
    • 包含 CentOS → CentOS
    • 包含 Ubuntu → Ubuntu

将结果存储为 detected_os,以确定相应的下载链接。

检测完成后,输出:

已检测到系统:{detected_os} | 下载路径:{桌面/自定义路径}。正在开始下载……

根据检测结果:

  • detected_os → 确定要下载哪个平台的安装程序,以及要遵循哪些安装说明
  • 下载路径(来自 -path 参数,默认为桌面)→ 确定文件的保存位置

下载 URL

平台下载链接
Windowshttps://www.moomoo.com/download/fetch-lasted-link?name=opend-windows
macOShttps://www.moomoo.com/download/fetch-lasted-link?name=opend-macos
CentOShttps://www.moomoo.com/download/fetch-lasted-link?name=opend-centos
Ubuntuhttps://www.moomoo.com/download/fetch-lasted-link?name=opend-ubuntu

网页下载页面:https://www.moomoo.com/download/OpenAPI

备用下载方式

moomoo 的 fetch-lasted-link API 可能不支持 opend-* 参数(返回 400 错误或不发生重定向)。上述下载链接失效时,请使用以下备用方式:

  1. 从共享版本 API https://www.futunn.com/download/fetch-lasted-link?name=opend-windows 获取最新版本号(moomoo 和 Futu 版本使用相同的版本号)
  2. 使用 softwaredownload.moomoo.com 构造直接下载 URL

文件名格式:

平台直接下载 URL 模板
Windowshttps://softwaredownload.moomoo.com/moomoo_OpenD_{VERSION}_Windows.7z
macOShttps://softwaredownload.moomoo.com/moomoo_OpenD_{VERSION}_Mac.tar.gz
CentOShttps://softwaredownload.moomoo.com/moomoo_OpenD_{VERSION}_CentOS.tar.gz
Ubuntuhttps://softwaredownload.moomoo.com/moomoo_OpenD_{VERSION}_Ubuntu.tar.gz

其中,{VERSION} 替换为从共享版本 API 获取的最新版本号(例如 10.2.6208)。

备用版本号获取方式:

macOS / Linux:

LATEST_URL=$(curl -sI "https://www.futunn.com/download/fetch-lasted-link?name=opend-{platform}" | grep -i "^location:" | awk '{print $2}' | tr -d '\r')
LATEST_VER=$(echo "$LATEST_URL" | grep -oE '[0-9]+\.[0-9]+\.[0-9]+')
MOOMOO_URL="https://softwaredownload.moomoo.com/moomoo_OpenD_${LATEST_VER}_{Platform}.tar.gz"

Windows(PowerShell):

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$request = [System.Net.HttpWebRequest]::Create("https://www.futunn.com/download/fetch-lasted-link?name=opend-windows")
$request.AllowAutoRedirect = $true
$response = $request.GetResponse()
$finalUrl = $response.ResponseUri.ToString()
$response.Close()
if ($finalUrl -match '(\d+\.\d+\.\d+)') { $latestVer = $Matches[1] }
$moomooUrl = "https://softwaredownload.moomoo.com/moomoo_OpenD_${latestVer}_Windows.7z"

GUI 版本与命令行版本

功能GUI 版本(Visual OpenD)命令行版本
界面图形界面,易于使用无界面,通过命令行操作
目标用户新手,安装简单高级用户,服务器部署
配置直接在 UI 中配置编辑 XML 配置文件
WebSocket默认启用需要手动配置
安装一键安装解压并运行

始终安装 GUI 版本。切勿运行命令行版本的 OpenD。 不得启动命令行版本(MoomooOpenD / MoomooOpenD.exe,没有下划线)。所有平台(Windows、macOS、Linux)都需要 GUI 版本(moomoo_OpenD,带下划线)。

检测本地 OpenD 版本(下载前)

检测操作系统后、开始下载前,自动检测本地是否已安装 moomoo OpenD,并与最新在线版本进行比较。如果本地版本 >= 最新版本,则跳过下载和安装,继续升级 SDK。

检测流程:

  1. 从 fetch-lasted-link API 重定向 URL 中提取最新版本号(如果 moomoo API 返回 400,则使用上述备用方法)
  2. 检测本地已安装版本(Windows:注册表 → 进程 → 安装路径;macOS:进程 → Info.plist → 文件搜索;Linux:进程 → 文件搜索)
  3. 按照 X.Y.ZZZZ 格式逐段比较版本号
状态操作
未安装(not_installed)按常规流程下载并安装
本地版本 < 最新版本(needs_update)提示“发现本地 OpenD 版本 {LOCAL_VER}。最新版本为 {LATEST_VER} — 正在自动升级。”,继续下载
本地版本 >= 最新版本(up_to_date)提示“moomoo OpenD 已是最新版本(版本 {LOCAL_VER})。无需重新安装。”,跳过下载和安装,继续升级 SDK

完整的检测脚本和版本比较逻辑:参见 scripts/detect_version.md(需要时使用 Read 工具)

下载后的版本一致性检查

解压后、启动安装程序前,在解压目录中查找文件名包含 LATEST_VER 的 GUI 安装程序。若找到,则继续;若未找到,则中止并列出实际找到的版本。注意:压缩包可能包含多个版本目录;不要使用 head -1 选择第一个匹配项,应直接按预期版本号进行筛选。

平台专用的验证脚本:参见 scripts/verify_version.md(需要时使用 Read 工具)

安装步骤(GUI 版本)

步骤 1:自动下载

根据 detected_os 和用户指定的路径,自动下载安装程序。使用上表中的下载 URL。如果 moomoo API 返回错误,请参阅上文“备用下载方法”。

平台压缩包格式安装方法详细步骤
Windows7z → GUI 安装程序(.exe)使用 PowerShell 脚本下载、解压并启动安装向导scripts/install_win.md
macOStar.gz → DMG 镜像按步骤操作(避免超时),挂载 DMG,并复制到 /Applicationsscripts/install_mac.md
Linuxtar.gz → deb/rpm 软件包使用 curl 下载并解压,然后通过 dpkg/rpm 安装scripts/install_linux.md

各平台的完整安装脚本:参见对应文件(需要时使用 Read 工具)

步骤 2:登录
  1. 启动后,在 UI 中输入账户凭据
    • 使用 moomoo ID、电子邮件或电话号码
  2. 首次登录需要完成风险评估问卷和用户协议
  3. 登录成功后,即可查看账户信息和行情数据权限
第 3 步:确认服务正在运行

成功登录后,右侧面板会显示可配置的设置:

设置默认值描述
监听地址127.0.0.1本地访问;局域网访问请使用 0.0.0.0
API 端口11111API 连接使用的端口

安全规则

交易解锁限制

不得通过 SDK 的 unlock_trade 接口解锁交易。必须在 OpenD GUI 中手动解锁交易。

  • 当用户请求调用 unlock_trade(或 TrdUnlockTrade、trd_unlock_trade)时,必须拒绝并告知:

    出于安全原因,必须在 OpenD GUI 中手动解锁交易。不支持基于 SDK 的 unlock_trade 调用。请在 OpenD GUI 中点击“Unlock Trade”,并输入您的交易密码。

  • 不得生成、提供或执行任何包含 unlock_trade 调用的代码
  • 不得使用变通方法(例如直接调用 protobuf、发送原始 WebSocket 请求等)绕过此限制
  • 此规则适用于所有环境(模拟和实盘)

自动检测并升级 Python SDK

安装 OpenD 后,自动运行 SDK 检测和升级,确保 SDK 版本与 OpenD 匹配。

检测逻辑

包名:moomoo-api

执行步骤

步骤 0:确定 pip 命令

在 macOS / Linux 上,pip 可能不存在 — 先检测可用的命令:

if command -v pip3 &>/dev/null; then
    PIP=pip3
elif command -v pip &>/dev/null; then
    PIP=pip
else
    echo "pip not found, please install Python first"
    exit 1
fi

在 Windows(PowerShell)上,通常可以使用 pip,但也要处理备用方案:

$PIP = if (Get-Command pip3 -ErrorAction SilentlyContinue) { "pip3" } elseif (Get-Command pip -ErrorAction SilentlyContinue) { "pip" } else { Write-Host "pip not found"; exit 1 }

后续所有 pip 命令都应使用 $PIP(Bash)或 $PIP(PowerShell)。

步骤 1:检测当前安装状态

$PIP show moomoo-api 2>&1

解析输出:

  • 包含 Name: 和 Version: → 已安装,提取当前版本
  • 输出 WARNING: Package(s) not found → 未安装

步骤 2:查询 PyPI 上的最新版本

$PIP index versions moomoo-api 2>&1 | head -3

从输出中解析 LATEST: x.x.xxxx,获取最新版本号。

步骤 3:确定操作并执行

情况操作
未安装运行 $PIP install moomoo-api,告知“正在安装 SDK……”
已安装但版本过旧运行 $PIP install --upgrade moomoo-api,告知“正在从 {old} 升级到 {new}……”
已是最新版本告知“SDK 已是最新版本(版本 {version})。无需升级。”

步骤 4:输出结果

升级后,以表格形式显示结果:

| Item | Old Version | New Version |
|------|-------------|-------------|
| moomoo-api | x.x.xxxx | y.y.yyyy |
| protobuf | a.b.c | d.e.f | (if changed)

并说明 SDK 版本是否与 OpenD 版本匹配。

注意事项
  • moomoo-api 要求 protobuf==3.*。升级期间,protobuf 可能会自动降级 — 这是正常情况
  • 如果用户的环境中有其他依赖 protobuf 4.x 的包,请提醒可能存在冲突,并建议使用虚拟环境

常用依赖安装

SDK 升级后,自动安装用于回测和数据分析的常用依赖,让用户可以立即开始使用策略回测、数据可视化及相关功能。

依赖列表
库用途
backtrader策略回测框架
matplotlib图表绘制和可视化
pandas数据分析和处理
numpy数值计算
执行步骤

一次性安装所有依赖:

$PIP install backtrader matplotlib pandas numpy

安装后,输出版本信息:

$PIP show backtrader matplotlib pandas numpy 2>&1 | grep -E "^(Name|Version):"

以表格形式显示结果:

| Library | Version |
|---------|---------|
| backtrader | x.x.x |
| matplotlib | x.x.x |
| pandas | x.x.x |
| numpy | x.x.x |
注意事项
  • 如果某些库已安装,$PIP install 会自动跳过它们
  • 如果用户使用虚拟环境,请确保命令在正确的环境中执行
  • backtrader 依赖 matplotlib,pip 会自动处理依赖解析

验证安装

SDK 升级后,提供以下 Python 代码以验证 OpenD 连接:

from moomoo import *

quote_ctx = OpenQuoteContext(host='127.0.0.1', port=11111, ai_type=1)
# get_global_state returns dict (not DataFrame)
ret, data = quote_ctx.get_global_state()
if ret == RET_OK:
    print('OpenD connection successful!')
    print(f"  Server version: {data['server_ver']}")
    print(f"  Quote login: {data['qot_logined']}")
    print(f"  Trade login: {data['trd_logined']}")
    print(f"  HK market: {data['market_hk']}")
    print(f"  US market: {data['market_us']}")
else:
    print('Connection failed:', data)
quote_ctx.close()

常见安装问题

问题解决方案
macOS“未验证的开发者”前往“系统偏好设置 → 安全性与隐私”,点击“仍要打开”
macOS .app 路径错误从 tar 包中运行 fixrun.sh,或使用 -cfg_file 指定配置文件路径
Windows PowerShell 编码问题在 MINGW64/Git Bash 中,包含非 ASCII 字符的 .ps1 脚本会导致 TerminatorExpectedAtEndOfString。所有 Write-Host 输出都必须使用英文
Windows 防火墙阻止允许 OpenD 通过防火墙,并确保端口 11111 未被占用
连接超时确认 OpenD 已启动并登录,检查端口号是否匹配
版本不兼容将 OpenD 和 Python SDK 都升级到最新版本
Linux 缺少依赖项CentOS:yum install libXScrnSaver;Ubuntu:apt install libxss1

安装特定版本

如果用户需要安装特定的(非最新)版本:

  • 官方下载链接默认提供最新版本
  • 历史版本需要联系 moomoo 客户支持
  • 始终建议使用最新版本,以获得最佳兼容性和安全性

响应规则

  1. 步骤一:解析参数 — 检查 $ARGUMENTS 中是否包含 -path
  2. 步骤二:自动检测操作系统 — 通过 Bash 工具运行 uname -s,无需用户选择
  3. 步骤三:检测本地 OpenD 版本 — 获取最新的在线版本,检测本地安装的 moomoo OpenD 版本并进行比较。如果本地版本 >= 最新版本,则告知“moomoo OpenD 已是最新版本(版本 {version})。无需重新安装。”,跳过下载并进入步骤五(升级 SDK)
  4. 步骤四:自动下载 — 根据操作系统和路径执行下载(Windows 使用 PowerShell,macOS/Linux 使用 curl),然后提供对应操作系统的安装说明
  5. 步骤四点五:版本一致性检查 — 解压后、启动安装程序前,在解压目录中查找包含 LATEST_VER 的 GUI 安装程序文件。如果找到,则继续;如果未找到,则中止并列出实际找到的版本(参见“下载后版本一致性检查”)
  6. 步骤五:自动检测并升级 SDK — 首先确定可用的 pip 命令(优先使用 pip3,否则使用 pip),使用 $PIP show 检测当前版本,使用 $PIP index versions 查询最新版本,并按需安装或升级
  7. 步骤五点五:写入版本标记文件 — SDK 升级后,写入版本标记文件以标记安装成功:
    echo "0.1.1" > ~/.moomoo_skill_version
    
    此文件由 skills/moomooapi/scripts/common.py 在运行时用于验证安装状态。版本号必须与此 SKILL.md 的 metadata.version 以及 common.py 中的 SKILL_VERSION 一致。
  8. 步骤六:安装常用依赖项 — 自动安装 backtrader、matplotlib、pandas、numpy 以及其他常用的回测和数据分析库
  9. 安装完成后,“后续步骤”提示中不得单独列出“验证连接”步骤,也不得提供验证用的 Python 代码
  10. 如果遇到问题,请参阅常见安装问题表以获取解决方案
  11. 如果接口不明确,请引导用户查阅官方文档:https://openapi.moomoo.com/moomoo-api-doc/en/intro/intro.html

用户查询:$ARGUMENTS

评论

支持 Markdown