Futu API(一)- 准备 FutuOpenD

1,274 阅读4分钟

前言

之前写了 Backtrader 的几篇文章,大概会用了,下面就是用真实数据模拟了。在找数据的过程中笔者发现了富途证券竟然有 OpenAPI,不但能读数据,还能自动交易(就是费用有点贵),真是太贴心了。那还等什么,先跟着它的新手文档走一遍试试,搞起~~

本地测试

按照 官网 的介绍:

Futu OpenAPI 由 FutuOpenD 和 Futu API 组成:

  • FutuOpenD 是 Futu API 的网关程序,运行于您的本地电脑或云端服务器,负责中转协议请求到富途后台,并将处理后的数据返回。
  • Futu API 是富途为主流的编程语言(Python、Java、C#、C++、JavaScript)封装的 API SDK,以方便您调用,降低策略开发难度。如果您希望使用的语言没有在上述之列,您仍可自行对接裸协议,完成策略开发。

学习讲究个循序渐进,所以我们先试试可视化的工具,来快速体验一下它的用法和功能。

安装 FutuOpenD

GUI 版

按照 文档 说明,下载压缩包,并选择有 GUI 字样的那个文件夹,按照说明启动 APP。

这里注意,文档中说如果监听地址选择了 0.0.0.0 那就得搞 SSL 证书 HTTPS 那套东西了,为了快速体验,我们选择 127.0.0.1 即可。

命令行版

也要在官网下载压缩包,选择没有 GUI 字样的那个文件夹,按照 说明 做如下操作:

  1. 修改 FutuOpenD.xml 文件当中的参数,尤其是 login_account 和 login_pwd。当然你也可以用命令行参数来传入这两个值;
  2. 运行 FutuOpenD,注意,如果你输入的 login_account 是你的手机号,那么你会看到这样的提示,等你输入验证码
正在请求手机验证码
请求手机验证码成功
命令提示: input_phone_verify_code -code=123456
>>>

这时候你需要完整输入 input_phone_verify_code -code=xxxxxx 这个命令才可以,只输入 xxxxxx 是不行的。

OK,如果你看到了 必要数据准备完毕 类似的字样,就证明你已经成功启动了 FutuOpenD。

安装 Futu API

以 Python 为例,安装命令:

pip install futu-api TA-Lib

运行 Demo

新建个 demo.py 文件,填充如下内容,运行。

from futu import *

quote_ctx = OpenQuoteContext(host='127.0.0.1', port=11111)  # 创建行情对象
print(quote_ctx.get_market_snapshot('HK.00700'))  # 获取港股 HK.00700 的快照数据
quote_ctx.close() # 关闭对象,防止连接条数用尽


trd_ctx = OpenSecTradeContext(host='127.0.0.1', port=11111)  # 创建交易对象
print(trd_ctx.place_order(price=500.0, qty=100, code="HK.00700", trd_side=TrdSide.BUY, trd_env=TrdEnv.SIMULATE))  # 模拟交易,下单(如果是真实环境交易,在此之前需要先解锁交易密码)

trd_ctx.close()  # 关闭对象,防止连接条数用尽

如果看到了腾讯股票信息,就证明成了。

服务器安装

安装 FutuOpenD

以 ubuntu 为例:

curl -O https://softwarefile.futunn.com/FutuOpenD_6.3.2808_NN_Ubuntu16.04.tar.gz
tar -xzf FutuOpenD.tar.gz

然后修改 FutuOpenD.xml 中的 ip0.0.0.0,再修改 login_account 和 login_pwd,运行 ./FutuOpenD 启动,具体参考上文的 本地测试 部分。

注意,如果是云服务器,记得把 11111 端口的访问权限给放开,否则本地运行 demo.py 是连接不上的。通常是在安全组之类的配置里,不一样的云服务不一样,各位找找看吧。

然后修改一下 demo.py 中的 host 地址为你的服务器公网 ip,运行测试一下。如果成功了,那基本就完成了。如果不成功,那只能根据各种提示信息找问题了。

最后,通常在你成功登录一次之后,就不需要再输入手机验证码什么的了。所以这个时候可以用守护进程来执行,这样就可以挂在那不管了。具体命令为:nohup ./FutuOpenD &

如果想要停止,那就需要 ps -aux | grep FutuOpenD 来看一下它的进程 ID,然后 kill 掉了。

总结

基础设施算是搭建完了,剩下的就是写 Futu API 具体的应用脚本了,也就是监听股票价格变动并且触发自动交易的逻辑。这个还需要研究一下,打算另起一篇细说,这边文章就先说到这里了。

翻过一座墙最好的方式,就是把鞋子扔过去。
不扔鞋子,总是有各种借口,退路,有各种执行力低下的理由。
扔了鞋子,就只能爬过去了,执行力暴涨,一定可以爬过去。—— 一堂 Trueman