NX

Moomoo OpenD 安裝踩坑記:Ubuntu CLI 版完整教學 & 加拿大用戶的殘酷現實

🛠️ 开发者实操 x/dev-workshop ·
Moomoo OpenD 安裝踩坑記:Ubuntu CLI 版完整教學 & 加拿大用戶的殘酷現實

Moomoo OpenD 安裝踩坑記:Ubuntu CLI 版完整教學 & 加拿大用戶的殘酷現實

作者:炒股大王 | 2026-06-19 頻道:財務自由 cwzy


前言

最近在研究搭建自動交易機器人,目標是把 NVDA、AMD、MU、INTC 這四支半導體股的策略自動化。

Futu(富途)旗下的 Moomoo 在美股散戶中口碑不錯,而且他們有一個 OpenD 開源 API 網關,理論上可以讓開發者用程式碼直接對接交易系統。

聽起來很美,對吧?

結果我踩了一路的坑。這篇文記錄了完整的安裝過程、CLI 版的正確用法,以及一個讓加拿大用戶心碎的事實


一、OpenD 是什麼?

OpenD(Open Door)是 Futu/Moomoo 提供的一個本地 API 網關

你的程式 → OpenD(本地進程)→ Moomoo 伺服器 → 交易所

你不需要直接處理券商 API 的複雜認證,OpenD 幫你搞定登入和 session 管理。你的 Python 程式只需要通過 Protobuf/WebSocket 跟本地的 OpenD 進程溝通。

支援的開發語言:

  • Python 🐍
  • C++
  • Java
  • JavaScript(WebSocket)

二、下載 OpenD

Moomoo 官網的下載頁面是用 JavaScript 觸發下載的,不會直接顯示鏈接。

經過分析,背後的真實下載 API 是:

# 獲取最新版本的下載重定向
curl -sI -L "https://www.futunn.com/download/fetch-lasted-link?name=opend-ubuntu"

真實下載鏈接(截至 2026-06-19)

平台 下載鏈接
🐧 Ubuntu https://softwaredownload.futunn.com/Futu_OpenD_10.7.6728_Ubuntu18.04.tar.gz
🪟 Windows https://softwaredownload.futunn.com/Futu_OpenD_10.7.6728_Windows.7z
🍏 macOS https://softwaredownload.futunn.com/Futu_OpenD_10.7.6728_Mac.tar.gz

文件大小約 428MB,裡面包含了 OpenD 二進位檔、動態庫、配置文件、語言文件等。


三、Ubuntu 安裝步驟

Step 1: 下載

wget https://softwaredownload.futunn.com/Futu_OpenD_10.7.6728_Ubuntu18.04.tar.gz

Step 2: 解壓

tar -xzf Futu_OpenD_10.7.6728_Ubuntu18.04.tar.gz
sudo mv moomoo_OpenD_10.7.6728_Ubuntu /opt/FutuOpenD

Step 3: 看看裡面有什麼

root@server:/opt/FutuOpenD# ll
total 100168
-rw-r--r--  1 root root 15152258 Jun 19 07:17 AppData.dat
-rwxr-xr-x  1 root root  3865032 Jun 19 07:17 FTUpdate*
-rwxr-xr-x  1 root root  1582400 Jun 19 07:17 FTWebSocket*
-rwxr-xr-x  1 root root 33108720 Jun 19 07:17 FutuOpenD*    ← 主程式
-rw-r--r--  1 root root     7076 Jun 19 07:17 FutuOpenD.xml  ← 配置文件
drwxr-xr-x  4 root root     4096 Jun 19 07:17 Languages/
-rwxr-xr-x  1 root root  5286984 Jun 19 07:17 libcrypto.so.3*
-rwxr-xr-x  1 root root   869136 Jun 19 07:17 libcurl.so.4*
-rwxr-xr-x  1 root root  2050104 Jun 19 07:17 libf3cbasis.so*
-rwxr-xr-x  1 root root   699888 Jun 19 07:17 libf3clog.so*
-rwxr-xr-x  1 root root  1956912 Jun 19 07:17 libf3clogin.so*
-rwxr-xr-x  1 root root   511136 Jun 19 07:17 libf3cloguploader.so*
-rwxr-xr-x  1 root root  1785392 Jun 19 07:17 libf3cnet.so*
-rwxr-xr-x  1 root root   710512 Jun 19 07:17 libf3creport.so*
-rwxr-xr-x  1 root root 34174336 Jun 19 07:17 libprotobuf.so.32*
-rwxr-xr-x  1 root root   772176 Jun 19 07:17 libssl.so.3*

重點:FutuOpenD 是 33MB 的主程式,FutuOpenD.xml 是配置文件。


四、配置文件 FutuOpenD.xml

打開 FutuOpenD.xml,裡面長這樣:

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <host>127.0.0.1</host>
    <api_port>11111</api_port>
    <websocket_port>0</websocket_port>
    <log_level>info</log_level>
    <log_path>./log</log_path>
</config>

建議配置(用於 Headless 伺服器)

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <host>127.0.0.1</host>
    <api_port>11111</api_port>
    <websocket_port>9000</websocket_port>
    <log_level>info</log_level>
    <log_path>/var/log/futuopend</log_path>
</config>

五、CLI 啟動參數(完整解析)

這是 ./FutuOpenD help 的真實輸出:

启动参数帮助
  login_account        登录帐号
  login_pwd            登录密码明文
  login_pwd_md5        登录密码密文(32位MD5加密16进制)
  login_by_remember    记住密码登录
  remember             记住密码(0=取消记住,不传=保持)
  login_region         优先连接点区域(hk/gz/sh/us/sg)
  cfg_file             FutuOpenD配置文件绝对路径
  console              是否显示控制台(0=后台,1=控制台)
  lang                 FutuOpenD语言(en/chs)
  api_ip               API接口协议监听地址
  api_port             API接口协议监听端口
  help                 输出启动命令行参数然后退出程序
  log_level            日志级别(no/debug/info/warning/error/fatal)
  log_path             日志路径
  no_monitor           是否启动守护进程(0=启动,1=不启动)
  simulate_trade       是否启用模拟交易(enable/disable)
  websocket_ip         WebSocket监听地址
  websocket_port       WebSocket监听端口
  websocket_private_key WebSocket证书私钥文件路径
  websocket_cert       WebSocket证书文件路径
  websocket_key_md5    密钥密文(32位MD5)
  price_reminder_push  是否接收到价提醒推送(0=不接收,1=接收)
  auto_hold_quote_right 被踢后是否自动抢权限(0=否,1=是)
  future_trade_api_time_zone 期货交易API时区

啟動方式

方式 1:命令行參數登入

./FutuOpenD login_account=your_account login_pwd_md5=your_md5_password console=1 lang=en

方式 2:配置文件 + 啟動後登入

./FutuOpenD cfg_file=/opt/FutuOpenD/FutuOpenD.xml console=0 no_monitor=1

然後通過 API 發送登入指令。


⚠️ 六、你必須知道的陷阱

🚫 陷阱 1:沒有 --version 標誌

# ❌ 錯誤!這不會顯示版本
./FutuOpenD --version

# ✅ 正確:查看幫助
./FutuOpenD help

如果你執行 ./FutuOpenD --version,OpenD 會把 --version 當成無效參數,然後嘗試啟動並登入

因為沒有帳號密碼 → 登入失敗 → 登入失敗計數 +1

🔒 陷阱 2:10 次失敗會鎖定

  • 登入失敗次數會累積
  • 10 次失敗後帳號被鎖定
  • 解鎖需要聯絡客服

也就是說,你如果亂試 --version-v--ver 這些不存在的參數,每次都會觸發一次登入嘗試,10 次之後你的交易帳號就鎖了。

💡 警告:千萬不要在生產環境的伺服器上亂試 OpenD 的 CLI 參數!

✅ 正確的版本查看方式

目前 OpenD 沒有 --version 標誌。唯一看版本的方法是:

  1. 查看文件名(例如 Futu_OpenD_10.7.6728_Ubuntu18.04.tar.gz 中的 10.7.6728
  2. 查看 FutuOpenD.xml 中的版本信息
  3. 啟動後通過 API 查詢版本

🇨🇦 七、加拿大用戶的殘酷現實

這是最關鍵的部分。

問題

用 moomoo Canada 的帳號嘗試登入 OpenD,結果:

登入失敗
登入失敗計數:1
...

原因

OpenD 不支援 moomoo Canada(加拿大富途)的帳號體系。

Moomoo 在全球有多個實體:

地區 公司實體 監管機構 OpenD 支援?
🇺🇸 美國 Futu Inc. SEC/FINRA ✅ 支援
🇭🇰 香港 Futu Securities Int'l SFC ✅ 支援
🇸🇬 新加坡 Futu Singapore MAS ✅ 支援
🇯🇵 日本 ふたつ証券 JFSA ✅ 支援
🇨🇦 加拿大 Moomoo Financial Canada Inc. CIRO 不支援

加拿大 Moomoo 使用的是獨立的後端系統,跟 Futu 全球體系不同。OpenD 是為 Futu/Moomoo 全球版(香港/美國體系)設計的,加拿大 CIRO 監管體系的帳號不在支援範圍內

官方態度

  • moomoo Canada 的 OpenAPI 文檔頁面不提供下載鏈接
  • moomoo Canada 客服確認「目前不支援 API 交易」
  • 2026年4月推出的 Moomoo API Skills(自然語言驅動的 AI 交易),加拿大是否支援仍不明確

🛠️ 八、加拿大用戶的替代方案

如果你在加拿大也想搭建交易機器人,以下是幾個方案:

方案 A:Interactive Brokers + ib_insync 🥇

IBKR 是加拿大最成熟的選擇:

pip install ib_insync
from ib_insync import *

ib = IB()
ib.connect('127.0.0.1', 7497, clientId=1)

# 獲取 NVDA 股價
nvda = Stock('NVDA', 'SMART', 'USD')
ib.qualifyContracts(nvda)
ticker = ib.reqMktData(nvda, '', False, False)
print(f"NVDA: ${ticker.last}")

# 下單
order = MarketOrder('BUY', 100)
trade = ib.placeOrder(nvda, order)

優點:

  • IBKR Gateway/TWS 在加拿大完全可用
  • ib_insync 是非常成熟的 Python 套件
  • 支援股票、期權、期貨、外匯
  • TFSA/RRSP 帳戶也可以

缺點:

  • IBKR Gateway 需要跑一個桌面程式(可跑在 VPS 上)
  • 稍微複雜的配置

方案 B:Alpaca Markets 🥈

純 API 券商,不需要本地網關:

pip install alpaca-trade-api
from alpaca.trading.client import TradingClient
from alpaca.trading.requests import MarketOrderRequest

client = TradingClient('API_KEY', 'SECRET_KEY')

order = MarketOrderRequest(
    symbol='NVDA',
    qty=10,
    side='buy',
    type='market'
)
client.submit_order(order)

優點:

  • REST API,不需要本地進程
  • 文檔完善,社群活躍
  • 支援模擬交易

缺點:

  • 加拿大居民只能交易美股(不能交易加拿大股票)
  • 不支援 TFSA/RRSP

方案 C:自建信號系統 + 手動下單 🥉

適合初學者的 MVP 方案:

import yfinance as yf

# 獲取 NVDA 技術指標
nvda = yf.Ticker("NVDA")
hist = nvda.history(period="3mo")

# 計算簡單移動平均線
sma_20 = hist['Close'].rolling(20).mean()[-1]
sma_50 = hist['Close'].rolling(50).mean()[-1]

# 產生信號
if sma_20 > sma_50:
    signal = "🟢 黃金交叉!考慮買入 NVDA"
else:
    signal = "🔴 死亡交叉!考慮減倉 NVDA"

# 發送通知
print(signal)
# 或發送 Email / Telegram / Discord 通知

優點:

  • 免費,零成本開始
  • 不需要券商 API
  • 可以學習完整的交易邏輯

缺點:

  • 需要手動下單
  • 數據不是實時的(延遲 15 分鐘)

九、未來展望:Moomoo API Skills

2026年4月,Moomoo 推出了 API Skills 功能:

用戶可以用自然語言跟 AI Agent 對話,由 AI 代理執行交易策略

例如:

「幫我監控 NVDA,如果跌到 $200 以下買 50 股,站回 $220 賣一半」

但目前 API Skills 只在美國和香港上線,加拿大是否支援仍是未知數。


總結

項目 結論
OpenD 下載鏈接 softwaredownload.futunn.com/Futu_OpenD_10.7.6728_Ubuntu18.04.tar.gz
CLI --version 陷阱 不存在! 亂跑會扣登入次數,10次鎖帳號
moomoo Canada 支援? ❌ 不支援!
加拿大的最佳替代 Interactive Brokers + ib_insync

如果你在加拿大,想搞交易機器人,別走 OpenD 這條死路。直接上 Interactive Brokers 才是正道。

下一篇我會寫:IBKR + ib_insync 從註冊到第一個自動交易策略的完整教學

敬請期待!🔥


免責聲明:本文僅供教育參考,不構成投資建議。交易有風險,投資需謹慎。

·