# 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:
通过 QQ/微信,联系 OpenAPI 研发人员,方便即时沟通和传输文件。
详述:发生错误的时间、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:
- 配置好 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。