# OpenD 相關
# Q1:OpenD 因未完成“問卷評估及協議確認”自動退出
A: 您需要進行相關問卷評估及協議確認,才可以使用 OpenD,請先 前往完成。
# Q2:OpenD 因”程式內置數據不存在“退出
A: 一般因權限問題導致自帶數據拷貝失敗,可以嘗試將程式目錄下 Appdata.dat 解壓後的檔案複製到程式資料目錄下。
- windows 程式資料目錄:
%appdata%/com.futunn.FutuOpenD/F3CNN - 非 windows 程式資料目錄:
~/.com.futunn.FutuOpenD/F3CNN
# Q3:OpenD 服務啟動失敗
A: 請檢查:
- 是否有其他程式佔用所配置的端口;
- 是否已經有配置了相同端口的 OpenD 在運行。
# Q4:如何驗證手機驗證碼?
A: 在 OpenD 界面上或遠程連接至 Telnet 端口,輸入命令input_phone_verify_code -code=123456。
提示
- 123456 是收到的手機驗證碼
- -code=123456 前有空格
# Q5:是否支持其他編程語言?
A: OpenD 有對外提供基於 socket 的協議,目前我們提供並維護 Python,C++,Java,C# 和 JavaScript 接口,下載入口。
如果上述語言仍不能滿足您的需求,您可以自行整合 Protobuf 協議。
# Q6:在同一設備多次驗證設備鎖
A: 設備標識隨機生成並存放於
windows: %appdata%/com.futunn.FutuOpenD/F3CNN/Device.dat 檔案中。 非windows: ~/.com.futunn.FutuOpenD/F3CNN/Device.dat
提示
- 如果檔案被刪除或損壞,OpenD 會重新生成新設備標識,然後驗證設備鎖。
- 另外映像檔複製部署的用戶需要注意,如果多台機器的 Device.dat 內容相同,也會導致這些機器多次驗證設備鎖。刪除 Device.dat 檔案即可解決。
# Q7:OpenD 是否有提供 Docker 鏡像?
A: 目前沒有提供。
# Q8:一個賬號可以登入多個 OpenD 嗎?
A: 一個賬號可以在多台機器上登入 OpenD 或者其他客戶端,最多允許 10 個 OpenD 終端同時登入。同時有“行情互踢”的限制,只能有一個 OpenD 獲得最高權限行情。例如:兩個終端登入同一個賬號,只能有一個港股 LV2 行情,另一個是港股 BMP 行情。
# Q9:如何控制 OpenD 和其他客户端(桌面版和流動版)的行情權限?
A: 應交易所的規定,多個終端同時在線會有“行情互踢”的限制,只能有一個終端獲得最高權限行情。OpenD 命令行版本的啟動參數中,內置了 auto_hold_quote_right 參數,用於靈活配置行情權限。當該參數選項開啟時,OpenD 在行情權限被搶後,會自動搶回。如果 10 秒內再次被搶,則其他終端獲得最高行情權限(OpenD 不會再搶)。
# Q10:如何優先保證 OpenD 行情權限?
A:
- 將 OpenD 啟動參數 auto_hold_quote_right 配置為 1;
- 保證不要在流動版或桌面版富途牛牛上在 10 秒內連續兩次搶最高權限(登入算一次,點擊“重啟行情”算第二次)。
# Q11:如何優先保證流動版(或桌面版)的行情權限?
A: OpenD 啟動參數 auto_hold_quote_right 設置為 0,流動版或桌面版富途牛牛在 OpenD 之後登入即可。
# Q12:使用可視化 OpenD 記住密碼登入,長時間掛機後提示連接斷開,需要重新登入?
A: 使用可視化 OpenD,如果選擇記住密碼登入,用的是記錄在本地的令牌。由於令牌有時間限制,當令牌過期後,如果出現網絡波動或富途後台發佈,就可能導致與後台斷開連接後無法自動連接上的情況。因此,可視化 OpenD 如果希望長時間掛機,建議手動輸入密碼登入,由 OpenD 自動處理該情況。
# Q13:遇到產品缺陷,如何請富途的研發工程師排查日誌?
A:
與客服溝通問題表現,詳述:發生錯誤的時間、OpenD 版本號、 API 版本號、程式語言名稱、接口名或通訊協定編號、含詳細輸入參數和回傳的短代碼或截圖。
客服確認是產品缺陷後,如需進一步日誌排查,研發工程師會主動聯繫。
部分問題須提供 OpenD 日誌,方便定位確認問題。交易類問題需要 info 日誌級別,行情類問題需要 debug 日誌級別。日誌級別 log_level 可以在 OpenD.xml 中 配置 ,配置後需要重啟 OpenD 方能生效,待問題重現後,將該段日誌打包發給富途研發工程師。
提示
日誌路徑如下:
windows:%appdata%/com.futunn.FutuOpenD/Log
非 windows:~/.com.futunn.FutuOpenD/Log
# Q14:程式連接不上 OpenD
A: 請先嘗試檢查:
- 程式連接的端口與 OpenD 配置的端口是否一致。
- 由於 OpenD 連接上限為 128,是否有無用連接未關閉。
- 檢查監聽地址是否正確,如果腳本和 OpenD 不在同一機器,OpenD 監聽地址需要設置成 0.0.0.0 。
# Q15:連接上一段時間後斷開
A: 如果是自己整合協議,檢查下是否有定時發送心跳維持連接。
# Q16:Linux 下通過 multiprocessing 模塊以多進程方式運行 Python 腳本,連不上 OpenD?
A: Linux/Mac 環境下以預設方式創建進程後,父進程中 py-futu-api 內部創建的線程將會在子進程中消失,導致程式內部狀態錯誤。
可以用 spawn 方式來啟動進程:
import multiprocessing as mp
mp.set_start_method('spawn')
p = mp.Process(target=func)
2
3
# Q17:如何在一台電腦同時登入兩個 OpenD?
A: 可視化 OpenD 不支持,命令行 OpenD 支持。
- 解壓從官網下載的檔案,複製整個命令行 OpenD 資料夾(如 OpenD_5.2.1408_Windows)得到副本(此處以 Windows 為例,其他系統可採取相同操作)。

- 分別打開兩個命令行 OpenD 資料夾配置好兩份 OpenD.xml 檔案。
第一份配置檔案參數:api_port = 11111,login_account = 登入賬號1,login_pwd = 登入密碼1
第二份配置檔案參數:api_port = 11112,login_account = 登入賬號2,login_pwd = 登入密碼2

- 配置完成後,分別打開兩個 OpenD 程式運行。

- 調用接口時,注意接口的參數
port(OpenD 監聽端口)與 OpenD.xml 檔案中的參數api_port為對應關係
例如:
from futu import *
# 向賬號1登入的 OpenD 進行請求
quote_ctx = OpenQuoteContext(host='127.0.0.1', port=11111, is_encrypt=False)
quote_ctx.close() # 結束後記得關閉當條連接,防止連接條數用盡
# 向賬號2登入的 OpenD 進行請求
quote_ctx = OpenQuoteContext(host='127.0.0.1', port=11112, is_encrypt=False)
quote_ctx.close() # 結束後記得關閉當條連接,防止連接條數用盡
2
3
4
5
6
7
8
9
# Q18:行情權限被其他客户端踢掉,如何通過腳本執行搶權限的運維命令?
A:
- 在OpenD啟動參數中,配置好 Telnet 地址和 Telnet 端口。

- 啟動 OpenD(會同時啟動 Telnet)。
- 當發現行情權限被搶之後,您可以參考如下代碼示例,通過 Telnet,向 OpenD 發送
request_highest_quote_right命令。
from telnetlib import Telnet
with Telnet('127.0.0.1', 22222) as tn: # Telnet 地址為:127.0.0.1,Telnet 端口為:22222
tn.write(b'request_highest_quote_right\r\n')
reply = b''
while True:
msg = tn.read_until(b'\r\n', timeout=0.5)
reply += msg
if msg == b'':
break
print(reply.decode('gb2312'))
2
3
4
5
6
7
8
9
10
# Q19:OpenD 自動升級失敗
A:
通過update命令執行 OpenD 自動更新失敗,可能的原因:
- 檔案被其他進程佔用:可以嘗試關閉其他 OpenD 進程,或者重啟系統後,再次執行
update如果以上仍無法解決,可以通過官網自行下載更新。
# Q20:ubuntu22無法啟動可視化 OpenD?
A:
在有些Linux發行版(例如Ubuntu 22.04)運行可視化OpenD時,可能會提示:dlopen(): error loading libfuse.so.2。
這是因為這些系統沒有預設安裝libfuse。通常可以手動安裝來解決,例如對於Ubuntu22.04,可以在命令行運行:
sudo apt update
sudo apt install -y libfuse2
2
安裝成功後就可以正常運行可視化OpenD了。詳細資訊請參考:https://docs.appimage.org/user-guide/troubleshooting/fuse.html。
# Q21:Linux上如何在後台運行命令行OpenD?
A:先切到 FutuOpenD 所在目錄,配置好 FutuOpenD.xml 之後,執行如下命令
nohup ./FutuOpenD &


