├── doc_maker
├── makehtml.bat
├── source
│ ├── _static
│ │ ├── AES.png
│ │ ├── API.png
│ │ ├── MD5.png
│ │ ├── proto.png
│ │ ├── Download.png
│ │ ├── JavaAPI.png
│ │ ├── NETAPI.png
│ │ ├── UIConfig.png
│ │ ├── encrypt.png
│ │ ├── FutuOpenD.png
│ │ ├── MoreConfig.png
│ │ ├── Structure.png
│ │ ├── futunn.com.png
│ │ ├── installer.png
│ │ ├── req-verify.png
│ │ ├── websocket.png
│ │ ├── FTOpenDConfig.png
│ │ ├── download-QQ.png
│ │ ├── git-download.png
│ │ ├── login-command.png
│ │ ├── quota-table.png
│ │ ├── quote_right.png
│ │ ├── version-Switching-paste.png
│ │ ├── version-Switching-path.png
│ │ ├── version-Switching-pycharm.png
│ │ ├── powershell-install-futuquant.png
│ │ ├── version-Switching-verification.png
│ │ ├── css
│ │ │ └── myStyle.css
│ │ └── file
│ │ │ ├── openssl.cnf
│ │ │ ├── cer
│ │ │ └── key
│ ├── _templates
│ │ └── layout.html
│ ├── javascript
│ │ ├── start.rst
│ │ ├── intro.rst
│ │ ├── Trade_API.rst
│ │ └── Quote_API.rst
│ ├── cpp
│ │ ├── intro.rst
│ │ ├── start.rst
│ │ ├── trd.rst
│ │ ├── base.rst
│ │ └── qot.rst
│ ├── java
│ │ ├── intro.rst
│ │ ├── start.rst
│ │ ├── Trade_API.rst
│ │ ├── Base_API.rst
│ │ └── Quote_API.rst
│ ├── net
│ │ ├── intro.rst
│ │ ├── start.rst
│ │ ├── Trade_API.rst
│ │ ├── Base_API.rst
│ │ └── Quote_API.rst
│ ├── intro
│ │ ├── intro.rst
│ │ └── FutuOpenDGuide.rst
│ ├── index.rst
│ ├── api
│ │ ├── setup.rst
│ │ └── intro.rst
│ ├── conf.py
│ ├── q&a
│ │ └── Q&A.rst
│ └── protocol
│ │ ├── trade_protocol.rst
│ │ └── intro.rst
├── readme.rst
├── Makefile
└── make.bat
├── README.md
├── .gitignore
└── .idea
└── vcs.xml
/doc_maker/makehtml.bat:
--------------------------------------------------------------------------------
1 | cd /d %~dp0
2 | make.bat html
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | https://openapi.futunn.com/futu-api-doc/
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # futu-api-doc项目ignore配置
2 | doc_maker/build/
3 |
4 |
--------------------------------------------------------------------------------
/doc_maker/source/_static/AES.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FutunnOpen/futu-api-doc/HEAD/doc_maker/source/_static/AES.png
--------------------------------------------------------------------------------
/doc_maker/source/_static/API.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FutunnOpen/futu-api-doc/HEAD/doc_maker/source/_static/API.png
--------------------------------------------------------------------------------
/doc_maker/source/_static/MD5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FutunnOpen/futu-api-doc/HEAD/doc_maker/source/_static/MD5.png
--------------------------------------------------------------------------------
/doc_maker/source/_static/proto.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FutunnOpen/futu-api-doc/HEAD/doc_maker/source/_static/proto.png
--------------------------------------------------------------------------------
/doc_maker/source/_static/Download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FutunnOpen/futu-api-doc/HEAD/doc_maker/source/_static/Download.png
--------------------------------------------------------------------------------
/doc_maker/source/_static/JavaAPI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FutunnOpen/futu-api-doc/HEAD/doc_maker/source/_static/JavaAPI.png
--------------------------------------------------------------------------------
/doc_maker/source/_static/NETAPI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FutunnOpen/futu-api-doc/HEAD/doc_maker/source/_static/NETAPI.png
--------------------------------------------------------------------------------
/doc_maker/source/_static/UIConfig.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FutunnOpen/futu-api-doc/HEAD/doc_maker/source/_static/UIConfig.png
--------------------------------------------------------------------------------
/doc_maker/source/_static/encrypt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FutunnOpen/futu-api-doc/HEAD/doc_maker/source/_static/encrypt.png
--------------------------------------------------------------------------------
/doc_maker/source/_static/FutuOpenD.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FutunnOpen/futu-api-doc/HEAD/doc_maker/source/_static/FutuOpenD.png
--------------------------------------------------------------------------------
/doc_maker/source/_static/MoreConfig.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FutunnOpen/futu-api-doc/HEAD/doc_maker/source/_static/MoreConfig.png
--------------------------------------------------------------------------------
/doc_maker/source/_static/Structure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FutunnOpen/futu-api-doc/HEAD/doc_maker/source/_static/Structure.png
--------------------------------------------------------------------------------
/doc_maker/source/_static/futunn.com.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FutunnOpen/futu-api-doc/HEAD/doc_maker/source/_static/futunn.com.png
--------------------------------------------------------------------------------
/doc_maker/source/_static/installer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FutunnOpen/futu-api-doc/HEAD/doc_maker/source/_static/installer.png
--------------------------------------------------------------------------------
/doc_maker/source/_static/req-verify.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FutunnOpen/futu-api-doc/HEAD/doc_maker/source/_static/req-verify.png
--------------------------------------------------------------------------------
/doc_maker/source/_static/websocket.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FutunnOpen/futu-api-doc/HEAD/doc_maker/source/_static/websocket.png
--------------------------------------------------------------------------------
/doc_maker/source/_static/FTOpenDConfig.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FutunnOpen/futu-api-doc/HEAD/doc_maker/source/_static/FTOpenDConfig.png
--------------------------------------------------------------------------------
/doc_maker/source/_static/download-QQ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FutunnOpen/futu-api-doc/HEAD/doc_maker/source/_static/download-QQ.png
--------------------------------------------------------------------------------
/doc_maker/source/_static/git-download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FutunnOpen/futu-api-doc/HEAD/doc_maker/source/_static/git-download.png
--------------------------------------------------------------------------------
/doc_maker/source/_static/login-command.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FutunnOpen/futu-api-doc/HEAD/doc_maker/source/_static/login-command.png
--------------------------------------------------------------------------------
/doc_maker/source/_static/quota-table.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FutunnOpen/futu-api-doc/HEAD/doc_maker/source/_static/quota-table.png
--------------------------------------------------------------------------------
/doc_maker/source/_static/quote_right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FutunnOpen/futu-api-doc/HEAD/doc_maker/source/_static/quote_right.png
--------------------------------------------------------------------------------
/doc_maker/source/_static/version-Switching-paste.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FutunnOpen/futu-api-doc/HEAD/doc_maker/source/_static/version-Switching-paste.png
--------------------------------------------------------------------------------
/doc_maker/source/_static/version-Switching-path.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FutunnOpen/futu-api-doc/HEAD/doc_maker/source/_static/version-Switching-path.png
--------------------------------------------------------------------------------
/doc_maker/source/_static/version-Switching-pycharm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FutunnOpen/futu-api-doc/HEAD/doc_maker/source/_static/version-Switching-pycharm.png
--------------------------------------------------------------------------------
/doc_maker/source/_static/powershell-install-futuquant.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FutunnOpen/futu-api-doc/HEAD/doc_maker/source/_static/powershell-install-futuquant.png
--------------------------------------------------------------------------------
/doc_maker/source/_static/version-Switching-verification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FutunnOpen/futu-api-doc/HEAD/doc_maker/source/_static/version-Switching-verification.png
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/doc_maker/source/_static/css/myStyle.css:
--------------------------------------------------------------------------------
1 | /* sphinx_rtd_theme version 0.4.2 | MIT license */
2 | /* Built 20181005 13:10 */
3 |
4 | .strike {
5 | text-decoration: line-through;
6 | }
7 | .red-strengthen {
8 | color:#FF0000;
9 | }
--------------------------------------------------------------------------------
/doc_maker/source/_templates/layout.html:
--------------------------------------------------------------------------------
1 | {% extends "!layout.html" %}
2 | {% set css_files = css_files + ["_static/css/myStyle.css"] %}
3 | {% block footer %}
4 | {{ super() }}
5 |
8 | {% endblock %}
9 |
--------------------------------------------------------------------------------
/doc_maker/readme.rst:
--------------------------------------------------------------------------------
1 | ==================
2 | futu-api 文档指南
3 | ==================
4 |
5 | futu-api-doc使用Sphinx进行文档编写。
6 |
7 | Requirements
8 | ------------
9 |
10 | - pandoc: `pandoc安装 `_
11 | - Sphinx
12 | - sphinx_rtd_theme
13 |
14 | .. code:: bash
15 | pip install Sphinx sphinx_rtd_theme
16 |
17 | Usage
18 | -----
19 |
20 | - make html: 编译文档并在{project}/docs/build下生成html
21 |
22 | - make htmlview: 本地查看文档
23 |
24 | - make clean: 清空build目录下文件
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/doc_maker/Makefile:
--------------------------------------------------------------------------------
1 | # Minimal makefile for Sphinx documentation
2 | #
3 |
4 | # You can set these variables from the command line.
5 | SPHINXOPTS =
6 | SPHINXBUILD = sphinx-build
7 | SPHINXPROJ = futu-api-doc
8 | SOURCEDIR = source
9 | BUILDDIR = build
10 |
11 | # Put it first so that "make" without argument is like "make help".
12 | help:
13 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
14 |
15 | .PHONY: help Makefile
16 |
17 | # Catch-all target: route all unknown targets to Sphinx using the new
18 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
19 | %: Makefile
20 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
--------------------------------------------------------------------------------
/doc_maker/source/_static/file/openssl.cnf:
--------------------------------------------------------------------------------
1 | [req]
2 | distinguished_name = req_distinguished_name
3 | req_extensions = v3_req
4 |
5 | [req_distinguished_name]
6 | countryName = Country Name (2 letter code)
7 | countryName_default = CN
8 | stateOrProvinceName = State or Province Name (full name)
9 | stateOrProvinceName_default = GD
10 | localityName = Locality Name (eg, city)
11 | localityName_default = SZ
12 | organizationalUnitName = Organizational Unit Name (eg, section)
13 | organizationalUnitName_default = futu
14 | commonName = Common Name (e.g. server FQDN or YOUR name)
15 | commonName_default = localhost
16 | commonName_max = 64
17 |
18 | [v3_req]
19 | basicConstraints = critical, CA:true
20 | keyUsage = nonRepudiation, digitalSignature, keyEncipherment
21 | subjectAltName = @alt_names
22 |
23 | [alt_names]
24 | IP.1 = 127.0.0.1
25 | DNS.1 = localhost
--------------------------------------------------------------------------------
/doc_maker/make.bat:
--------------------------------------------------------------------------------
1 | @ECHO OFF
2 |
3 | pushd %~dp0
4 |
5 | REM Command file for Sphinx documentation
6 |
7 | if "%SPHINXBUILD%" == "" (
8 | set SPHINXBUILD=sphinx-build
9 | )
10 | set SOURCEDIR=source
11 | set BUILDDIR=build
12 | set SPHINXPROJ=futu-api-doc
13 |
14 | if "%1" == "" goto help
15 |
16 | %SPHINXBUILD% >NUL 2>NUL
17 | if errorlevel 9009 (
18 | echo.
19 | echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
20 | echo.installed, then set the SPHINXBUILD environment variable to point
21 | echo.to the full path of the 'sphinx-build' executable. Alternatively you
22 | echo.may add the Sphinx directory to PATH.
23 | echo.
24 | echo.If you don't have Sphinx installed, grab it from
25 | echo.http://sphinx-doc.org/
26 | exit /b 1
27 | )
28 |
29 | %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
30 | goto end
31 |
32 | :help
33 | %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
34 |
35 | :end
36 | popd
37 |
--------------------------------------------------------------------------------
/doc_maker/source/_static/file/cer:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIIC7jCCAdagAwIBAgIJAP0iGaCXryEwMA0GCSqGSIb3DQEBCwUAMBIxEDAOBgNV
3 | BAMTB0Z1dHUgQ0EwHhcNMTkxMTIyMTIwMTI3WhcNNDcwNDA5MTIwMTI3WjASMRAw
4 | DgYDVQQDEwdGdXR1IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
5 | 1V1P1YzlslhRyOa0W3gQKS02PnTkQVuEhCN29TzcmkRYNOmulebnvVhkTTW4ZtPZ
6 | 8NAE8PuBsn8BXA7x0fu37QZ+winykFOJtn6WZsE02AfSw0flwR5FiTrX4VztW1og
7 | g0+J3RgIPmhlVl09DEpOzHtKTSZ/hmPE6dARlaM33BG9AvHUyvsYgXeEzuDG5k/Z
8 | 5G0kYLrtidiMDY3rDTRv4vnErEQHq9fHCXQD3p5m4QVU3C/VFtG7tscOdHYQAkHZ
9 | bGO/Fz0JinrVfOOFULITu61SGdFcsBZNujwXHa91cGG+oY6Li0u84JsVAzjTlmo1
10 | TCcOKrVXtl1Nxe83QMqxFwIDAQABo0cwRTAPBgNVHRMBAf8EBTADAQH/MAsGA1Ud
11 | DwQEAwIF4DAlBgNVHREEHjAchwSsEkZGhwR/AAABgg5hcGkuZnV0dW5uLmRldjAN
12 | BgkqhkiG9w0BAQsFAAOCAQEAONcq7pW2jEuBpnnotrueyrdP1wFRN1J0s4Zu0JCs
13 | ZcgeYwy3NdtascGuXO6dRZsgQiwH9eGtfsSozBpojXpAugX4r7ggUFA0rycR/tID
14 | 4eBpIoeIbZglIezSTxEpIPCeH2jm7UXOqJ/xPUQctFKygP1mGXF9Va4ZGnFbnVeJ
15 | 8v5dS8V+s7dA4mZKthzXJYi5rZtioHIvAGSh68QabL45y4ECgCIgI7LGjHU1/Ltv
16 | YH56RUo0zxmS4hGaTwwhGnH/0jnaEWEDhyTgCNcShDd4wklkDN2/jGFJoGgC+4Ay
17 | +XD7JCIv8IA8CSV5jSKpwf3iFh5SHaOM1GeMekNwKGGXPQ==
18 | -----END CERTIFICATE-----
19 |
--------------------------------------------------------------------------------
/doc_maker/source/javascript/start.rst:
--------------------------------------------------------------------------------
1 | .. note::
2 |
3 | Futu OpenAPI 文档已于2020年10月16日全新升级,请移步至 `新文档 `_
4 |
5 | 旧的github文档将不再更新,并于2020年11月16日正式停止访问。
6 |
7 | --------
8 | 快速上手
9 | --------
10 |
11 | ------------------------------
12 |
13 | ----------
14 | 环境搭建
15 | ----------
16 |
17 | .. note::
18 |
19 | * 建议chrome 70版本或以上
20 |
21 | ------------
22 | 代码快速入门
23 | ------------
24 |
25 |
26 | .. code-block:: js
27 |
28 | import ftWebsocket from "@/components/ft-websocket/main.js";
29 | this.websocket = new ftWebsocket();
30 | //参数1指定监听地址
31 | //参数2指定Websocket服务端口
32 | //参数3指定是否启用SSL,如果需要启用则需要在FutuOpenD配置相关选项
33 | //参数4指定连接的密钥,否则会连接超时,密钥在在FutuOpenD可配置,UI在不指定的情况下会随机指定
34 | this.websocket.start("127.0.0.1", 33333, false, null);
35 |
36 |
37 | .. code-block:: js
38 |
39 | //获取帐号列表
40 | GetAccList() {
41 | const req = {
42 | c2s: {
43 | userID: 0
44 | }
45 | };
46 | this.websocket
47 | .GetAccList(req)
48 | .then(response => {
49 | console.log(response);
50 | })
51 | .catch(error => {
52 | console.log("error:", error);
53 | });
54 | },
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/doc_maker/source/javascript/intro.rst:
--------------------------------------------------------------------------------
1 | .. note::
2 |
3 | Futu OpenAPI 文档已于2020年10月16日全新升级,请移步至 `新文档 `_
4 |
5 | 旧的github文档将不再更新,并于2020年11月16日正式停止访问。
6 |
7 |
8 | .. role:: strike
9 | :class: strike
10 | .. role:: red-strengthen
11 | :class: red-strengthen
12 |
13 | =====
14 | 介绍
15 | =====
16 |
17 | .. _FutuOpenD: ../intro/FutuOpenDGuide.html
18 | .. _intro: ../intro/intro.html
19 | .. _GetGlobalState: ../protocol/base_define.html#getglobalstate-proto-1002
20 |
21 | JavaScript WebSocket API简介
22 | -------------
23 | * JavaScript WebSocket API依赖FutuOpenD网关客户端,需要先运行登录 FutuOpenD_ , 并且在xml里面配置websocket_port选择。
24 |
25 | * Sample提供了几个简单的行情和交易获取demo,可以用于上手学习。
26 |
27 | * 具体支持交易和行情品种参考\ `FutuOpenD网关客户端简介 <../intro/intro.html>`_
28 |
29 | * `下载入口 `_
30 |
31 | 接口框架
32 | -------------
33 | * 为了保证性能最大,我们的中间层采用C++编写,然后提供JavaScript接口调用层
34 |
35 | .. image:: ../_static/websocket.png
36 |
37 | 代码结构
38 | -------------
39 |
40 | .. code-block:: text
41 |
42 | |-- js
43 | | |-- src
44 | | | |-- ft-websocket
45 | | | | |-- main.js
46 | | | | |-- base.js
47 | | | | |-- proto
48 |
49 | 调用须知
50 | -------------
51 | * 所有接口以异步回调方式完成
52 | * 中间层已经发送连接初始化协议,因此JavaScript接口不需重复调用
53 | * 交易协议中Common.PacketID需要用到连接ID,该信息可以在2.14及以上版本FutuOpenD的 GetGlobalState_ 协议回包中获取
54 |
55 |
--------------------------------------------------------------------------------
/doc_maker/source/cpp/intro.rst:
--------------------------------------------------------------------------------
1 | .. note::
2 |
3 | Futu OpenAPI 文档已于2020年10月16日全新升级,请移步至 `新文档 `_
4 |
5 | 旧的github文档将不再更新,并于2020年11月16日正式停止访问。
6 |
7 |
8 | .. role:: strike
9 | :class: strike
10 | .. role:: red-strengthen
11 | :class: red-strengthen
12 |
13 | ====
14 | 介绍
15 | ====
16 |
17 | .. _FutuOpenD: ../intro/FutuOpenDGuide.html
18 | .. _intro: ../intro/intro.html
19 |
20 |
21 | Cpp API简介
22 | -------------
23 | * Cpp API依赖FutuOpenD网关客户端,需要先运行登录 FutuOpenD_
24 |
25 | * Sample提供了几个简单的行情和交易获取demo,可以用于上手学习。
26 |
27 | * 具体支持交易和行情品种参考\ `FutuOpenD网关客户端简介 <../intro/intro.html>`_
28 |
29 | * `下载入口 `_
30 |
31 | 接口框架
32 | -------------
33 | * FTAPIChannel是C接口,供Cpp,Java,C#等语言底层调用,提供连接创建销毁,初始化,加密解密功能,是连接到FutuOpenD的底层通道。
34 | * FTAPIChannel可用于各种编译选项无需重新编译,该模块提供动态库不提供源码。
35 | * FTAPI在FTAPIChannel基础上新增了一些业务上的收发接口,提供源码,打包静态库方便使用。
36 | * Windows下FTAPI静态库使用VS2013 /MT编译,如需使用更高编译平台版本、/MD、动态库等,需自行编译FTAPI以及\ `Google Protobuf `_ (3.5.1)。
37 | * 请保证使用API的工程,API库,Protobuf库编译选项一致。
38 | * Src/protobuf目录下打包有Google Protobuf(3.5.1)源码,如需编译请参考该目录下"pb库编译说明.txt"。
39 |
40 | 代码结构
41 | -------------
42 |
43 | .. code-block:: text
44 |
45 | |-- Bin API所需的动态静态库,包括API通道动态库,pb静态库,API静态库。
46 | |-- Include API头文件
47 | |-- Src API源码
48 | `-- Sample 演示demo
49 |
50 | 调用须知
51 | -------------
52 | * FTSPI_Conn、FTSPI_Qot、FTSPI_Trd调用和回调会在不同线程,注意线程安全问题。
53 |
54 | * 所有接口以异步回调方式完成
55 |
--------------------------------------------------------------------------------
/doc_maker/source/java/intro.rst:
--------------------------------------------------------------------------------
1 | .. note::
2 |
3 | Futu OpenAPI 文档已于2020年10月16日全新升级,请移步至 `新文档 `_
4 |
5 | 旧的github文档将不再更新,并于2020年11月16日正式停止访问。
6 |
7 |
8 | .. role:: strike
9 | :class: strike
10 | .. role:: red-strengthen
11 | :class: red-strengthen
12 |
13 | ====
14 | 介绍
15 | ====
16 |
17 | .. _FutuOpenD: ../intro/FutuOpenDGuide.html
18 | .. _intro: ../intro/intro.html
19 |
20 |
21 | Java API简介
22 | -------------
23 | * Java API依赖FutuOpenD网关客户端,需要先运行登录 FutuOpenD_
24 |
25 | * Java API开源了调用库代码,FTAPI4J采用IntelliJ编译,要求OpenJDK 8(Windows下需要32位JDK,Linux和Mac需要64位JDK)。用户可以根据需要采用更新的JDK版本升级源码后编译目标调用库。
26 |
27 | * Sample提供了几个简单的行情和交易获取demo,可以用于上手学习。
28 |
29 | * 具体支持交易和行情品种参考\ `FutuOpenD网关客户端简介 <../intro/intro.html>`_
30 |
31 | * `下载入口 `_
32 |
33 | 接口框架
34 | -------------
35 | * 为了保证性能最大,我们的中间层采用C++编写,然后提供Java接口调用层
36 |
37 | .. image:: ../_static/JavaAPI.png
38 |
39 | .. note::
40 | 因为涉及到底层Native线程和Java线程回调的问题,回调时需要特别注意自己的代码所处的线程。建议简单过滤后,把消息抛到上层主线程处理。
41 |
42 | 代码结构
43 | -------------
44 |
45 | .. code-block:: text
46 |
47 | |-- lib 所有依赖的库,包含第3方库和API库。即用户不必自己生成API库。
48 | |-- src/com/futu/openapi
49 | | |-- FTCAPI.java Native接口导入类
50 | | `-- pb pb自动生成文件,用于组包解包pb
51 | | |-- FTAPI_Trd.java 交易接口和交易操作函数
52 | | |-- FTAPI_Qot.java 行情接口和交易操作函数
53 | | |-- FTAPI.java 连接层接口
54 | |
55 | `-- sample 演示demo
56 |
57 | 调用须知
58 | -------------
59 | * FTSPI_Conn、FTSPI_Qot、FTSPI_Trd调用和回调会在不同线程,注意线程安全问题。
60 |
61 | * 所有接口以异步回调方式完成
62 |
63 | * 运行时需要将lib下对应操作系统的FTAPIChannel动态库复制到程序运行目录下。
64 |
--------------------------------------------------------------------------------
/doc_maker/source/net/intro.rst:
--------------------------------------------------------------------------------
1 | .. note::
2 |
3 | Futu OpenAPI 文档已于2020年10月16日全新升级,请移步至 `新文档 `_
4 |
5 | 旧的github文档将不再更新,并于2020年11月16日正式停止访问。
6 |
7 |
8 | .. role:: strike
9 | :class: strike
10 | .. role:: red-strengthen
11 | :class: red-strengthen
12 |
13 | =====
14 | 介绍
15 | =====
16 |
17 | .. _FutuOpenD: ../intro/FutuOpenDGuide.html
18 | .. _intro: ../intro/intro.html
19 |
20 |
21 | .NET API简介
22 | -------------
23 | * .NET API依赖FutuOpenD网关客户端,需要先运行登录 FutuOpenD_
24 |
25 | * .NET API开源了调用库代码,FTAPI4Net.sln采用VS2013编译,要求平台.NET Framework 4.5。或者FTAPI4NetCore.sln采用VS2017编译,采用NetCore2.1。Windows下使用32位.Net,Linux和Mac使用64位.NET。 用户可以根据需要采用更新的VS版本升级源码后编译目标调用库
26 |
27 | * Sample提供了几个简单的行情和交易获取demo,可以用于上手学习。
28 |
29 | * 具体支持交易和行情品种参考\ `FutuOpenD网关客户端简介 <../intro/intro.html>`_
30 |
31 | * `下载入口 `_
32 |
33 | 接口框架
34 | -------------
35 | * 为了保证性能最大,我们的中间层采用C++编写,然后提供C#接口调用层
36 |
37 | .. image:: ../_static/NETAPI.png
38 |
39 | .. note::
40 | 因为涉及到底层Native线程和.NET线程回调的问题,回调时需要特别注意自己的代码所处的线程。建议简单过滤后,把消息抛到上层主线程处理。
41 |
42 | 代码结构
43 | -------------
44 |
45 | .. code-block:: text
46 |
47 | |-- FTAPI4Net
48 | | |-- lib 所有依赖的库,包含第3方库和API库。即用户不必自己生成API库。
49 | | |-- FTCAPI.cs Native接口导入类
50 | | |-- pb pb自动生成文件,用于组包解包pb
51 | | |-- FTAPI_Trd.cs 交易接口和交易操作函数
52 | | |-- FTAPI_Qot.cs 行情接口和交易操作函数
53 | | |-- FTAPI.cs 连接层接口
54 | |
55 | `-- Sample 演示demo
56 |
57 | 调用须知
58 | -------------
59 | * FTSPI_Conn、FTSPI_Qot、FTSPI_Trd调用和回调会在不同线程,注意线程安全问题。
60 |
61 | * 所有接口以异步回调方式完成
62 |
63 | * 运行时需要将lib下对应操作系统的FTAPIChannel动态库复制到程序运行目录下。
64 |
65 |
--------------------------------------------------------------------------------
/doc_maker/source/intro/intro.rst:
--------------------------------------------------------------------------------
1 | .. note::
2 |
3 | Futu OpenAPI 文档已于2020年10月16日全新升级,请移步至 `新文档 `_
4 |
5 | 旧的github文档将不再更新,并于2020年11月16日正式停止访问。
6 |
7 |
8 | .. _FutuOpenD: FutuOpenDGuide.html
9 |
10 | 介绍
11 | ========
12 | futu-api提供了交易和行情接口,可以满足个人开发者使用富途牛牛软件进行程序化投资的需求。
13 |
14 | -----------------------------------------------------------------------------------
15 |
16 | 主要功能
17 | ----------
18 |
19 | 交易品种:
20 | ::
21 |
22 | 1. 港股:正股、ETF、窝轮、牛熊证、界内证、期货、期权
23 | 2. 美股:正股、ETF、期权、期货
24 | 3. A股:可通过A股通交易部分A股
25 |
26 | 行情数据:
27 | ::
28 |
29 | 1. 港股:正股、ETF、窝轮、牛熊证、界内证、期货、期权、指数、板块
30 | 2. 美股:正股、ETF、期权
31 | 3. A股:正股、ETF、指数、板块
32 |
33 | 行情数据获取方式:
34 | ::
35 |
36 | 支持订阅并接收实时报价、实时K线、实时逐笔、实时摆盘等数据推送
37 | 支持获取市场快照,历史K线等
38 |
39 | 特点
40 | -----
41 | ====================== =================================================================================
42 | 高效的执行 配合 FutuOpenD_ ,一行简单的命令就可以执行您的策略
43 | 活跃的社区 富途牛牛圈、QQ群和众多牛人一起分享心得
44 | 丰富的接口 港股、A股行情数据获取、港美股实盘交易、A股通实盘交易以及港美A模拟交易
45 | 跨平台支持 兼容 Windows / Mac OS / Linux
46 | ====================== =================================================================================
47 |
48 |
49 | --------------
50 |
51 | 系统架构
52 | --------
53 |
54 | 简介
55 | ~~~~~
56 |
57 | 使用futu-api时,需在本地或云端启动网关程序 FutuOpenD_,该程序以自定义TCP协议的方式对外暴露接口,
58 | 该协议接口与编程语言无关, 为方便使用,针对不同编程语言,富途封装了对应语言的API SDK供第三方使用
59 |
60 |
61 | 第三方应用与 FutuOpenD_ 通讯架构
62 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
63 |
64 | .. image:: ../_static/API.png
65 |
66 |
--------------------------------------------------------------------------------
/doc_maker/source/index.rst:
--------------------------------------------------------------------------------
1 | .. futu-api documentation master file, created by
2 | sphinx-quickstart on Thu Aug 31 10:00:54 2017.
3 | You can adapt this file completely to your liking, but it should at least
4 | contain the root `toctree` directive.
5 |
6 | =================================
7 | futu-api |version| 指南
8 | =================================
9 |
10 | futuapi documentation
11 |
12 | .. toctree::
13 | :caption: 基础
14 | :maxdepth: 4
15 | :hidden:
16 |
17 | intro/intro
18 | intro/FutuOpenDGuide
19 |
20 | .. toctree::
21 | :caption: PROTOCOL
22 | :maxdepth: 4
23 | :hidden:
24 |
25 | protocol/intro
26 | protocol/base_define
27 | protocol/quote_protocol
28 | protocol/trade_protocol
29 |
30 | .. toctree::
31 | :caption: Python API
32 | :maxdepth: 4
33 | :hidden:
34 |
35 | api/intro
36 | api/setup
37 | api/Base_API
38 | api/Quote_API
39 | api/Trade_API
40 |
41 | .. toctree::
42 | :caption: .Net API
43 | :maxdepth: 4
44 | :hidden:
45 |
46 | net/intro
47 | net/Base_API
48 | net/Quote_API
49 | net/Trade_API
50 | net/start
51 |
52 | .. toctree::
53 | :caption: .Java API
54 | :maxdepth: 4
55 | :hidden:
56 |
57 | java/intro
58 | java/Base_API
59 | java/Quote_API
60 | java/Trade_API
61 | java/start
62 |
63 | .. toctree::
64 | :caption: CPP API
65 | :maxdepth: 4
66 | :hidden:
67 |
68 | cpp/intro
69 | cpp/base
70 | cpp/qot
71 | cpp/trd
72 | cpp/start
73 |
74 | .. toctree::
75 | :caption: JavaScript API
76 | :maxdepth: 4
77 | :hidden:
78 |
79 | javascript/intro
80 | javascript/Quote_API
81 | javascript/Trade_API
82 | javascript/start
83 |
84 | .. toctree::
85 | :caption: Q&A
86 | :maxdepth: 2
87 | :hidden:
88 |
89 | q&a/Q&A
90 |
--------------------------------------------------------------------------------
/doc_maker/source/_static/file/key:
--------------------------------------------------------------------------------
1 | -----BEGIN RSA PRIVATE KEY-----
2 | MIIEpAIBAAKCAQEA1V1P1YzlslhRyOa0W3gQKS02PnTkQVuEhCN29TzcmkRYNOmu
3 | lebnvVhkTTW4ZtPZ8NAE8PuBsn8BXA7x0fu37QZ+winykFOJtn6WZsE02AfSw0fl
4 | wR5FiTrX4VztW1ogg0+J3RgIPmhlVl09DEpOzHtKTSZ/hmPE6dARlaM33BG9AvHU
5 | yvsYgXeEzuDG5k/Z5G0kYLrtidiMDY3rDTRv4vnErEQHq9fHCXQD3p5m4QVU3C/V
6 | FtG7tscOdHYQAkHZbGO/Fz0JinrVfOOFULITu61SGdFcsBZNujwXHa91cGG+oY6L
7 | i0u84JsVAzjTlmo1TCcOKrVXtl1Nxe83QMqxFwIDAQABAoIBAQCK3nvakyThKii4
8 | 6KdUrVVfZ4TZq7zwaP9b/bUsMpumcHs0nS+7cxk7nK9TrXZCvvoniUzeB+RHZ/Bb
9 | mYJ82CfCxqpz91df5m9IbyW25WNeg+ECpuX8BpbdlYXysUfvYD6vGHKzizO6Yroq
10 | Nu9H84lL/6bBhiAUORVt1LXNPflaaqRafX7xICXNZoGl7SEazc635zBDjocMOocq
11 | PyZM4jvfgGcmW9qphQg8Bp2JsB0CNqmAnJpnalLDDydnljr4Ega6YGMVZnqNPEv9
12 | LTEmi2IzobMoLsYxTX/kg1mf2WgVp1JTsBsKNAXDKeNfEVORNej7KvBiXuIfsG+I
13 | aXoR8cjJAoGBAPiYVeZcZpT1Ffxu4J9gEfG2Mqf8WzkWyGXw40iLlXDRgi1jcDkh
14 | KG5g04ZMOL5U2vkY79KJWEKyU4S+u2ySSKHGUd+LEuqgYBIoFPnZoFJlBRveCJsT
15 | eXYyXaQsjj65H44BI0F9R7sOEuvc7iiS4Z/Jl5I/zIbSm4RI/jW/QZ+dAoGBANu4
16 | U0RUaAxSjaaGT3dEwil32eT9frY0EokAm2Mop9H6v9EZh0YUhsbWI2UZ8j4eU02o
17 | PfUSpYSIQP1EXDkolYHf5Rqu1rE2Uf6pIPgoCuQQXEY8D4mS8JsLzrxh/xUyQn8D
18 | lm5Cw4H342Bgf1WpRyo8d8GZzsKHwq4SzvALcSdDAoGAJddKfB5knxgPmLVoC9qb
19 | 4KdTXq7TVAVby+i3MDvPK7U4k6AnXQrnFKY4jKDdoltYWcKp/upZPQ3YGMTP0t8R
20 | n06I9/Y7kuuGtDzVtJKkDObDuFI8DR8RxiQ0jOEbZgDYBM23iCiB2r9xseWXeyWg
21 | oqoVIHYFtCAq/CAAUj4ixyECgYEAsIPSkTBmLpAbsE5yhNS+T2YzrN1h8KrAwUO1
22 | keHVgMG7XBbwMALJi+/4m35OuEzQi7C/paUHSAPWgiFrHZhXE/F1MwyG+fMzyCzD
23 | idlRdosWNm6F5PYhSc4glgL8VGD+Pt/4+De2rTEigAjGA2FtBKdzZhtUmb9LTWFa
24 | 0km+69UCgYBc1VkZyzVpGqMrqHD0tFAGwubfX8/LExnwKg5/06ziR/HNTMeYLzdu
25 | MaV2gWyv1Ad33leD1pqnPwqTU5+pa09Hco4p83qBmEn0fQP8eXN0F1J+8/DO3niF
26 | DYobux7QqmcRV/LNgziJ9fn2P9r9edAGo1Ftl/J9DwVnm3FMRjVCwA==
27 | -----END RSA PRIVATE KEY-----
28 |
--------------------------------------------------------------------------------
/doc_maker/source/net/start.rst:
--------------------------------------------------------------------------------
1 | .. note::
2 |
3 | Futu OpenAPI 文档已于2020年10月16日全新升级,请移步至 `新文档 `_
4 |
5 | 旧的github文档将不再更新,并于2020年11月16日正式停止访问。
6 |
7 | --------
8 | 快速上手
9 | --------
10 |
11 | ------------------------------
12 |
13 | ----------
14 | 环境搭建
15 | ----------
16 |
17 | .. note::
18 |
19 | * Windows 7/10 ,64位操作系统
20 | * 官方提供的SDK编译环境为Visual Studio 2013,.NET Framework 4.5。或者Visual Studio 2017, .NetCore 2.1.
21 | * 如需更高版本VS环境,可以升级FTAPI4Net.sln
22 |
23 | ------------
24 | 代码快速入门
25 | ------------
26 |
27 |
28 | .. code-block:: cpp
29 |
30 | FTAPI.Init(); //初始化环境
31 | FTAPI_Qot client = new FTAPI_Qot(); //创建行情对象
32 | client.SetConnCallback(new SampleConnCallback()); //创建连接回调类
33 | client.SetQotCallback(new SampleQotCallback()); //创建行情数据回调类
34 | client.SetClientInfo("FTAPI4NET_Sample", 1); //建立标识
35 | client.InitConnect("127.0.0.1", 11111, false); //开始连接
36 |
37 |
38 |
39 | .. code-block:: cpp
40 |
41 | class SampleConnCallback : FTSPI_Conn
42 | {
43 |
44 | public void OnInitConnect(FTAPI client, long errCode, string desc)
45 | {
46 | Console.WriteLine("InitConnected");
47 | //简单演示一下获取用户行情基本信息
48 | FTAPI_Qot qot = client as FTAPI_Qot;
49 | {
50 | GetGlobalState.Request req = GetGlobalState.Request.CreateBuilder().SetC2S(GetGlobalState.C2S.CreateBuilder().SetUserID(900019)).Build();
51 | uint serialNo = qot.GetGlobalState(req);
52 | Console.WriteLine("Send GetGlobalState: {0}", serialNo);
53 | }
54 | }
55 |
56 | public void OnDisconnect(FTAPI client, long errCode)
57 | {
58 | Console.WriteLine("DisConnected");
59 | }
60 | }
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
--------------------------------------------------------------------------------
/doc_maker/source/cpp/start.rst:
--------------------------------------------------------------------------------
1 | .. note::
2 |
3 | Futu OpenAPI 文档已于2020年10月16日全新升级,请移步至 `新文档 `_
4 |
5 | 旧的github文档将不再更新,并于2020年11月16日正式停止访问。
6 |
7 | --------
8 | 快速上手
9 | --------
10 |
11 | ------------------------------
12 |
13 | --------
14 | 环境搭建
15 | --------
16 |
17 | .. note::
18 |
19 | * Windows 7/10 ,64位操作系统
20 | * 官方提供的SDK编译环境为Visual Studio 2013
21 | * 如需更高版本VS环境,可以升级FTAPI.sln
22 |
23 | ------------
24 | 代码快速入门
25 | ------------
26 |
27 |
28 | .. code-block:: cpp
29 |
30 | FTAPI::InitFTApi(); //初始化环境
31 | FTAPI_Qot *pQot = FTAPI::CreateQotApi(); //创建行情对象
32 | SampleConnCallback *pCallback = new SampleConnCallback();
33 | pQot->RegisterConnSpi(pCallback); //创建连接回调类
34 | pQot->RegisterQotSpi(pCallback); //创建行情数据回调类
35 | pQot->SetClientInfo("FTAPI_Sample", 1); //建立标识
36 | pQot->InitConnect("127.0.0.1", 11111, false); //开始连接
37 |
38 | Sleep(10);//为了代码简单,休眠等待连接初始化完成
39 | GetGlobalState.Request req;
40 | req.mutable_c2s()->set_userid(100000);
41 | pQot->GetGlobalState(req);//简单调用获取状态
42 |
43 | FTAPI::ReleaseQotApi(pQot);
44 | delete pCallback;
45 | FTAPI::UnInitFTApi();
46 |
47 | .. code-block:: cpp
48 |
49 | class SampleCallback : public FTSPI_Conn, public FTAPI_Qot
50 | {
51 | void OnInitConnect(FTAPI_Conn* pConn, FTAPI::i64_t nErrCode, const char* strDesc)
52 | {
53 | if (nErrCode == 0)
54 | {
55 | cout << "InitConnected" << endl;
56 | }
57 | }
58 |
59 | void OnDisConnect(FTAPI_Conn* pConn, FTAPI::i64_t nErrCode)
60 | {
61 | cout << "DisConnect" << endl;
62 | }
63 |
64 |
65 | void OnReply_GetGlobalState(FTAPI::u32_t nSerialNo, const GetGlobalState::Response &stRsp)
66 | {
67 | cout << "GetGlobalState Reply" << endl;
68 | }
69 | //避免范例代码过长,其他行情回调在这里不列举
70 | }
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
--------------------------------------------------------------------------------
/doc_maker/source/java/start.rst:
--------------------------------------------------------------------------------
1 | .. note::
2 |
3 | Futu OpenAPI 文档已于2020年10月16日全新升级,请移步至 `新文档 `_
4 |
5 | 旧的github文档将不再更新,并于2020年11月16日正式停止访问。
6 |
7 | --------
8 | 快速上手
9 | --------
10 |
11 |
12 | ----------
13 | 环境搭建
14 | ----------
15 |
16 | .. note::
17 |
18 | * Windows 7/10 ,64位操作系统。Mac 10.11或以上。CentOS 7或Ubuntu 16.04以上。
19 | * 官方提供的SDK编译环境为OpenJDK 8,Windows下需要32位,Linux和Mac下需要64位。
20 | * 如需更高版本JDK,可以自己设置编译环境。
21 |
22 | --------------
23 | 代码快速入门
24 | --------------
25 |
26 |
27 | .. code-block:: cpp
28 |
29 | FTAPI.init(); //初始化环境
30 | FTAPI_Conn_Qot client = new FTAPI_Conn_Qot(); //创建行情对象
31 | client.setConnSpi(new SampleQotCallback()); //创建连接回调类
32 | client.setQotSpi(new SampleQotCallback()); //创建行情数据回调类
33 | client.setClientInfo("FTAPI4J_Sample", 1); //建立标识
34 | client.initConnect("127.0.0.1", (short)11111, false); //开始连接
35 |
36 |
37 |
38 | .. code-block:: cpp
39 |
40 | class SampleQotCallback implements FTSPI_Qot, FTSPI_Conn
41 | {
42 | @Override
43 | public void onInitConnect(FTAPI_Conn client, long errCode, String desc)
44 | {
45 | System.out.printf("Qot onInitConnect: ret=%b desc=%s connID=%d\n", errCode, desc, client.getConnectID());
46 | //简单演示一下获取用户行情基本信息
47 | FTAPI_Conn_Qot qot = (FTAPI_Conn_Qot)client;
48 | {
49 | GetGlobalState.Request req = GetGlobalState.Request.newBuilder().setC2S(
50 | GetGlobalState.C2S.newBuilder().setUserID(Config.userID)
51 | ).build();
52 | int seqNo = qot.getGlobalState(req);
53 | System.out.printf("Send GetGlobalState: %d\n", seqNo);
54 | }
55 | }
56 |
57 | @Override
58 | public void onDisconnect(FTAPI_Conn client, long errCode) {
59 | System.out.printf("Qot onDisConnect: %d\n", errCode);
60 | }
61 |
62 | @Override
63 | public void onReply_GetGlobalState(FTAPI_Conn client, int nSerialNo, GetGlobalState.Response rsp) {
64 | System.out.printf("Reply: GetGlobalState: %d %s\n", nSerialNo, rsp.toString());
65 | }
66 | }
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
--------------------------------------------------------------------------------
/doc_maker/source/api/setup.rst:
--------------------------------------------------------------------------------
1 | .. note::
2 |
3 | Futu OpenAPI 文档已于2020年10月16日全新升级,请移步至 `新文档 `_
4 |
5 | 旧的github文档将不再更新,并于2020年11月16日正式停止访问。
6 |
7 | 安装指南
8 | ==========
9 |
10 | ==========
11 | 环境搭建
12 | ==========
13 |
14 | .. note::
15 |
16 | * Windows 7/10 ,64位操作系统
17 | * 安装尽量使用Anaconda python 3编程环境,以避免因为环境问题出现运行失败的情况
18 | * 如果安装过程中遇到了问题,先阅读该文档下面的 Q&A 章节来尝试着解决
19 |
20 | * 安装 Annacoda
21 |
22 | Anaconda python是Python科学技术包的合集,提供了很多用于科学计算的模块。
23 |
24 | 下载地址:https://www.anaconda.com/download/
25 |
26 | .. note::
27 |
28 | * 如果已经安装了Anaconda python2,也可安装Anaconda python3,在运行时切换环境。
29 | 如下内容提供了两种方式切换为Anaconda3环境:
30 |
31 | * 方式一
32 | 从path环境变量配置anaconda3环境。
33 | Step1、进入环境变量配置界面,创建变量ANACONDA3_HOME,变量值就是anaconda3的安装目录,如下图:
34 |
35 | .. image:: ../_static/version-Switching-path.png
36 |
37 | Step2、编辑path变量的值,删掉原python安装目录的路径并添加如下字符,保存即可:
38 | %ANACONDA3_HOME%;%ANACONDA3_HOME%\Lib;%ANACONDA3_HOME%\Library\mingw-w64\bin;%ANACONDA3_HOME%\Library\usr\bin;%ANACONDA3_HOME%\Library
39 | \bin;%ANACONDA3_HOME%\Scripts;
40 |
41 | .. image:: ../_static/version-Switching-paste.png
42 |
43 | Step3、再次验证anaconda3环境是否生效。
44 |
45 | .. image:: ../_static/version-Switching-verification.png
46 |
47 | * 方式二
48 | 配置pyChram使用的环境为anaconda3。
49 |
50 | .. image:: ../_static/version-Switching-pycharm.png
51 |
52 |
53 |
54 |
55 |
56 | 当安装成功后,执行如下命令来查看是否安装成功:
57 |
58 | .. code-block:: bash
59 |
60 | conda -V
61 |
62 |
63 | * 安装 futu-api 库
64 |
65 | 方式1:
66 |
67 | .. code-block:: bash
68 |
69 | $ pip install futu-api
70 |
71 |
72 | 方式2:直接在GitHub下面下载FutunnOpen包,进行安装
73 |
74 |
75 | .. note::
76 |
77 | * 下载地址:https://github.com/FutunnOpen/py-futu-api
78 | .. image:: ../_static/git-download.png
79 | * 解压,在解压文件夹按住Shift右键打开PowerShell或命令窗口,执行 :code:`pip install .` 进行安装
80 | .. image:: ../_static/powershell-install-futuquant.png
81 |
82 |
83 | * 安装 TA-Lib
84 |
85 | TA-Lib 用中文可以称作技术分析库,是一种广泛用在程序化交易中进行金融市场数据的技术分析的函数库。它提供了多种技术分析的函数,方便我们量化投资中编程工作。
86 |
87 | .. code-block:: bash
88 |
89 | $ pip install TA-Lib
90 |
91 | 如果发现无法通过 pip 安装,请访问 https://mrjbq7.github.io/ta-lib/install.html 解决。
92 |
93 | 对于 Windows 用户,如果编译困难,可以根据您本地的Python版本下载指定的whl包,然后 :code:`pip install TA_Lib-0.4.9-cp27-none-win_amd64.whl` 来完成安装。
94 |
95 | .. note::
96 |
97 | * 下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/
98 | * 安装TA-Lib非必须,可先跳过该步骤
99 |
100 |
101 |
102 |
103 | * 安装 PyCharm
104 |
105 |
106 | 下载地址:https://www.jetbrains.com/pycharm/download/
107 |
108 | .. note::
109 |
110 | * 有众多Python IDE(集成开发环境)可以供您选择,但我们强烈推荐您使用PyCharm
111 | * 选择community版本即可,如您有需要也可以购买专业版(可免费试用)
112 |
113 |
114 |
115 |
116 |
117 |
118 |
--------------------------------------------------------------------------------
/doc_maker/source/javascript/Trade_API.rst:
--------------------------------------------------------------------------------
1 | .. note::
2 |
3 | Futu OpenAPI 文档已于2020年10月16日全新升级,请移步至 `新文档 `_
4 |
5 | 旧的github文档将不再更新,并于2020年11月16日正式停止访问。
6 |
7 |
8 | .. role:: strike
9 | :class: strike
10 | .. role:: red-strengthen
11 | :class: red-strengthen
12 |
13 | ========
14 | 交易API
15 | ========
16 |
17 | --------------
18 |
19 | .. _GetAccList: ../protocol/trade_protocol.html#trd-getacclist-proto-2001
20 | .. _UnlockTrade: ../protocol/trade_protocol.html#trd-unlocktrade-proto-2005
21 | .. _SubAccPush: ../protocol/trade_protocol.html#trd-subaccpush-proto-2008
22 | .. _GetFunds: ../protocol/trade_protocol.html#trd-getfunds-proto-2101
23 | .. _GetPositionList: ../protocol/trade_protocol.html#trd-getpositionlist-proto-2102
24 | .. _GetMaxTrdQtys: ../protocol/trade_protocol.html#trd-getmaxtrdqtys-proto-2111
25 | .. _GetOrderList: ../protocol/trade_protocol.html#trd-getorderlist-proto-2201
26 | .. _PlaceOrder: ../protocol/trade_protocol.html#trd-placeorder-proto-2202
27 | .. _ModifyOrder: ../protocol/trade_protocol.html#trd-modifyorder-proto-2205
28 | .. _GetOrderFillList: ../protocol/trade_protocol.html#trd-getorderfilllist-proto-2211
29 | .. _GetHistoryOrderList: ../protocol/trade_protocol.html#trd-gethistoryorderlist-proto-2221
30 | .. _GetHistoryOrderFillList: ../protocol/trade_protocol.html#trd-gethistoryorderfilllist-proto-2222
31 | .. _UpdateOrder: ../protocol/trade_protocol.html#trd-updateorder-proto-2208
32 | .. _UpdateOrderFill: ../protocol/trade_protocol.html#trd-updateorderfill-proto-2218
33 |
34 | ---------------------------------------------------
35 |
36 |
37 |
38 | 成员函数
39 | ---------------------
40 |
41 | ================================ ==============================================
42 | 函数名(点开链接可查看具体协议) 功能简介
43 | ================================ ==============================================
44 | GetAccList_ 获取交易账户列表
45 | UnlockTrade_ 解锁
46 | SubAccPush_ 订阅接收推送数据的交易账户
47 | GetFunds_ 获取账户资金
48 | GetPositionList_ 获取账户持仓
49 | GetMaxTrdQtys_ 获取最大交易数量
50 | GetOrderList_ 获取当日订单列表
51 | PlaceOrder_ 下单
52 | ModifyOrder_ 改单
53 | GetOrderFillList_ 获取当日成交列表
54 | GetHistoryOrderList_ 获取历史订单列表
55 | GetHistoryOrderFillList_ 获取历史成交列表
56 | ================================ ==============================================
57 |
58 | 交易推送接收接口函数
59 | -------------------------------
60 |
61 | .. code-block:: js
62 |
63 | this.websocket.onPush = onPush;
64 |
65 | function onPush(cmd, response) {
66 | const obj = ftWebsocket.findCmdObj(cmd);
67 | //通过cmd来区分具体的推送协议
68 | if (obj && obj.description) {
69 | console.log(obj.description, response);
70 | }
71 | },
72 |
73 |
74 |
--------------------------------------------------------------------------------
/doc_maker/source/java/Trade_API.rst:
--------------------------------------------------------------------------------
1 | .. note::
2 |
3 | Futu OpenAPI 文档已于2020年10月16日全新升级,请移步至 `新文档 `_
4 |
5 | 旧的github文档将不再更新,并于2020年11月16日正式停止访问。
6 |
7 | .. role:: strike
8 | :class: strike
9 | .. role:: red-strengthen
10 | :class: red-strengthen
11 |
12 | =======
13 | 交易API
14 | =======
15 |
16 |
17 | .. _getAccList: ../protocol/trade_protocol.html#trd-getacclist-proto-2001
18 | .. _unlockTrade: ../protocol/trade_protocol.html#trd-unlocktrade-proto-2005
19 | .. _subAccPush: ../protocol/trade_protocol.html#trd-subaccpush-proto-2008
20 | .. _getFunds: ../protocol/trade_protocol.html#trd-getfunds-proto-2101
21 | .. _getPositionList: ../protocol/trade_protocol.html#trd-getpositionlist-proto-2102
22 | .. _getMaxTrdQtys: ../protocol/trade_protocol.html#trd-getmaxtrdqtys-proto-2111
23 | .. _getOrderList: ../protocol/trade_protocol.html#trd-getorderlist-proto-2201
24 | .. _placeOrder: ../protocol/trade_protocol.html#trd-placeorder-proto-2202
25 | .. _modifyOrder: ../protocol/trade_protocol.html#trd-modifyorder-proto-2205
26 | .. _getOrderFillList: ../protocol/trade_protocol.html#trd-getorderfilllist-proto-2211
27 | .. _getHistoryOrderList: ../protocol/trade_protocol.html#trd-gethistoryorderlist-proto-2221
28 | .. _getHistoryOrderFillList: ../protocol/trade_protocol.html#trd-gethistoryorderfilllist-proto-2222
29 | .. _updateOrder: ../protocol/trade_protocol.html#trd-updateorder-proto-2208
30 | .. _updateOrderFill: ../protocol/trade_protocol.html#trd-updateorderfill-proto-2218
31 |
32 |
33 | ---------------------------------------------------
34 |
35 | FTAPI_Trd成员函数
36 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
37 |
38 | + FTAPI_Trd继承自\ `FTAPI_Conn <./Base_API.html#ftapi-conn>`_ ,连接层调用接口参考FTAPI_Conn说明。
39 |
40 |
41 | ================================ ============================================== =================================
42 | 函数名(点开链接可查看具体协议) 功能简介 回调函数(FTSPI_Trd)
43 | ================================ ============================================== =================================
44 | getAccList_ 获取交易账户列表 onReply_GetAccList
45 | unlockTrade_ 解锁 onReply_UnlockTrade
46 | subAccPush_ 订阅接收推送数据的交易账户 onReply_SubAccPush
47 | getFunds_ 获取账户资金 onReply_GetFunds
48 | getPositionList_ 获取账户持仓 onReply_GetPositionList
49 | getMaxTrdQtys_ 获取最大交易数量 onReply_GetMaxTrdQtys
50 | getOrderList_ 获取当日订单列表 onReply_GetOrderList
51 | placeOrder_ 下单 OnReply_PlaceOrder
52 | modifyOrder_ 改单 OnReply_ModifyOrder
53 | getOrderFillList_ 获取当日成交列表 onReply_GetOrderFillList
54 | getHistoryOrderList_ 获取历史订单列表 onReply_GetHistoryOrderList
55 | getHistoryOrderFillList_ 获取历史成交列表 onReply_GetHistoryOrderFillList
56 | ================================ ============================================== =================================
57 |
58 | FTSPI_Trd交易推送接收接口函数
59 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
60 | ================================== =================================================
61 | 回调函数(点开链接可查看具体协议) 功能简介
62 | ================================== =================================================
63 | updateOrder_ 订单状态变动通知(推送)
64 | updateOrderFill_ 成交通知(推送)
65 | ================================== =================================================
66 |
67 |
--------------------------------------------------------------------------------
/doc_maker/source/net/Trade_API.rst:
--------------------------------------------------------------------------------
1 | .. note::
2 |
3 | Futu OpenAPI 文档已于2020年10月16日全新升级,请移步至 `新文档 `_
4 |
5 | 旧的github文档将不再更新,并于2020年11月16日正式停止访问。
6 |
7 |
8 | .. role:: strike
9 | :class: strike
10 | .. role:: red-strengthen
11 | :class: red-strengthen
12 |
13 | ========
14 | 交易API
15 | ========
16 |
17 | .. _GetAccList: ../protocol/trade_protocol.html#trd-getacclist-proto-2001
18 | .. _UnlockTrade: ../protocol/trade_protocol.html#trd-unlocktrade-proto-2005
19 | .. _SubAccPush: ../protocol/trade_protocol.html#trd-subaccpush-proto-2008
20 | .. _GetFunds: ../protocol/trade_protocol.html#trd-getfunds-proto-2101
21 | .. _GetPositionList: ../protocol/trade_protocol.html#trd-getpositionlist-proto-2102
22 | .. _GetMaxTrdQtys: ../protocol/trade_protocol.html#trd-getmaxtrdqtys-proto-2111
23 | .. _GetOrderList: ../protocol/trade_protocol.html#trd-getorderlist-proto-2201
24 | .. _PlaceOrder: ../protocol/trade_protocol.html#trd-placeorder-proto-2202
25 | .. _ModifyOrder: ../protocol/trade_protocol.html#trd-modifyorder-proto-2205
26 | .. _GetOrderFillList: ../protocol/trade_protocol.html#trd-getorderfilllist-proto-2211
27 | .. _GetHistoryOrderList: ../protocol/trade_protocol.html#trd-gethistoryorderlist-proto-2221
28 | .. _GetHistoryOrderFillList: ../protocol/trade_protocol.html#trd-gethistoryorderfilllist-proto-2222
29 | .. _UpdateOrder: ../protocol/trade_protocol.html#trd-updateorder-proto-2208
30 | .. _UpdateOrderFill: ../protocol/trade_protocol.html#trd-updateorderfill-proto-2218
31 |
32 | ---------------------------------------------------
33 |
34 |
35 |
36 | FTAPI_Trd成员函数
37 | ---------------------
38 |
39 | + FTAPI_Trd继承自\ `FTAPI_Conn <./Base_API.html#ftapi-conn>`_ ,连接层调用接口参考FTAPI_Conn说明。
40 |
41 |
42 | ================================ ============================================== ==============================
43 | 函数名(点开链接可查看具体协议) 功能简介 回调函数(FTSPI_Trd)
44 | ================================ ============================================== ==============================
45 | GetAccList_ 获取交易账户列表 OnReply_GetAccList
46 | UnlockTrade_ 解锁 OnReply_UnlockTrade
47 | SubAccPush_ 订阅接收推送数据的交易账户 OnReply_SubAccPush
48 | GetFunds_ 获取账户资金 OnReply_GetFunds
49 | GetPositionList_ 获取账户持仓 OnReply_GetPositionList
50 | GetMaxTrdQtys_ 获取最大交易数量 OnReply_GetMaxTrdQtys
51 | GetOrderList_ 获取当日订单列表 OnReply_GetOrderList
52 | PlaceOrder_ 下单 OnReply_PlaceOrder
53 | ModifyOrder_ 改单 OnReply_ModifyOrder
54 | GetOrderFillList_ 获取当日成交列表 OnReply_GetOrderFillList
55 | GetHistoryOrderList_ 获取历史订单列表 OnReply_GetHistoryOrderList
56 | GetHistoryOrderFillList_ 获取历史成交列表 OnReply_GetHistoryOrderFillList
57 | ================================ ============================================== ==============================
58 |
59 | FTSPI_Trd交易推送接收接口函数
60 | -------------------------------
61 |
62 | ================================== =================================================
63 | 回调函数(点开链接可查看具体协议) 功能简介
64 | ================================== =================================================
65 | UpdateOrder_ 订单状态变动通知(推送)
66 | UpdateOrderFill_ 成交通知(推送)
67 | ================================== =================================================
68 |
69 |
--------------------------------------------------------------------------------
/doc_maker/source/cpp/trd.rst:
--------------------------------------------------------------------------------
1 | .. note::
2 |
3 | Futu OpenAPI 文档已于2020年10月16日全新升级,请移步至 `新文档 `_
4 |
5 | 旧的github文档将不再更新,并于2020年11月16日正式停止访问。
6 |
7 |
8 | .. role:: strike
9 | :class: strike
10 | .. role:: red-strengthen
11 | :class: red-strengthen
12 |
13 | ==========
14 | 交易API
15 | ==========
16 |
17 | --------------
18 |
19 | .. _GetAccList: ../protocol/trade_protocol.html#trd-getacclist-proto-2001
20 | .. _UnlockTrade: ../protocol/trade_protocol.html#trd-unlocktrade-proto-2005
21 | .. _SubAccPush: ../protocol/trade_protocol.html#trd-subaccpush-proto-2008
22 | .. _GetFunds: ../protocol/trade_protocol.html#trd-getfunds-proto-2101
23 | .. _GetPositionList: ../protocol/trade_protocol.html#trd-getpositionlist-proto-2102
24 | .. _GetMaxTrdQtys: ../protocol/trade_protocol.html#trd-getmaxtrdqtys-proto-2111
25 | .. _GetOrderList: ../protocol/trade_protocol.html#trd-getorderlist-proto-2201
26 | .. _PlaceOrder: ../protocol/trade_protocol.html#trd-placeorder-proto-2202
27 | .. _ModifyOrder: ../protocol/trade_protocol.html#trd-modifyorder-proto-2205
28 | .. _GetOrderFillList: ../protocol/trade_protocol.html#trd-getorderfilllist-proto-2211
29 | .. _GetHistoryOrderList: ../protocol/trade_protocol.html#trd-gethistoryorderlist-proto-2221
30 | .. _GetHistoryOrderFillList: ../protocol/trade_protocol.html#trd-gethistoryorderfilllist-proto-2222
31 | .. _OnPush_UpdateOrder: ../protocol/trade_protocol.html#trd-updateorder-proto-2208
32 | .. _OnPush_UpdateOrderFill: ../protocol/trade_protocol.html#trd-updateorderfill-proto-2218
33 |
34 | ---------------------------------------------------
35 |
36 | FTAPI_Trd成员函数
37 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
38 | + FTAPI_Trd继承自\ `FTAPI_Conn <./base.html#ftapi-conn>`_ ,连接层调用接口参考FTAPI_Conn说明。
39 |
40 | ================================ ============================================== =================================
41 | 函数名(点开链接可查看具体协议) 功能简介 回调函数(FTSPI_Trd)
42 | ================================ ============================================== =================================
43 | GetAccList_ 获取交易账户列表 OnReply_GetAccList
44 | UnlockTrade_ 解锁 OnReply_UnlockTrade
45 | SubAccPush_ 订阅接收推送数据的交易账户 OnReply_SubAccPush
46 | GetFunds_ 获取账户资金 OnReply_GetFunds
47 | GetPositionList_ 获取账户持仓 OnReply_GetPositionList
48 | GetMaxTrdQtys_ 获取最大交易数量 OnReply_GetMaxTrdQtys
49 | GetOrderList_ 获取当日订单列表 OnReply_GetOrderList
50 | PlaceOrder_ 下单 OnReply_PlaceOrder
51 | ModifyOrder_ 改单 OnReply_ModifyOrder
52 | GetOrderFillList_ 获取当日成交列表 OnReply_GetOrderFillList
53 | GetHistoryOrderList_ 获取历史订单列表 OnReply_GetHistoryOrderList
54 | GetHistoryOrderFillList_ 获取历史成交列表 OnReply_GetHistoryOrderFillList
55 | ================================ ============================================== =================================
56 |
57 | FTSPI_Trd交易推送接收接口函数
58 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
59 | ================================== =================================================
60 | 回调函数(点开链接可查看具体协议) 功能简介
61 | ================================== =================================================
62 | OnPush_UpdateOrder_ 订单状态变动通知(推送)
63 | OnPush_UpdateOrderFill_ 成交通知(推送)
64 | ================================== =================================================
65 |
66 |
--------------------------------------------------------------------------------
/doc_maker/source/net/Base_API.rst:
--------------------------------------------------------------------------------
1 | .. note::
2 |
3 | Futu OpenAPI 文档已于2020年10月16日全新升级,请移步至 `新文档 `_
4 |
5 | 旧的github文档将不再更新,并于2020年11月16日正式停止访问。
6 |
7 |
8 | .. role:: strike
9 | :class: strike
10 | .. role:: red-strengthen
11 | :class: red-strengthen
12 |
13 | ========
14 | 基础API
15 | ========
16 |
17 | .. _ConnectFailType: Base_API.html#id2
18 | .. _InitFailType: Base_API.html#id3
19 | .. _FTAPI_InitFail: Base_API.html#id4
20 | .. _rsa: ../intro/FutuOpenDGuide.html#rsa
21 |
22 | ---------------------------------------------------
23 |
24 | 枚举常量
25 | ---------
26 |
27 | ConnectFailType - 连接错误码
28 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
29 |
30 | 连接错误码
31 |
32 | .. cpp:enum:: ConnectFailType
33 |
34 | .. attribute:: Unknown
35 |
36 | 未知错误
37 |
38 | .. attribute:: None
39 |
40 | 没有错误
41 |
42 | .. attribute:: CreateFailed
43 |
44 | socket创建失败
45 |
46 | .. attribute:: CloseFailed
47 |
48 | socket close错误
49 |
50 | .. attribute:: ShutdownFailed
51 |
52 | socket shutdown错误
53 |
54 | .. attribute:: GetHost ByNameFailed
55 |
56 | gethostbyname错误
57 |
58 | .. attribute:: GetHostByNameWrong
59 |
60 | gethostbyname调用成功,但返回的结果错误
61 |
62 | .. attribute:: ConnectFailed
63 |
64 | 连接失败
65 |
66 | .. attribute:: BindFailed
67 |
68 | socket bind失败
69 |
70 | .. attribute:: ListenFailed
71 |
72 | socket listen失败
73 |
74 | .. attribute:: SelectReturnError
75 |
76 | socket select错误
77 |
78 | .. attribute:: SendFailed
79 |
80 | socket send失败
81 |
82 | .. attribute:: RecvFailed
83 |
84 | socket recv失败
85 |
86 | --------------------------------------
87 |
88 | InitFailType - 初始化连接协议失败类型
89 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
90 |
91 | 初始化连接协议失败,即InitConnect协议相关的错误
92 |
93 | .. cpp:enum:: InitFailType
94 |
95 | .. attribute:: Unknow
96 |
97 | 未知错误
98 |
99 | .. attribute:: Timeout
100 |
101 | 超时
102 |
103 | .. attribute:: DisConnect
104 |
105 | 连接断开
106 |
107 | .. attribute:: SeriaNoNotMatch
108 |
109 | 序列号不符
110 |
111 | .. attribute:: SendInitReqFailed
112 |
113 | 发送初始化协议失败
114 |
115 | .. attribute:: OpenDReject
116 |
117 | FutuOpenD回包指定错误,具体错误看描述
118 |
119 | --------------------------------------
120 |
121 | FTAPI_InitFail - 初始化连接协议失败错误值
122 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
123 |
124 | 指定初始化连接协议失败,即InitConnect协议相关的错误,错误值:100。
125 |
126 | --------------------------------------
127 |
128 |
129 | FTAPI - API全局功能。
130 | --------------------------------------
131 |
132 | .. class:: FTAPI
133 |
134 | API全局配置类,初始化和全局配置类。
135 |
136 | -------------------------------------------------------------------------------------------------
137 |
138 | Init
139 | ~~~~~~~~~~~~~~~~~
140 |
141 | .. method:: static void Init()
142 |
143 | 初始化底层通道,程序启动时首先调用
144 |
145 | :return: void
146 |
147 | --------------------------------------------
148 |
149 | UnInit
150 | ~~~~~~~~~~~~~~~~~
151 |
152 | .. method:: static void UnInit()
153 |
154 | 清理底层通道,程序结束时调用
155 |
156 | :return: void
157 |
158 | --------------------------------------------
159 |
160 |
161 | FTAPI_Conn连接层基类
162 | -----------------------
163 |
164 | .. class:: FTAPI
165 |
166 | API功能基类,提供连接方面公用的功能。FTAPI_Qot(行情)和FTAPI_Trd(交易)都继承该类。
167 |
168 | -------------------------------------------------------------------------------------------------
169 |
170 |
171 | SetConnSpi
172 | ~~~~~~~~~~~~~~~~~
173 |
174 | .. method:: void SetConnSpi(FTSPI_Conn callback)
175 |
176 | 设置连接相关回调。
177 |
178 | :param callback: 参加下面 `FTSPI_Conn` 的说明
179 | :return: void
180 |
181 | --------------------------------------------
182 |
183 | SetClientInfo
184 | ~~~~~~~~~~~~~~~~~
185 |
186 | .. method:: void SetClientInfo(string clientID, int clientVer)
187 |
188 | 初始化连接信息。
189 |
190 | :param clientID: 连接标识符,请自定义独特的标识符
191 | :param clientVer: 连接版本号,请参考opendapi版本号
192 | :return: void
193 |
194 | --------------------------------------------
195 |
196 | InitConnect
197 | ~~~~~~~~~~~~~~~~~
198 |
199 | .. method:: bool InitConnect(string ip, ushort port, bool isEnableEncrypt)
200 |
201 | 初始化连接信息。
202 |
203 | :param ip: 连接地址
204 | :param port: 连接端口号
205 | :param isEnableEncrypt: 是否允许加密
206 | :return: bool 初始化失败返回false,其他错误依据callback返回
207 |
208 | --------------------------------------------
209 |
210 | SetRSAPrivateKey
211 | ~~~~~~~~~~~~~~~~~
212 |
213 | .. method:: void SetRSAPrivateKey(string key)
214 |
215 | 设置密钥。
216 |
217 | :param key: 加密密钥。格式见 rsa_
218 | :return: void
219 |
220 | --------------------------------------------
221 |
222 | GetConnectID
223 | ~~~~~~~~~~~~~~~~~
224 |
225 | .. method:: long GetConnectID()
226 |
227 | 获取此连接的连接ID,连接的唯一标识,InitConnect协议返回,没有初始化前为0
228 |
229 | :return: long
230 |
231 | --------------------------------------------
232 |
233 | Close
234 | ~~~~~~~~~~~~~~~~~
235 |
236 | .. method:: void Close()
237 |
238 | 释放内存。当对象不再使用时调用,否则会有内存泄漏。
239 |
240 | :return: void
241 |
242 | --------------------------------------------
243 |
244 | FTSPI_Conn - 连接状态回调接口
245 | ------------------------------------------
246 |
247 | .. class:: interface FTSPI_Conn
248 |
249 | 当与OpenD的连接状态变化时调用此接口。
250 |
251 | ------------------------------------
252 |
253 | OnInitConnect
254 | ~~~~~~~~~~~~~~~~~
255 |
256 | .. method:: void OnInitConnect(FTAPI_Conn client, long errCode, String desc)
257 |
258 | 初始化连接状态变化。
259 |
260 | :param client: 对应的FTAPI实例
261 | :param errCode: 错误码。0表示成功,可以进行后续请求。当高32位为 ConnectFailType_ 类型时,低32位为系统错误码;当高32位等于 FTAPI_InitFail_,则低32位为 InitFailType_ 类型。
262 | :param desc: 错误描述
263 | :return: void
264 |
265 | --------------------------------------------
266 |
267 | OnDisConnect
268 | ~~~~~~~~~~~~~~~~~
269 |
270 | .. method:: void OnDisconnect(FTAPI_Conn client, long errCode)
271 |
272 | 连接断开。
273 |
274 | :param client: 对应的FTAPI实例
275 | :param errCode: 错误码。高32位为 ConnectFailType_ 类型,低32位为系统错误码;
276 | :return: void
277 |
278 |
--------------------------------------------------------------------------------
/doc_maker/source/api/intro.rst:
--------------------------------------------------------------------------------
1 | .. note::
2 |
3 | Futu OpenAPI 文档已于2020年10月16日全新升级,请移步至 `新文档 `_
4 |
5 | 旧的github文档将不再更新,并于2020年11月16日正式停止访问。
6 |
7 | .. role:: strike
8 | :class: strike
9 | .. role:: red-strengthen
10 | :class: red-strengthen
11 |
12 | .. _FutuOpenD: ../intro/FutuOpenDGuide.html
13 |
14 | 介绍
15 | ====================
16 | py-futu-api依赖FutuOpenD网关客户端,需要先运行登录 FutuOpenD_
17 |
18 |
19 | --------------
20 |
21 | .. _get_trading_days: Quote_API.html#get_trading_days
22 | .. _get_stock_basicinfo: Quote_API.html#get_stock_basicinfo
23 | .. _get_market_snapshot: Quote_API.html#get_market_snapshot
24 | .. _get_rt_data: Quote_API.html#get_rt_data
25 | .. _get_plate_stock: Quote_API.html#get_plate_stock
26 | .. _get_plate_list: Quote_API.html#get_plate_list
27 | .. _get_broker_queue: Quote_API.html#get_broker_queue
28 | .. _subscribe: Quote_API.html#subscribe
29 | .. _get_stock_quote: Quote_API.html#get_stock_quote
30 | .. _get_rt_ticker: Quote_API.html#get_rt_ticker
31 | .. _get_cur_kline: Quote_API.html#get_cur_kline
32 | .. _get_order_book: Quote_API.html#get_order_book
33 | .. _get_referencestock_list: Quote_API.html#get_referencestock_list
34 | .. _get_owner_plate: Quote_API.html#get_owner_plate
35 | .. _get_holding_change_list: Quote_API.html#get_holding_change_list
36 | .. _request_history_kline: Quote_API.html#request_history_kline
37 | .. _query_subscription: Quote_API.html#query_subscription
38 | .. _get_warrant: Quote_API.html#get_warrant
39 | .. _get_option_chain: Quote_API.html#get_option_chain
40 | .. _get_history_kl_quota: Quote_API.html#get_history_kl_quota
41 | .. _get_rehab: Quote_API.html#get_rehab
42 | .. _unsubscribe_all: Quote_API.html#unsubscribe_all
43 | .. _get_capital_flow: Quote_API.html#get_capital_flow
44 | .. _get_capital_distribution: Quote_API.html#get_capital_distribution
45 | .. _get_user_security: Quote_API.html#get_user_security
46 | .. _modify_user_security: Quote_API.html#modify_user_security
47 | .. _get_stock_filter: Quote_API.html#get_stock_filter
48 | .. _get_future_info: Quote_API.html#get_future_info
49 | .. _request_trading_days: Quote_API.html#request_trading_days
50 | .. _set_price_reminder: Quote_API.html#set_price_reminder
51 | .. _get_price_reminder: Quote_API.html#get_price_reminder
52 | .. _get_ipo_list: Quote_API.html#get_ipo_list
53 | .. _get_user_security_group: Quote_API.html#get_user_security_group
54 |
55 | .. _get_acc_list: Trade_API.html#get_acc_list
56 | .. _unlock_trade: Trade_API.html#unlock_trade
57 | .. _accinfo_query: Trade_API.html#accinfo_query
58 | .. _position_list_query: Trade_API.html#position_list_query
59 | .. _place_order: Trade_API.html#place_order
60 | .. _order_list_query: Trade_API.html#order_list_query
61 | .. _modify_order: Trade_API.html#modify_order
62 | .. _deal_list_query: Trade_API.html#deal_list_query
63 | .. _history_order_list_query: Trade_API.html#history_order_list_query
64 | .. _history_deal_list_query: Trade_API.html#history_deal_list_query
65 | .. _acctradinginfo_query: Trade_API.html#acctradinginfo_query
66 |
67 |
68 | 主要函数列表
69 | ----------
70 |
71 | 行情函数:
72 |
73 | ================================ ============================================================================
74 | 函数名 功能简介
75 | ================================ ============================================================================
76 | get_stock_basicinfo_ 获取指定市场中特定类型的股票基本信息
77 | request_history_kline_ 获取k线,不需要事先下载k线数据
78 | get_history_kl_quota_ 获取已使用过的额度,即当前周期内已经下载过多少只股票
79 | get_rehab_ 获取给定股票的复权因子
80 | get_market_snapshot_ 获取市场快照
81 | get_rt_data_ 获取指定股票的分时数据
82 | get_plate_stock_ 获取特定板块下的股票列表
83 | get_plate_list_ 获取板块集合下的子板块列表
84 | get_broker_queue_ 获取股票的经纪队列
85 | subscribe_ 订阅注册需要的实时信息,指定股票和订阅的数据类型即可,港股订阅需要Lv2行情。
86 | unsubscribe_all_ 取消该实例的所有订阅
87 | query_subscription_ 查询订阅信息
88 | get_stock_quote_ 获取订阅股票报价的实时数据,有订阅要求限制
89 | get_rt_ticker_ 获取指定股票的实时逐笔。取最近num个逐笔
90 | get_cur_kline_ 实时获取指定股票最近num个K线数据
91 | get_order_book_ 获取实时摆盘数据
92 | get_referencestock_list_ 获取证券的关联数据
93 | get_owner_plate_ 获取单支或多支股票的所属板块信息列表
94 | get_holding_change_list_ 获取大股东持股变动列表,只提供美股数据,并最多只返回前100个
95 | get_option_chain_ 通过标的股查询期权
96 | get_warrant_ 拉取窝轮和相关衍生品数据接口
97 | get_capital_flow_ 获取个股资金流向
98 | get_capital_distribution_ 获取个股资金分布
99 | get_user_security_ 获取指定分组的自选股列表
100 | modify_user_security_ 修改指定分组的自选股列表
101 | get_stock_filter_ 获取条件选股
102 | get_ipo_list_ 获取指定市场的ipo列表
103 | get_future_info_ 获取期货合约资料
104 | request_trading_days_ 在线请求交易日
105 | set_price_reminder_ 设置到价提醒
106 | get_price_reminder_ 获取对某只股票(某个市场)设置的到价提醒列表
107 | get_user_security_group_ 获取自选股分组列表
108 | ================================ ============================================================================
109 |
110 | 交易函数:
111 |
112 | ================================ ============================================================================
113 | 函数名 功能简介
114 | ================================ ============================================================================
115 | get_acc_list_ 获取交易业务账户列表
116 | unlock_trade_ 解锁交易
117 | accinfo_query_ 获取账户资金数据
118 | position_list_query_ 获取账户持仓列表
119 | place_order_ 下单
120 | order_list_query_ 获取订单列表
121 | modify_order_ 修改订单
122 | deal_list_query_ 获取成交列表
123 | history_order_list_query_ 获取历史订单列表
124 | history_deal_list_query_ 获取历史成交列表
125 | acctradinginfo_query_ 查询账户下最大可买卖数量
126 | ================================ ============================================================================
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
--------------------------------------------------------------------------------
/doc_maker/source/javascript/Quote_API.rst:
--------------------------------------------------------------------------------
1 | .. note::
2 |
3 | Futu OpenAPI 文档已于2020年10月16日全新升级,请移步至 `新文档 `_
4 |
5 | 旧的github文档将不再更新,并于2020年11月16日正式停止访问。
6 |
7 |
8 | .. role:: strike
9 | :class: strike
10 | .. role:: red-strengthen
11 | :class: red-strengthen
12 |
13 | =======
14 | 行情API
15 | =======
16 |
17 |
18 | .. _GetGlobalState: ../protocol/base_define.html#getglobalstate-proto-1002
19 | .. _Sub: ../protocol/quote_protocol.html#qot-sub-proto-3001
20 | .. _RegQotPush: ../protocol/quote_protocol.html#qot-regqotpush-proto-3002
21 | .. _GetSubInfo: ../protocol/quote_protocol.html#qot-getsubinfo-proto-3003
22 | .. _GetTicker: ../protocol/quote_protocol.html#qot-getticker-proto-3010
23 | .. _GetBasicQot: ../protocol/quote_protocol.html#qot-getbasicqot-proto-3004
24 | .. _GetOrderBook: ../protocol/quote_protocol.html#qot-getorderbook-proto-3012
25 | .. _GetKL: ../protocol/quote_protocol.html#qot-getkl-proto-3006k
26 | .. _GetRT: ../protocol/quote_protocol.html#qot-getrt-proto-3008
27 | .. _GetBroker: ../protocol/quote_protocol.html#qot-getbroker-proto-3014
28 | .. _GetRehab: ../protocol/quote_protocol.html#qot-getrehab-proto-3102
29 | .. _RequestRehab: ../protocol/quote_protocol.html#qot-requestrehab-proto-3105
30 | .. _RequestHistoryKL: ../protocol/quote_protocol.html#qot-requesthistorykl-proto-3103k
31 | .. _RequestHistoryKLQuota: ../protocol/quote_protocol.html#qot-requesthistoryklquota-proto-3104k
32 | .. _GetTradeDate: ../protocol/quote_protocol.html#qot-gettradedate-proto-3200
33 | .. _GetStaticInfo: ../protocol/quote_protocol.html#qot-getstaticinfo-proto-3202
34 | .. _GetSecuritySnapshot: ../protocol/quote_protocol.html#qot-getsecuritysnapshot-proto-3203
35 | .. _GetPlateSet: ../protocol/quote_protocol.html#qot-getplateset-proto-3204
36 | .. _GetPlateSecurity: ../protocol/quote_protocol.html#qot-getplatesecurity-proto-3205
37 | .. _GetReference: ../protocol/quote_protocol.html#qot-getreference-proto-3206
38 | .. _GetOwnerPlate: ../protocol/quote_protocol.html#qot-getownerplate-proto-3207
39 | .. _GetHoldingChangeList: ../protocol/quote_protocol.html#qot-getholdingchangelist-proto-3208
40 | .. _GetOptionChain: ../protocol/quote_protocol.html#qot-getoptionchain-proto-3209
41 | .. _GetWarrant: ../protocol/quote_protocol.html#qot-getwarrant-proto-3210
42 | .. _GetCapitalFlow: ../protocol/quote_protocol.html#qot-getcapitalflow-proto-3211
43 | .. _GetCapitalDistribution: ../protocol/quote_protocol.html#qot-getcapitaldistribution-proto-3212
44 | .. _GetUserSecurity: ../protocol/quote_protocol.html#qot-getusersecurity-proto-3213
45 | .. _ModifyUserSecurity: ../protocol/quote_protocol.html#qot-modifyusersecurity-proto-3214
46 | .. _RequestTradeDate: ../protocol/quote_protocol.html#qot-requesttradedate-proto-3219
47 | .. _SetPriceReminder: ../protocol/quote_protocol.html#qot-setpricereminder-proto-3220
48 | .. _GetPriceReminder: ../protocol/quote_protocol.html#qot-getpricereminder-proto-3221
49 | .. _GetUserSecurityGroup: ../protocol/quote_protocol.html#qot-getusersecuritygroup-proto-3222
50 | .. _GetMarketState: ../protocol/quote_protocol.html#qot-getmarketstate-proto-3223
51 | .. _OnPush_Notify: ../protocol/base_define.html#notify-proto-1003
52 | .. _OnPush_UpdateBasicQot: ../protocol/quote_protocol.html#qot-updatebasicqot-proto-3005
53 | .. _OnPush_UpdateKL: ../protocol/quote_protocol.html#qot-updatekl-proto-3007k
54 | .. _OnPush_UpdateRT: ../protocol/quote_protocol.html#qot-updatert-proto-3009
55 | .. _OnPush_UpdateTicker: ../protocol/quote_protocol.html#qot-updateticker-proto-3011
56 | .. _OnPush_UpdateOrderBook: ../protocol/quote_protocol.html#qot-updateorderbook-proto-3013
57 | .. _OnPush_UpdateBroker: ../protocol/quote_protocol.html#qot-updatebroker-proto-3015
58 | .. _OnPush_UpdatePriceReminder: ../protocol/quote_protocol.html#qot-updatepricereminder-proto-3019
59 |
60 | ---------------------------------------------------
61 |
62 |
63 | 功能函数
64 | -------------------
65 |
66 | ================================ ==============================================
67 | 函数名(点开链接可查看具体协议) 功能简介
68 | ================================ ==============================================
69 | GetGlobalState_ 获取全局状态
70 | Sub_ 订阅或者反订阅
71 | RegQotPush_ 注册推送
72 | GetSubInfo_ 获取订阅信息
73 | GetTicker_ 获取逐笔,调用该接口前需要先订阅
74 | GetBasicQot_ 获取基本行情,调用该接口前需要先订阅
75 | GetOrderBook_ 获取摆盘,调用该接口前需要先订阅
76 | GetKL_ 获取K线,调用该接口前需要先订阅
77 | GetRT_ 获取分时,调用该接口前需要先订阅
78 | GetBroker_ 获取经纪队列,调用该接口前需要先订阅
79 | RequestRehab_ 在线请求历史复权信息,不读本地历史数据DB
80 | RequestHistoryKL_ 在线请求历史K线,不读本地历史数据DB
81 | RequestHistoryKLQuota_ 获取历史K线已经用掉的额度
82 | GetTradeDate_ 获取交易日
83 | GetStaticInfo_ 获取静态信息
84 | GetSecuritySnapshot_ 获取股票快照
85 | GetPlateSet_ 获取板块集合下的板块
86 | GetPlateSecurity_ 获取板块下的股票
87 | GetReference_ 获取相关股票
88 | GetOwnerPlate_ 获取股票所属的板块
89 | GetHoldingChangeList_ 获取大股东持股变化列表
90 | GetOptionChain_ 筛选期权
91 | GetWarrant_ 筛选窝轮
92 | GetCapitalFlow_ 获取资金流向
93 | GetCapitalDistribution_ 获取资金分布
94 | GetUserSecurity_ 获取自选股分组下的股票
95 | ModifyUserSecurity_ 修改自选股分组下的股票
96 | GetIpolist_ 获取ipo数据
97 | GetCodeChange_ 获取股票代码变更
98 | GetFutureInfo_ 获取期货合约资料
99 | RequestTradeDate_ 获取市场交易日,在线拉取不在本地计算
100 | SetPriceReminder_ 设置到价提醒
101 | GetPriceReminder_ 获取到价提醒
102 | GetUserSecurityGroup_ 获取自选股分组
103 | GetMarketState_ 获取股票对应市场状态
104 | ================================ ==============================================
105 |
106 |
107 | 行情推送接收接口函数
108 | -----------------------------
109 |
110 | .. code-block:: js
111 |
112 | this.websocket.onPush = onPush;
113 |
114 | function onPush(cmd, response) {
115 | const obj = ftWebsocket.findCmdObj(cmd);
116 | //通过cmd来区分具体的推送协议
117 | if (obj && obj.description) {
118 | console.log(obj.description, response);
119 | }
120 | },
121 |
122 |
123 |
124 |
125 |
--------------------------------------------------------------------------------
/doc_maker/source/cpp/base.rst:
--------------------------------------------------------------------------------
1 | .. note::
2 |
3 | Futu OpenAPI 文档已于2020年10月16日全新升级,请移步至 `新文档 `_
4 |
5 | 旧的github文档将不再更新,并于2020年11月16日正式停止访问。
6 |
7 |
8 | .. role:: strike
9 | :class: strike
10 | .. role:: red-strengthen
11 | :class: red-strengthen
12 |
13 | ==========
14 | 基础API
15 | ==========
16 |
17 | .. _FutuOpenD: ../intro/FutuOpenDGuide.html
18 | .. _intro: ../intro/intro.html
19 | .. _ConnectFailType: base.html#id3
20 | .. _InitFailType: base.html#id4
21 | .. _FTAPI_InitFail: base.html#id5
22 |
23 | 枚举常量
24 | ---------
25 |
26 | ConnectFailType - 连接错误码
27 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28 |
29 | 连接错误码
30 |
31 | .. cpp:enum:: ConnectFailType
32 |
33 | .. attribute:: Unknown
34 |
35 | 未知错误
36 |
37 | .. attribute:: None
38 |
39 | 没有错误
40 |
41 | .. attribute:: CreateFailed
42 |
43 | socket创建失败
44 |
45 | .. attribute:: CloseFailed
46 |
47 | socket close错误
48 |
49 | .. attribute:: ShutdownFailed
50 |
51 | socket shutdown错误
52 |
53 | .. attribute:: GetHostByNameFailed
54 |
55 | gethostbyname错误
56 |
57 | .. attribute:: GetHostByNameWrong
58 |
59 | gethostbyname调用成功,但返回的结果错误
60 |
61 | .. attribute:: ConnectFailed
62 |
63 | 连接失败
64 |
65 | .. attribute:: BindFailed
66 |
67 | socket bind失败
68 |
69 | .. attribute:: ListenFailed
70 |
71 | socket listen失败
72 |
73 | .. attribute:: SelectReturnError
74 |
75 | socket select错误
76 |
77 | .. attribute:: SendFailed
78 |
79 | socket send失败
80 |
81 | .. attribute:: RecvFailed
82 |
83 | socket recv失败
84 |
85 | --------------------------------------
86 |
87 | InitFailType - 初始化连接协议失败
88 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
89 |
90 | 初始化连接协议失败,即InitConnect协议相关的错误
91 |
92 | .. cpp:enum:: InitFailType
93 |
94 | .. attribute:: Unknow
95 |
96 | 未知错误
97 |
98 | .. attribute:: Timeout
99 |
100 | 超时
101 |
102 | .. attribute:: DisConnect
103 |
104 | 连接断开
105 |
106 | .. attribute:: SeriaNoNotMatch
107 |
108 | 序列号不符
109 |
110 | .. attribute:: SendInitReqFailed
111 |
112 | 发送初始化协议失败
113 |
114 | .. attribute:: OpenDReject
115 |
116 | FutuOpenD回包指定错误,具体错误看描述
117 |
118 | --------------------------------------
119 |
120 | FTAPI_InitFail - 初始化连接协议失败错误值
121 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
122 |
123 | 指定初始化连接协议失败,即InitConnect协议相关的错误,错误值:100。
124 |
125 | --------------------------------------
126 |
127 | FTAPI - API全局工具类。
128 | --------------------------------------
129 |
130 | .. class:: FTAPI
131 |
132 | API全局工具类,提供API初始化销毁以及接口实例创建销毁接口。
133 |
134 | -------------------------------------------------------------------------------------------------
135 |
136 | InitFTApi
137 | ~~~~~~~~~~~~~~~~~
138 |
139 | .. method:: static void InitFTApi()
140 |
141 | 初始化底层通道,程序启动时首先调用
142 |
143 | :return: void
144 |
145 | --------------------------------------------
146 |
147 | UnInitFTApi
148 | ~~~~~~~~~~~~~~~~~
149 |
150 | .. method:: static void InitFTApi()
151 |
152 | 清理底层通道,程序结束时调用
153 |
154 | :return: void
155 |
156 | --------------------------------------------
157 |
158 | CreateQotApi
159 | ~~~~~~~~~~~~~~~~~
160 |
161 | .. method:: FTAPI_Qot* CreateQotApi();
162 |
163 | 创建行情接口实例
164 |
165 | :return: FTAPI_Qot* 行情接口实例指针
166 |
167 | --------------------------------------------
168 |
169 | ReleaseQotApi
170 | ~~~~~~~~~~~~~~~~~
171 |
172 | .. method:: void ReleaseQotApi(FTAPI_Qot* pQot);
173 |
174 |
175 | 销毁行情接口实例。
176 |
177 | :param pQot: 行情接口实例指针
178 | :return: void
179 |
180 | --------------------------------------------
181 |
182 | CreateTrdApi
183 | ~~~~~~~~~~~~~~~~~
184 |
185 | .. method:: FTAPI_Trd* CreateTrdApi();
186 |
187 | 创建交易接口实例
188 |
189 | :return: FTAPI_Trd* 交易接口实例指针
190 |
191 | --------------------------------------------
192 |
193 | ReleaseTrdApi
194 | ~~~~~~~~~~~~~~~~~
195 |
196 | .. method:: void ReleaseTrdApi(FTAPI_Trd* pTrd);
197 |
198 |
199 | 销毁交易接口实例。
200 |
201 | :param pTrd: 交易接口实例指针
202 | :return: void
203 |
204 | --------------------------------------------
205 |
206 |
207 | FTAPI_Conn - 连接层基类
208 | --------------------------------------
209 |
210 | .. class:: FTAPI_Conn
211 |
212 | 连接层基类,提供连接方面公用的功能,FTAPI_Qot以及FTAPI_Trd都继承于该基类。
213 |
214 | -------------------------------------------------------------------------------------------------
215 |
216 | SetClientInfo
217 | ~~~~~~~~~~~~~~~~~
218 |
219 | .. method:: void SetClientInfo(const char* szClientID, Futu::i32_t nClientVer)
220 |
221 | 设置客户端信息
222 |
223 | :param szClientID: 客户端标识
224 | :param nClientVer: 客户端版本
225 | :return: void
226 |
227 | --------------------------------------------
228 |
229 | SetRSAPrivateKey
230 | ~~~~~~~~~~~~~~~~~
231 |
232 | .. method:: void SetRSAPrivateKey(const char* szRSAPrivateKey)
233 |
234 | 设置密钥
235 |
236 | :param strRSAPrivateKey: 密钥
237 | :return: void
238 |
239 | --------------------------------------------
240 |
241 | InitConnect
242 | ~~~~~~~~~~~~~~~~~
243 |
244 | .. method:: bool InitConnect(const char* szIPAddr, Futu::u16_t nPort, bool bEnableEncrypt)
245 |
246 | 初始化连接
247 |
248 | :param szIPAddr: 地址
249 | :param nPort: 端口
250 | :param bEnableEncrypt: 启用加密
251 | :return: bool 是否启动了执行,不代表连接结果,结果通过OnInitConnect回调
252 |
253 | --------------------------------------------
254 |
255 | GetConnectID
256 | ~~~~~~~~~~~~~~~~~
257 |
258 | .. method:: Futu::u64_t GetConnectID()
259 |
260 | 此连接的连接ID,连接的唯一标识,InitConnect协议返回,没有初始化前为0
261 |
262 | :return: Futu::u64_t 连接ID
263 |
264 | --------------------------------------------
265 |
266 | Close
267 | ~~~~~~~~~~~~~~~~~
268 |
269 | .. method:: bool Close()
270 |
271 | 释放内存。当对象不再使用时调用,否则会有内存泄漏。
272 |
273 | :return: bool 是否成功
274 |
275 | --------------------------------------------
276 |
277 |
278 | RegisterConnSpi
279 | ~~~~~~~~~~~~~~~~~
280 |
281 | .. method:: bool RegisterConnSpi(FTSPI_Conn* pSpi)
282 |
283 | 注册回调,用于处理连接相关的事件。
284 |
285 | :param pSpi: 回调实例,该对象没有反注册前不可销毁
286 | :return: bool 是否成功
287 |
288 | --------------------------------------------
289 |
290 | UnregisterConnSpi
291 | ~~~~~~~~~~~~~~~~~
292 |
293 | .. method:: void UnregisterConnSpi()
294 |
295 | 反注册回调
296 |
297 | :return: bool 是否成功
298 |
299 | --------------------------------------------
300 |
301 | FTSPI_Conn - 连接状态回调接口
302 | ------------------------------------------
303 |
304 | .. class:: FTSPI_Conn
305 |
306 | 当与OpenD的连接状态变化时调用此接口。
307 |
308 | ------------------------------------
309 |
310 | OnInitConnect
311 | ~~~~~~~~~~~~~~~~~
312 |
313 | .. method:: void OnInitConnect(FTAPI_Conn* pConn, Futu::i64_t nErrCode, const char* strDesc)
314 |
315 | 初始化连接状态变化。
316 |
317 | :param pConn: 对应连接实例指针
318 | :param nErrCode: 错误码。0表示成功,可以进行后续请求。当高32位为 ConnectFailType_ 类型时,低32位为系统错误码;当高32位等于 FTAPI_InitFail_,则低32位为 InitFailType_ 类型。
319 | :param strDesc: 错误描述
320 | :return: void
321 |
322 | --------------------------------------------
323 |
324 | OnDisConnect
325 | ~~~~~~~~~~~~~~~~~
326 |
327 | .. method:: void OnDisConnect(FTAPI_Conn* pConn, Futu::i64_t nErrCode)
328 |
329 | 连接断开。
330 |
331 | :param pConn: 对应连接实例指针
332 | :param nErrCode: 错误码。高32位为 ConnectFailType_ 类型,低32位为系统错误码;
333 | :return: void
334 |
335 |
336 |
337 |
338 |
339 |
340 |
341 |
342 |
343 |
344 |
345 |
346 |
347 |
348 |
349 |
350 |
351 |
352 |
353 |
354 |
355 |
356 |
357 |
--------------------------------------------------------------------------------
/doc_maker/source/conf.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 | # -*- coding: utf-8 -*-
3 | #
4 | # futu-api-doc documentation build configuration file, created by
5 | # sphinx-quickstart on Thu Aug 31 10:00:54 2017.
6 | #
7 | # This file is execfile()d with the current directory set to its
8 | # containing dir.
9 | #
10 | # Note that not all possible configuration values are present in this
11 | # autogenerated file.
12 | #
13 | # All configuration values have a default; values that are commented out
14 | # serve to show the default.
15 |
16 | # If extensions (or modules to document with autodoc) are in another directory,
17 | # add these directories to sys.path here. If the directory is relative to the
18 | # documentation root, use os.path.abspath to make it absolute, like shown here.
19 | #
20 | # import os
21 | # import sys
22 | # sys.path.insert(0, os.path.abspath('.'))
23 |
24 | import sys
25 | import os
26 | from os import path
27 |
28 | sys.path.insert(0, path.dirname(path.dirname(path.dirname(__file__))))
29 |
30 |
31 | # -- General configuration ------------------------------------------------
32 |
33 | # If your documentation needs a minimal Sphinx version, state it here.
34 | #
35 | # needs_sphinx = '1.0'
36 |
37 | # Add any Sphinx extension module names here, as strings. They can be
38 | # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
39 | # ones.
40 | # extensions = ['sphinx.ext.githubpages']
41 |
42 | extensions = [
43 | 'sphinx.ext.autodoc',
44 | 'sphinx.ext.autosummary',
45 | 'sphinx.ext.viewcode',
46 | 'sphinx.ext.todo',
47 | 'nbsphinx',
48 | ]
49 |
50 | # Add any paths that contain templates here, relative to this directory.
51 | templates_path = ['_templates']
52 |
53 | # The suffix(es) of source filenames.
54 | # You can specify multiple suffix as a list of string:
55 | #
56 | # source_suffix = ['.rst', '.md']
57 | source_suffix = '.rst'
58 |
59 | # The master toctree document.
60 | master_doc = 'index'
61 |
62 | # General information about the project.
63 | project = 'futu-api-doc'
64 | copyright = '2020, futu'
65 | author = 'futu'
66 |
67 | # The version info for the project you're documenting, acts as replacement for
68 | # |version| and |release|, also used in various other places throughout the
69 | # built documents.
70 | #
71 | # The short X.Y version.
72 | version = '3.25'
73 | # The full version, including alpha/beta/rc tags.
74 | release = '3.25'
75 |
76 | # The language for content autogenerated by Sphinx. Refer to documentation
77 | # for a list of supported languages.
78 | #
79 | # This is also used if you do content translation via gettext catalogs.
80 | # Usually you set "language" from the command line for these cases.
81 | language = 'zh'
82 |
83 | # List of patterns, relative to source directory, that match files and
84 | # directories to ignore when looking for source files.
85 | # This patterns also effect to html_static_path and html_extra_path
86 | exclude_patterns = []
87 |
88 | # The name of the Pygments (syntax highlighting) style to use.
89 | pygments_style = 'default' # 'sphinx'
90 |
91 | # If true, `todo` and `todoList` produce output, else they produce nothing.
92 | todo_include_todos = True
93 |
94 |
95 | # -- Options for HTML output ----------------------------------------------
96 |
97 | # The theme to use for HTML and HTML Help pages. See the documentation for
98 | # a list of builtin themes.
99 | #
100 |
101 | html_theme = 'sphinx_rtd_theme'
102 | import sphinx_rtd_theme
103 | html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
104 |
105 | def setup(app):
106 | app.add_stylesheet("css/myStyle.css")
107 |
108 | # Theme options are theme-specific and customize the look and feel of a theme
109 | # further. For a list of options available for each theme, see the
110 | # documentation.
111 | #
112 |
113 | # html_theme_options = {}
114 |
115 | # Add any paths that contain custom static files (such as style sheets) here,
116 | # relative to this directory. They are copied after the builtin static files,
117 | # so a file named "default.css" will overwrite the builtin "default.css".
118 |
119 |
120 | # import sphinx_bootstrap_theme
121 | # html_theme = 'bootstrap'
122 | # html_theme_path = sphinx_bootstrap_theme.get_html_theme_path()
123 | # html_theme_options = {
124 | # 'navbar_title': "Sandglass",
125 | # 'globaltoc_depth': 2,
126 | # 'globaltoc_includehidden': "true",
127 | # 'navbar_class': "navbar navbar-inverse",
128 | # 'navbar_fixed_top': "true",
129 | # 'bootswatch_theme': "united",
130 | # 'bootstrap_version': "3",
131 | # }
132 |
133 |
134 | html_static_path = ['_static']
135 |
136 |
137 | # -- Options for HTMLHelp output ------------------------------------------
138 |
139 | #
140 | # html_domain_indices = True
141 |
142 | # If false, no index is generated.
143 |
144 | html_use_index = True
145 |
146 |
147 | # If true, the index is split into individual pages for each letter.
148 | #
149 | # html_split_index = False
150 |
151 | # If true, links to the reST sources are added to the pages.
152 | #
153 | # html_show_sourcelink = True
154 |
155 | # If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
156 |
157 | html_show_sphinx = False
158 |
159 | # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
160 |
161 | html_show_copyright = True
162 |
163 |
164 | # Output file base name for HTML help builder.
165 | htmlhelp_basename = 'futuapidoc'
166 |
167 | # Use this kernel instead of the one stored in the notebook metadata:
168 | nbsphinx_kernel_name = 'python3'
169 |
170 | # Execute notebooks before conversion: 'always', 'never', 'auto' (default)
171 | nbsphinx_execute = 'never'
172 |
173 | # Language to be used for generating the HTML full-text search index.
174 | # Sphinx supports the following languages:
175 | # 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja'
176 | # 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr', 'zh'
177 | html_search_language = 'zh'
178 |
179 | # -- Options for LaTeX output ---------------------------------------------
180 |
181 | latex_elements = {
182 | # The paper size ('letterpaper' or 'a4paper').
183 | #
184 | # 'papersize': 'letterpaper',
185 |
186 | # The font size ('10pt', '11pt' or '12pt').
187 | #
188 | # 'pointsize': '10pt',
189 |
190 | # Additional stuff for the LaTeX preamble.
191 | #
192 | # 'preamble': '',
193 |
194 | # Latex figure (float) alignment
195 | #
196 | # 'figure_align': 'htbp',
197 | }
198 |
199 | # Grouping the document tree into LaTeX files. List of tuples
200 | # (source start file, target name, title,
201 | # author, documentclass [howto, manual, or own class]).
202 | latex_documents = [
203 | (master_doc, 'futu-api-doc.tex', 'futu-api-doc Documentation',
204 | 'futu', 'manual'),
205 | ]
206 |
207 |
208 | # -- Options for manual page output ---------------------------------------
209 |
210 | # One entry per manual page. List of tuples
211 | # (source start file, name, description, authors, manual section).
212 | man_pages = [
213 | (master_doc, 'futu-api-doc', 'futu-api-doc Documentation',
214 | [author], 1)
215 | ]
216 |
217 |
218 | # -- Options for Texinfo output -------------------------------------------
219 |
220 | # Grouping the document tree into Texinfo files. List of tuples
221 | # (source start file, target name, title, author,
222 | # dir menu entry, description, category)
223 | texinfo_documents = [
224 | (master_doc, 'futu-api-doc', 'futu-api-doc Documentation',
225 | author, 'futu-api-doc', 'One line description of project.',
226 | 'Miscellaneous'),
227 | ]
228 |
229 |
230 |
231 |
--------------------------------------------------------------------------------
/doc_maker/source/cpp/qot.rst:
--------------------------------------------------------------------------------
1 | .. note::
2 |
3 | Futu OpenAPI 文档已于2020年10月16日全新升级,请移步至 `新文档 `_
4 |
5 | 旧的github文档将不再更新,并于2020年11月16日正式停止访问。
6 |
7 |
8 | .. role:: strike
9 | :class: strike
10 | .. role:: red-strengthen
11 | :class: red-strengthen
12 |
13 | ==========
14 | 行情API
15 | ==========
16 |
17 | --------------
18 |
19 | .. _GetGlobalState: ../protocol/base_define.html#getglobalstate-proto-1002
20 | .. _Sub: ../protocol/quote_protocol.html#qot-sub-proto-3001
21 | .. _RegQotPush: ../protocol/quote_protocol.html#qot-regqotpush-proto-3002
22 | .. _GetSubInfo: ../protocol/quote_protocol.html#qot-getsubinfo-proto-3003
23 | .. _GetTicker: ../protocol/quote_protocol.html#qot-getticker-proto-3010
24 | .. _GetBasicQot: ../protocol/quote_protocol.html#qot-getbasicqot-proto-3004
25 | .. _GetOrderBook: ../protocol/quote_protocol.html#qot-getorderbook-proto-3012
26 | .. _GetKL: ../protocol/quote_protocol.html#qot-getkl-proto-3006k
27 | .. _GetRT: ../protocol/quote_protocol.html#qot-getrt-proto-3008
28 | .. _GetBroker: ../protocol/quote_protocol.html#qot-getbroker-proto-3014
29 | .. _RequestRehab: ../protocol/quote_protocol.html#qot-requestrehab-proto-3105
30 | .. _RequestHistoryKL: ../protocol/quote_protocol.html#qot-requesthistorykl-proto-3103k
31 | .. _RequestHistoryKLQuota: ../protocol/quote_protocol.html#qot-requesthistoryklquota-proto-3104k
32 | .. _GetTradeDate: ../protocol/quote_protocol.html#qot-gettradedate-proto-3200
33 | .. _GetStaticInfo: ../protocol/quote_protocol.html#qot-getstaticinfo-proto-3202
34 | .. _GetSecuritySnapshot: ../protocol/quote_protocol.html#qot-getsecuritysnapshot-proto-3203
35 | .. _GetPlateSet: ../protocol/quote_protocol.html#qot-getplateset-proto-3204
36 | .. _GetPlateSecurity: ../protocol/quote_protocol.html#qot-getplatesecurity-proto-3205
37 | .. _GetReference: ../protocol/quote_protocol.html#qot-getreference-proto-3206
38 | .. _GetOwnerPlate: ../protocol/quote_protocol.html#qot-getownerplate-proto-3207
39 | .. _GetHoldingChangeList: ../protocol/quote_protocol.html#qot-getholdingchangelist-proto-3208
40 | .. _GetOptionChain: ../protocol/quote_protocol.html#qot-getoptionchain-proto-3209
41 | .. _GetWarrant: ../protocol/quote_protocol.html#qot-getwarrant-proto-3210
42 | .. _GetCapitalFlow: ../protocol/quote_protocol.html#qot-getcapitalflow-proto-3211
43 | .. _GetCapitalDistribution: ../protocol/quote_protocol.html#qot-getcapitaldistribution-proto-3212
44 | .. _GetUserSecurity: ../protocol/quote_protocol.html#qot-getusersecurity-proto-3213
45 | .. _ModifyUserSecurity: ../protocol/quote_protocol.html#qot-modifyusersecurity-proto-3214
46 | .. _GetCodeChange: ../protocol/quote_protocol.html#qot-getcodechange-proto-3216
47 | .. _GetIpoList: ../protocol/quote_protocol.html#qot-getipolist-proto-3217ipo
48 | .. _GetFutureInfo: ../protocol/quote_protocol.html#qot-getfutureinfo-proto-3218
49 | .. _RequestTradeDate: ../protocol/quote_protocol.html#qot-requesttradedate-proto-3219
50 | .. _SetPriceReminder: ../protocol/quote_protocol.html#qot-setpricereminder-proto-3220
51 | .. _GetPriceReminder: ../protocol/quote_protocol.html#qot-getpricereminder-proto-3221
52 | .. _OnPush_Notify: ../protocol/base_define.html#notify-proto-1003
53 | .. _OnPush_UpdateBasicQot: ../protocol/quote_protocol.html#qot-updatebasicqot-proto-3005
54 | .. _OnPush_UpdateKL: ../protocol/quote_protocol.html#qot-updatekl-proto-3007k
55 | .. _OnPush_UpdateRT: ../protocol/quote_protocol.html#qot-updatert-proto-3009
56 | .. _OnPush_UpdateTicker: ../protocol/quote_protocol.html#qot-updateticker-proto-3011
57 | .. _OnPush_UpdateOrderBook: ../protocol/quote_protocol.html#qot-updateorderbook-proto-3013
58 | .. _OnPush_UpdateBroker: ../protocol/quote_protocol.html#qot-updatebroker-proto-3015
59 | .. _OnPush_UpdatePriceReminder: ../protocol/quote_protocol.html#qot-updatepricereminder-proto-3019
60 | ---------------------------------------------------
61 | 主要函数列表
62 | ---------------
63 |
64 | FTAPI_Qot成员函数
65 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
66 | + FTAPI_Qot继承自\ `FTAPI_Conn <./base.html#ftapi-conn>`_ ,连接层调用接口参考FTAPI_Conn说明。
67 |
68 | ================================ ============================================== ==============================
69 | 函数名(点开链接可查看具体协议) 功能简介 回调函数(FTSPI_Qot)
70 | ================================ ============================================== ==============================
71 | GetGlobalState_ 获取全局状态 OnReply_GetGlobalState
72 | Sub_ 订阅或者反订阅 OnReply_Sub
73 | RegQotPush_ 注册推送 OnReply_RegQotPush
74 | GetSubInfo_ 获取订阅信息 OnReply_GetSubInfo
75 | GetTicker_ 获取逐笔,调用该接口前需要先订阅 OnReply_GetTicker
76 | GetBasicQot_ 获取基本行情,调用该接口前需要先订阅 OnReply_GetBasicQot
77 | GetOrderBook_ 获取摆盘,调用该接口前需要先订阅 OnReply_GetOrderBook
78 | GetKL_ 获取K线,调用该接口前需要先订阅 OnReply_GetKL
79 | GetRT_ 获取分时,调用该接口前需要先订阅 OnReply_GetRT
80 | GetBroker_ 获取经纪队列,调用该接口前需要先订阅 OnReply_GetBroker
81 | RequestRehab_ 在线请求历史复权信息,不读本地历史数据DB OnReply_RequestRehab
82 | RequestHistoryKL_ 在线请求历史K线,不读本地历史数据DB OnReply_RequestHistoryKL
83 | RequestHistoryKLQuota_ 获取历史K线已经用掉的额度 OnReply_RequestHistoryKLQuota
84 | GetTradeDate_ 获取交易日 OnReply_GetTradeDate
85 | GetStaticInfo_ 获取静态信息 OnReply_GetStaticInfo
86 | GetSecuritySnapshot_ 获取股票快照 OnReply_GetSecuritySnapshot
87 | GetPlateSet_ 获取板块集合下的板块 OnReply_GetPlateSet
88 | GetPlateSecurity_ 获取板块下的股票 OnReply_GetPlateSecurity
89 | GetReference_ 获取相关股票 OnReply_GetReference
90 | GetOwnerPlate_ 获取股票所属的板块 OnReply_GetOwnerPlate
91 | GetHoldingChangeList_ 获取大股东持股变化列表 OnReply_GetHoldingChangeList
92 | GetOptionChain_ 筛选期权 OnReply_GetOptionChain
93 | GetWarrant_ 筛选窝轮 OnReply_GetWarrant
94 | GetCapitalFlow_ 获取资金流向 OnReply_GetCapitalFlow
95 | GetCapitalDistribution_ 获取资金分布 OnReply_GetCapitalDistribution
96 | GetUserSecurity_ 获取自选股分组下的股票 OnReply_GetUserSecurity
97 | ModifyUserSecurity_ 修改自选股分组下的股票 OnReply_ModifyUserSecurity
98 | GetIpolist_ 获取ipo数据 OnReply_GetIpolist
99 | GetCodeChange_ 获取股票代码变更 OnReply_GetCodeChange
100 | GetFutureInfo_ 获取期货合约资料 OnReply_GetFutureInfo
101 | RequestTradeDate_ 获取市场交易日,在线拉取不在本地计算 OnReply_RequestTradeDate
102 | SetPriceReminder_ 设置到价提醒 OnReply_SetPriceReminder
103 | GetPriceReminder_ 获取到价提醒 OnReply_GetPriceReminder
104 | ================================ ============================================== ==============================
105 |
106 | FTSPI_Qot行情推送接收接口函数
107 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
108 | ================================== =================================================
109 | 回调函数(点开链接可查看具体协议) 功能简介
110 | ================================== =================================================
111 | OnPush_Notify_ 推送通知
112 | OnPush_UpdateBasicQot_ 推送基本行情
113 | OnPush_UpdateKL_ 推送K线
114 | OnPush_UpdateRT_ 推送分时
115 | OnPush_UpdateTicker_ 推送逐笔
116 | OnPush_UpdateOrderBook_ 推送买卖盘
117 | OnPush_UpdateBroker_ 推送经纪队列
118 | OnPush_UpdatePriceReminder_ 推送到价提醒
119 | ================================== =================================================
120 |
121 |
--------------------------------------------------------------------------------
/doc_maker/source/net/Quote_API.rst:
--------------------------------------------------------------------------------
1 | .. note::
2 |
3 | Futu OpenAPI 文档已于2020年10月16日全新升级,请移步至 `新文档 `_
4 |
5 | 旧的github文档将不再更新,并于2020年11月16日正式停止访问。
6 |
7 |
8 | .. role:: strike
9 | :class: strike
10 | .. role:: red-strengthen
11 | :class: red-strengthen
12 |
13 | =======
14 | 行情API
15 | =======
16 |
17 |
18 | .. _GetGlobalState: ../protocol/base_define.html#getglobalstate-proto-1002
19 | .. _Sub: ../protocol/quote_protocol.html#qot-sub-proto-3001
20 | .. _RegQotPush: ../protocol/quote_protocol.html#qot-regqotpush-proto-3002
21 | .. _GetSubInfo: ../protocol/quote_protocol.html#qot-getsubinfo-proto-3003
22 | .. _GetTicker: ../protocol/quote_protocol.html#qot-getticker-proto-3010
23 | .. _GetBasicQot: ../protocol/quote_protocol.html#qot-getbasicqot-proto-3004
24 | .. _GetOrderBook: ../protocol/quote_protocol.html#qot-getorderbook-proto-3012
25 | .. _GetKL: ../protocol/quote_protocol.html#qot-getkl-proto-3006k
26 | .. _GetRT: ../protocol/quote_protocol.html#qot-getrt-proto-3008
27 | .. _GetBroker: ../protocol/quote_protocol.html#qot-getbroker-proto-3014
28 | .. _GetRehab: ../protocol/quote_protocol.html#qot-getrehab-proto-3102
29 | .. _RequestRehab: ../protocol/quote_protocol.html#qot-requestrehab-proto-3105
30 | .. _RequestHistoryKL: ../protocol/quote_protocol.html#qot-requesthistorykl-proto-3103k
31 | .. _RequestHistoryKLQuota: ../protocol/quote_protocol.html#qot-requesthistoryklquota-proto-3104k
32 | .. _GetTradeDate: ../protocol/quote_protocol.html#qot-gettradedate-proto-3200
33 | .. _GetStaticInfo: ../protocol/quote_protocol.html#qot-getstaticinfo-proto-3202
34 | .. _GetSecuritySnapshot: ../protocol/quote_protocol.html#qot-getsecuritysnapshot-proto-3203
35 | .. _GetPlateSet: ../protocol/quote_protocol.html#qot-getplateset-proto-3204
36 | .. _GetPlateSecurity: ../protocol/quote_protocol.html#qot-getplatesecurity-proto-3205
37 | .. _GetReference: ../protocol/quote_protocol.html#qot-getreference-proto-3206
38 | .. _GetOwnerPlate: ../protocol/quote_protocol.html#qot-getownerplate-proto-3207
39 | .. _GetHoldingChangeList: ../protocol/quote_protocol.html#qot-getholdingchangelist-proto-3208
40 | .. _GetOptionChain: ../protocol/quote_protocol.html#qot-getoptionchain-proto-3209
41 | .. _GetWarrant: ../protocol/quote_protocol.html#qot-getwarrant-proto-3210
42 | .. _GetCapitalFlow: ../protocol/quote_protocol.html#qot-getcapitalflow-proto-3211
43 | .. _GetCapitalDistribution: ../protocol/quote_protocol.html#qot-getcapitaldistribution-proto-3212
44 | .. _GetUserSecurity: ../protocol/quote_protocol.html#qot-getusersecurity-proto-3213
45 | .. _ModifyUserSecurity: ../protocol/quote_protocol.html#qot-modifyusersecurity-proto-3214
46 | .. _Notify: ../protocol/base_define.html#notify-proto-1003
47 | .. _GetCodeChange: ../protocol/quote_protocol.html#qot-getcodechange-proto-3216
48 | .. _GetIpoList: ../protocol/quote_protocol.html#qot-getipolist-proto-3217ipo
49 | .. _GetFutureInfo: ../protocol/quote_protocol.html#qot-getfutureinfo-proto-3218
50 | .. _RequestTradeDate: ../protocol/quote_protocol.html#qot-requesttradedate-proto-3219
51 | .. _StockFilter: ../protocol/quote_protocol.html#qot-stockfilter-proto-3215
52 | .. _SetPriceReminder: ../protocol/quote_protocol.html#qot-setpricereminder-proto-3220
53 | .. _GetPriceReminder: ../protocol/quote_protocol.html#qot-getpricereminder-proto-3221
54 | .. _GetUserSecurityGroup: ../protocol/quote_protocol.html#qot-getusersecuritygroup-proto-3222
55 | .. _UpdateBasicQot: ../protocol/quote_protocol.html#qot-updatebasicqot-proto-3005
56 | .. _UpdateKL: ../protocol/quote_protocol.html#qot-updatekl-proto-3007k
57 | .. _UpdateRT: ../protocol/quote_protocol.html#qot-updatert-proto-3009
58 | .. _UpdateTicker: ../protocol/quote_protocol.html#qot-updateticker-proto-3011
59 | .. _UpdateOrderBook: ../protocol/quote_protocol.html#qot-updateorderbook-proto-3013
60 | .. _UpdateBroker: ../protocol/quote_protocol.html#qot-updatebroker-proto-3015
61 | .. _UpdatePriceReminder: ../protocol/quote_protocol.html#qot-updatepricereminder-proto-3019
62 |
63 | ---------------------------------------------------
64 |
65 |
66 | FTAPI_Qot功能函数
67 | -------------------
68 |
69 | + FTAPI_Qot继承自\ `FTAPI_Conn <./Base_API.html#ftapi-conn>`_ ,连接层调用接口参考FTAPI_Conn说明。
70 |
71 | ================================ ============================================== ==================================
72 | 函数名(点开链接可查看具体协议) 功能简介 回调函数(FTSPI_Qot)
73 | ================================ ============================================== ==================================
74 | GetGlobalState_ 获取全局状态 OnReply_GetGlobalState
75 | Sub_ 订阅或者反订阅 OnReply_Sub
76 | RegQotPush_ 注册推送 OnReply_RegQotPush
77 | GetSubInfo_ 获取订阅信息 OnReply_GetSubInfo
78 | GetTicker_ 获取逐笔,调用该接口前需要先订阅 OnReply_GetTicker
79 | GetBasicQot_ 获取基本行情,调用该接口前需要先订阅 OnReply_GetBasicQot
80 | GetOrderBook_ 获取摆盘,调用该接口前需要先订阅 OnReply_GetOrderBook
81 | GetKL_ 获取K线,调用该接口前需要先订阅 OnReply_GetKL
82 | GetRT_ 获取分时,调用该接口前需要先订阅 OnReply_GetRT
83 | GetBroker_ 获取经纪队列,调用该接口前需要先订阅 OnReply_GetBroker
84 | RequestRehab_ 在线请求历史复权信息,不读本地历史数据DB OnReply_RequestRehab
85 | RequestHistoryKL_ 在线请求历史K线,不读本地历史数据DB OnReply_RequestHistoryKL
86 | RequestHistoryKLQuota_ 获取历史K线已经用掉的额度 OnReply_RequestHistoryKLQuota
87 | GetTradeDate_ 获取交易日 OnReply_GetTradeDate
88 | GetStaticInfo_ 获取静态信息 OnReply_GetStaticInfo
89 | GetSecuritySnapshot_ 获取股票快照 OnReply_GetSecuritySnapshot
90 | GetPlateSet_ 获取板块集合下的板块 OnReply_GetPlateSet
91 | GetPlateSecurity_ 获取板块下的股票 OnReply_GetPlateSecurity
92 | GetReference_ 获取相关股票 OnReply_GetReference
93 | GetOwnerPlate_ 获取股票所属的板块 OnReply_GetOwnerPlate
94 | GetHoldingChangeList_ 获取大股东持股变化列表 OnReply_GetHoldingChangeList
95 | GetOptionChain_ 筛选期权 OnReply_GetOptionChain
96 | GetWarrant_ 筛选窝轮 OnReply_GetWarrant
97 | GetCapitalFlow_ 获取资金流向 OnReply_GetCapitalFlow
98 | GetCapitalDistribution_ 获取资金分布 OnReply_GetCapitalDistribution
99 | GetUserSecurity_ 获取自选股分组下的股票 OnReply_GetUserSecurity
100 | ModifyUserSecurity_ 修改自选股分组下的股票 OnReply_ModifyUserSecurity
101 | GetIpolist_ 获取ipo数据 OnReply_GetIpoList
102 | GetCodeChange_ 获取股票代码变更 OnReply_GetCodeChange
103 | GetFutureInfo_ 获取期货合约资料 OnReply_GetFutureInfo
104 | StockFilter_ 筛选股票 OnReply_StockFilter
105 | RequestTradeDate_ 在线拉取交易日 OnReply_RequestTradeDate
106 | SetPriceReminder_ 设置到价提醒 OnReply_SetPriceReminder
107 | GetPriceReminder_ 获取到价提醒 OnReply_GetPriceReminder
108 | GetUserSecurityGroup_ 获取自选股分组 OnReply_GetUserSecurityGroup
109 | ================================ ============================================== ==================================
110 |
111 |
112 | FTSPI_Qot行情推送接收接口函数
113 | -----------------------------
114 |
115 | ================================== =================================================
116 | 回调函数(点开链接可查看具体协议) 功能简介
117 | ================================== =================================================
118 | Notify_ 推送通知
119 | UpdateBasicQot_ 推送基本行情
120 | UpdateKL_ 推送K线
121 | UpdateRT_ 推送分时
122 | UpdateTicker_ 推送逐笔
123 | UpdateOrderBook_ 推送买卖盘
124 | UpdateBroker_ 推送经纪队列
125 | UpdatePriceReminder_ 推送到价提醒通知
126 | ================================== =================================================
127 |
128 |
129 |
--------------------------------------------------------------------------------
/doc_maker/source/java/Base_API.rst:
--------------------------------------------------------------------------------
1 | .. note::
2 |
3 | Futu OpenAPI 文档已于2020年10月16日全新升级,请移步至 `新文档 `_
4 |
5 | 旧的github文档将不再更新,并于2020年11月16日正式停止访问。
6 |
7 |
8 | .. role:: strike
9 | :class: strike
10 | .. role:: red-strengthen
11 | :class: red-strengthen
12 |
13 | ========
14 | 基础API
15 | ========
16 |
17 | .. _getGlobalState: ../protocol/base_define.html#getglobalstate-proto-1002
18 | .. _sub: ../protocol/quote_protocol.html#qot-sub-proto-3001
19 | .. _regQotPush: ../protocol/quote_protocol.html#qot-regqotpush-proto-3002
20 | .. _getSubInfo: ../protocol/quote_protocol.html#qot-getsubinfo-proto-3003
21 | .. _getTicker: ../protocol/quote_protocol.html#qot-getticker-proto-3010
22 | .. _getBasicQot: ../protocol/quote_protocol.html#qot-getbasicqot-proto-3004
23 | .. _getOrderBook: ../protocol/quote_protocol.html#qot-getorderbook-proto-3012
24 | .. _getKL: ../protocol/quote_protocol.html#qot-getkl-proto-3006k
25 | .. _getRT: ../protocol/quote_protocol.html#qot-getrt-proto-3008
26 | .. _getBroker: ../protocol/quote_protocol.html#qot-getbroker-proto-3014
27 | .. _getRehab: ../protocol/quote_protocol.html#qot-getrehab-proto-3102
28 | .. _requestRehab: ../protocol/quote_protocol.html#qot-requestrehab-proto-3105
29 | .. _requestHistoryKL: ../protocol/quote_protocol.html#qot-requesthistorykl-proto-3103k
30 | .. _requestHistoryKLQuota: ../protocol/quote_protocol.html#qot-requesthistoryklquota-proto-3104k
31 | .. _getTradeDate: ../protocol/quote_protocol.html#qot-gettradedate-proto-3200
32 | .. _getStaticInfo: ../protocol/quote_protocol.html#qot-getstaticinfo-proto-3202
33 | .. _getSecuritySnapshot: ../protocol/quote_protocol.html#qot-getsecuritysnapshot-proto-3203
34 | .. _getPlateSet: ../protocol/quote_protocol.html#qot-getplateset-proto-3204
35 | .. _getPlateSecurity: ../protocol/quote_protocol.html#qot-getplatesecurity-proto-3205
36 | .. _getReference: ../protocol/quote_protocol.html#qot-getreference-proto-3206
37 | .. _getOwnerPlate: ../protocol/quote_protocol.html#qot-getownerplate-proto-3207
38 | .. _getHoldingChangeList: ../protocol/quote_protocol.html#qot-getholdingchangelist-proto-3208
39 | .. _getOptionChain: ../protocol/quote_protocol.html#qot-getoptionchain-proto-3209
40 | .. _getWarrant: ../protocol/quote_protocol.html#qot-getwarrant-proto-3210
41 | .. _getCapitalFlow: ../protocol/quote_protocol.html#qot-getcapitalflow-proto-3211
42 | .. _getCapitalDistribution: ../protocol/quote_protocol.html#qot-getcapitaldistribution-proto-3212
43 | .. _getUserSecurity: ../protocol/quote_protocol.html#qot-getusersecurity-proto-3213
44 | .. _modifyUserSecurity: ../protocol/quote_protocol.html#qot-modifyusersecurity-proto-3214
45 | .. _notify: ../protocol/base_define.html#notify-proto-1003
46 | .. _updateBasicQot: ../protocol/quote_protocol.html#qot-updatebasicqot-proto-3005
47 | .. _updateKL: ../protocol/quote_protocol.html#qot-updatekl-proto-3007
48 | .. _updateRT: ../protocol/quote_protocol.html#qot-updatert-proto-3009
49 | .. _updateTicker: ../protocol/quote_protocol.html#qot-updateticker-proto-3011
50 | .. _updateOrderBook: ../protocol/quote_protocol.html#qot-updateorderbook-proto-3013
51 | .. _updateBroker: ../protocol/quote_protocol.html#qot-updatebroker-proto-3015
52 | .. _updateOrderDetail: ../protocol/quote_protocol.html#qot-updateorderdetail-proto-3017
53 | .. _getAccList: ../protocol/trade_protocol.html#trd-getacclist-proto-2001
54 | .. _unlockTrade: ../protocol/trade_protocol.html#trd-unlocktrade-proto-2005
55 | .. _subAccPush: ../protocol/trade_protocol.html#trd-subaccpush-proto-2008
56 | .. _getFunds: ../protocol/trade_protocol.html#trd-getfunds-proto-2101
57 | .. _getPositionList: ../protocol/trade_protocol.html#trd-getpositionlist-proto-2102
58 | .. _getMaxTrdQtys: ../protocol/trade_protocol.html#trd-getmaxtrdqtys-proto-2111
59 | .. _getOrderList: ../protocol/trade_protocol.html#trd-getorderlist-proto-2201
60 | .. _getOrderFillList: ../protocol/trade_protocol.html#trd-getorderfilllist-proto-2211
61 | .. _getHistoryOrderList: ../protocol/trade_protocol.html#trd-gethistoryorderlist-proto-2221
62 | .. _getHistoryOrderFillList: ../protocol/trade_protocol.html#trd-gethistoryorderfilllist-proto-2222
63 | .. _updateOrder: ../protocol/trade_protocol.html#trd-updateorder-proto-2208
64 | .. _updateOrderFill: ../protocol/trade_protocol.html#trd-updateorderfill-proto-2218
65 | .. _rsa: ../intro/FutuOpenDGuide.html#rsa
66 |
67 |
68 | 枚举常量
69 | ---------
70 |
71 | ConnectFailType - 连接错误码
72 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
73 |
74 | 连接错误码
75 |
76 | .. cpp:enum:: ConnectFailType
77 |
78 | .. attribute:: UNKNOWN
79 |
80 | 未知错误
81 |
82 | .. attribute:: NONE
83 |
84 | 没有错误
85 |
86 | .. attribute:: CREATEFAILED
87 |
88 | socket创建失败
89 |
90 | .. attribute:: CLOSEFAILED
91 |
92 | socket close错误
93 |
94 | .. attribute:: SHUTDOWNFAILED
95 |
96 | socket shutdown错误
97 |
98 | .. attribute:: GETHOSTBYNAMEFAILED
99 |
100 | gethostbyname错误
101 |
102 | .. attribute:: GETHOSTBYNAMEWRONG
103 |
104 | gethostbyname调用成功,但返回的结果错误
105 |
106 | .. attribute:: CONNECTFAILED
107 |
108 | 连接失败
109 |
110 | .. attribute:: BINDFAILED
111 |
112 | socket bind失败
113 |
114 | .. attribute:: LISTENFAILED
115 |
116 | socket listen失败
117 |
118 | .. attribute:: SELECTRETURNERROR
119 |
120 | socket select错误
121 |
122 | .. attribute:: SENDFAILED
123 |
124 | socket send失败
125 |
126 | .. attribute:: RECVFAILED
127 |
128 | socket recv失败
129 |
130 | --------------------------------------
131 |
132 | InitFailType - 初始化连接协议失败
133 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
134 |
135 | 初始化连接协议失败,即InitConnect协议相关的错误
136 |
137 | .. cpp:enum:: InitFailType
138 |
139 | .. attribute:: UNKNOWN
140 |
141 | 未知错误
142 |
143 | .. attribute:: TIMEOUT
144 |
145 | 超时
146 |
147 | .. attribute:: DISCONNECT
148 |
149 | 连接断开
150 |
151 | .. attribute:: SERIANONOTMATCH
152 |
153 | 序列号不符
154 |
155 | .. attribute:: SENDINITREQFAILED
156 |
157 | 发送初始化协议失败
158 |
159 | .. attribute:: OPENDREJECT
160 |
161 | FutuOpenD回包指定错误,具体错误看描述
162 |
163 | --------------------------------------
164 |
165 |
166 | 主要函数列表
167 | ---------------
168 |
169 | FTAPI - API全局功能。
170 | --------------------------------------
171 |
172 | .. class:: FTAPI
173 |
174 | API全局配置类,初始化和全局配置类。
175 |
176 | -------------------------------------------------------------------------------------------------
177 |
178 | init
179 | ~~~~~~~~~~~~~~~~~
180 |
181 | .. method:: static void init()
182 |
183 | 初始化底层通道,程序启动时首先调用
184 |
185 | :return: void
186 |
187 | --------------------------------------------
188 |
189 | unInit
190 | ~~~~~~~~~~~~~~~~~
191 |
192 | .. method:: static void unInit()
193 |
194 | 清理底层通道,程序结束时调用
195 |
196 | :return: void
197 |
198 | --------------------------------------------
199 |
200 |
201 | FTAPI_Conn连接层基类
202 | -----------------------
203 |
204 | .. class:: FTAPI
205 |
206 | API功能基类,提供连接方面公用的功能。FTAPI_Qot(行情)和FTAPI_Trd(交易)都继承该类。
207 |
208 | -------------------------------------------------------------------------------------------------
209 |
210 | setConnSpi
211 | ~~~~~~~~~~~~~~~~~
212 |
213 | .. method:: void setConnSpi(FTSPI_Conn callback)
214 |
215 | 设置连接相关回调。
216 |
217 | :param callback: 参加下面 `FTSPI_Conn` 的说明
218 | :return: void
219 |
220 | --------------------------------------------
221 |
222 | initConnect
223 | ~~~~~~~~~~~~~~~~~
224 |
225 | .. method:: boolean initConnect(String ip, short port, boolean isEnableEncrypt)
226 |
227 | 初始化连接信息。
228 |
229 | :param ip: 连接地址
230 | :param port: 连接端口号
231 | :param isEnableEncrypt: 是否允许加密
232 | :return: bool 初始化失败返回false,其他错误依据callback返回
233 |
234 | --------------------------------------------
235 |
236 | setRSAPrivateKey
237 | ~~~~~~~~~~~~~~~~~
238 |
239 | .. method:: void setRSAPrivateKey(String key)
240 |
241 | 设置密钥。
242 |
243 | :param key: 加密密钥。格式见 rsa_
244 | :return: void
245 |
246 | --------------------------------------------
247 |
248 | getConnectID
249 | ~~~~~~~~~~~~~~~~~
250 |
251 | .. method:: long getConnectID()
252 |
253 | 获取此连接的连接ID,连接的唯一标识,InitConnect协议返回,没有初始化前为0
254 |
255 | :return: long
256 |
257 | --------------------------------------------
258 |
259 | close
260 | ~~~~~~~~~~~~~~~~~
261 |
262 | .. method:: void close()
263 |
264 | 释放内存。当对象不再使用时调用,否则会有内存泄漏。
265 |
266 | :return: void
267 |
268 | --------------------------------------------
269 |
270 | FTSPI_Conn - 连接状态回调接口
271 | ------------------------------------------
272 |
273 | .. class:: interface FTSPI_Conn
274 |
275 | 当与OpenD的连接状态变化时调用此接口。
276 |
277 | ------------------------------------
278 |
279 |
280 | onInitConnect
281 | ~~~~~~~~~~~~~~~~~
282 |
283 | .. method:: void onInitConnect(FTAPI client, long errCode, String desc)
284 |
285 | 初始化连接状态变化。
286 |
287 | :param client: 对应的FTAPI实例
288 | :param errCode: 错误码。0表示成功,可以进行后续请求。当高32位为在`ConnectFailType` 范围内时,低32位为系统错误码;当高32位等于FTAPI_Conn.INIT_FAIL,则低32位为 `InitFailType` 类型。
289 | :param desc: 错误描述
290 | :return: void
291 |
292 | --------------------------------------------
293 |
294 | onDisConnect
295 | ~~~~~~~~~~~~~~~~~
296 |
297 | .. method:: void onDisconnect(FTAPI client, long errCode)
298 |
299 | 初始化连接状态变化。
300 |
301 | :param client: 对应的FTAPI实例
302 | :param errCode: 错误码。高32位为 `ConnectFailType` 类型,低32位为系统错误码;
303 | :return: void
304 |
305 |
--------------------------------------------------------------------------------
/doc_maker/source/java/Quote_API.rst:
--------------------------------------------------------------------------------
1 | .. note::
2 |
3 | Futu OpenAPI 文档已于2020年10月16日全新升级,请移步至 `新文档 `_
4 |
5 | 旧的github文档将不再更新,并于2020年11月16日正式停止访问。
6 |
7 | .. role:: strike
8 | :class: strike
9 | .. role:: red-strengthen
10 | :class: red-strengthen
11 |
12 | =======
13 | 行情API
14 | =======
15 |
16 | .. _getGlobalState: ../protocol/base_define.html#getglobalstate-proto-1002
17 | .. _sub: ../protocol/quote_protocol.html#qot-sub-proto-3001
18 | .. _regQotPush: ../protocol/quote_protocol.html#qot-regqotpush-proto-3002
19 | .. _getSubInfo: ../protocol/quote_protocol.html#qot-getsubinfo-proto-3003
20 | .. _getTicker: ../protocol/quote_protocol.html#qot-getticker-proto-3010
21 | .. _getBasicQot: ../protocol/quote_protocol.html#qot-getbasicqot-proto-3004
22 | .. _getOrderBook: ../protocol/quote_protocol.html#qot-getorderbook-proto-3012
23 | .. _getKL: ../protocol/quote_protocol.html#qot-getkl-proto-3006k
24 | .. _getRT: ../protocol/quote_protocol.html#qot-getrt-proto-3008
25 | .. _getBroker: ../protocol/quote_protocol.html#qot-getbroker-proto-3014
26 | .. _getRehab: ../protocol/quote_protocol.html#qot-getrehab-proto-3102
27 | .. _requestRehab: ../protocol/quote_protocol.html#qot-requestrehab-proto-3105
28 | .. _requestHistoryKL: ../protocol/quote_protocol.html#qot-requesthistorykl-proto-3103k
29 | .. _requestHistoryKLQuota: ../protocol/quote_protocol.html#qot-requesthistoryklquota-proto-3104k
30 | .. _getTradeDate: ../protocol/quote_protocol.html#qot-gettradedate-proto-3200
31 | .. _getStaticInfo: ../protocol/quote_protocol.html#qot-getstaticinfo-proto-3202
32 | .. _getSecuritySnapshot: ../protocol/quote_protocol.html#qot-getsecuritysnapshot-proto-3203
33 | .. _getPlateSet: ../protocol/quote_protocol.html#qot-getplateset-proto-3204
34 | .. _getPlateSecurity: ../protocol/quote_protocol.html#qot-getplatesecurity-proto-3205
35 | .. _getReference: ../protocol/quote_protocol.html#qot-getreference-proto-3206
36 | .. _getOwnerPlate: ../protocol/quote_protocol.html#qot-getownerplate-proto-3207
37 | .. _getHoldingChangeList: ../protocol/quote_protocol.html#qot-getholdingchangelist-proto-3208
38 | .. _getOptionChain: ../protocol/quote_protocol.html#qot-getoptionchain-proto-3209
39 | .. _getWarrant: ../protocol/quote_protocol.html#qot-getwarrant-proto-3210
40 | .. _getCapitalFlow: ../protocol/quote_protocol.html#qot-getcapitalflow-proto-3211
41 | .. _getCapitalDistribution: ../protocol/quote_protocol.html#qot-getcapitaldistribution-proto-3212
42 | .. _getUserSecurity: ../protocol/quote_protocol.html#qot-getusersecurity-proto-3213
43 | .. _modifyUserSecurity: ../protocol/quote_protocol.html#qot-modifyusersecurity-proto-3214
44 | .. _notify: ../protocol/base_define.html#notify-proto-1003
45 | .. _getCodeChange: ../protocol/quote_protocol.html#qot-getcodechange-proto-3216
46 | .. _getIpoList: ../protocol/quote_protocol.html#qot-getipolist-proto-3217ipo
47 | .. _getFutureInfo: ../protocol/quote_protocol.html#qot-getfutureinfo-proto-3218
48 | .. _requestTradeDate: ../protocol/quote_protocol.html#qot-requesttradedate-proto-3219
49 | .. _stockFilter: ../protocol/quote_protocol.html#qot-stockfilter-proto-3215
50 | .. _setPriceReminder: ../protocol/quote_protocol.html#qot-setpricereminder-proto-3220
51 | .. _getPriceReminder: ../protocol/quote_protocol.html#qot-getpricereminder-proto-3221
52 | .. _getUserSecurityGroup: ../protocol/quote_protocol.html#qot-getusersecuritygroup-proto-3222
53 | .. _updateBasicQot: ../protocol/quote_protocol.html#qot-updatebasicqot-proto-3005
54 | .. _updateKL: ../protocol/quote_protocol.html#qot-updatekl-proto-3007k
55 | .. _updateRT: ../protocol/quote_protocol.html#qot-updatert-proto-3009
56 | .. _updateTicker: ../protocol/quote_protocol.html#qot-updateticker-proto-3011
57 | .. _updateOrderBook: ../protocol/quote_protocol.html#qot-updateorderbook-proto-3013
58 | .. _updateBroker: ../protocol/quote_protocol.html#qot-updatebroker-proto-3015
59 | .. _updateOrderDetail: ../protocol/quote_protocol.html#qot-updateorderdetail-proto-3017
60 | .. _getAccList: ../protocol/trade_protocol.html#trd-getacclist-proto-2001
61 | .. _unlockTrade: ../protocol/trade_protocol.html#trd-unlocktrade-proto-2005
62 | .. _subAccPush: ../protocol/trade_protocol.html#trd-subaccpush-proto-2008
63 | .. _getFunds: ../protocol/trade_protocol.html#trd-getfunds-proto-2101
64 | .. _getPositionList: ../protocol/trade_protocol.html#trd-getpositionlist-proto-2102
65 | .. _getMaxTrdQtys: ../protocol/trade_protocol.html#trd-getmaxtrdqtys-proto-2111
66 | .. _getOrderList: ../protocol/trade_protocol.html#trd-getorderlist-proto-2201
67 | .. _getOrderFillList: ../protocol/trade_protocol.html#trd-getorderfilllist-proto-2211
68 | .. _getHistoryOrderList: ../protocol/trade_protocol.html#trd-gethistoryorderlist-proto-2221
69 | .. _getHistoryOrderFillList: ../protocol/trade_protocol.html#trd-gethistoryorderfilllist-proto-2222
70 | .. _updateOrder: ../protocol/trade_protocol.html#trd-updateorder-proto-2208
71 | .. _updateOrderFill: ../protocol/trade_protocol.html#trd-updateorderfill-proto-2218
72 | .. _updatePriceReminder: ../protocol/quote_protocol.html#qot-updatepricereminder-proto-3019
73 |
74 |
75 | ---------------------------------------------------
76 |
77 |
78 | FTAPI_Qot成员函数
79 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
80 |
81 | + FTAPI_Qot继承自\ `FTAPI_Conn <./Base_API.html#ftapi-conn>`_ ,连接层调用接口参考FTAPI_Conn说明。
82 |
83 | ================================ ============================================== ===================================
84 | 函数名(点开链接可查看具体协议) 功能简介 回调函数(FTSPI_Qot)
85 | ================================ ============================================== ===================================
86 | getGlobalState_ 获取全局状态 onReply_GetGlobalState
87 | sub_ 订阅或者反订阅 onReply_Sub
88 | regQotPush_ 注册推送 onReply_RegQotPush
89 | getSubInfo_ 获取订阅信息 onReply_GetSubInfo
90 | getTicker_ 获取逐笔,调用该接口前需要先订阅 onReply_GetTicker
91 | getBasicQot_ 获取基本行情,调用该接口前需要先订阅 onReply_GetBasicQot
92 | getOrderBook_ 获取摆盘,调用该接口前需要先订阅 onReply_GetOrderBook
93 | getKL_ 获取K线,调用该接口前需要先订阅 onReply_GetKL
94 | getRT_ 获取分时,调用该接口前需要先订阅 onReply_GetRT
95 | getBroker_ 获取经纪队列,调用该接口前需要先订阅 onReply_GetBroker
96 | requestRehab_ 在线请求历史复权信息,不读本地历史数据DB onReply_RequestRehab
97 | requestHistoryKL_ 在线请求历史K线,不读本地历史数据DB onReply_RequestHistoryKL
98 | requestHistoryKLQuota_ 获取历史K线已经用掉的额度 onReply_RequestHistoryKLQuota
99 | getTradeDate_ 获取交易日 onReply_GetTradeDate
100 | getStaticInfo_ 获取静态信息 onReply_GetStaticInfo
101 | getSecuritySnapshot_ 获取股票快照 onReply_GetSecuritySnapshot
102 | getPlateSet_ 获取板块集合下的板块 onReply_GetPlateSet
103 | getPlateSecurity_ 获取板块下的股票 onReply_GetPlateSecurity
104 | getReference_ 获取相关股票 onReply_GetReference
105 | getOwnerPlate_ 获取股票所属的板块 onReply_GetOwnerPlate
106 | getHoldingChangeList_ 获取大股东持股变化列表 onReply_GetHoldingChangeList
107 | getOptionChain_ 筛选期权 onReply_GetOptionChain
108 | getWarrant_ 筛选窝轮 onReply_GetWarrant
109 | getCapitalFlow_ 获取资金流向 onReply_GetCapitalFlow
110 | getCapitalDistribution_ 获取资金分布 onReply_GetCapitalDistribution
111 | getUserSecurity_ 获取自选股分组下的股票 onReply_GetUserSecurity
112 | modifyUserSecurity_ 修改自选股分组下的股票 onReply_ModifyUserSecurity
113 | getIpolist_ 获取ipo数据 onReply_GetIpoList
114 | getCodeChange_ 获取股票代码变更 onReply_GetCodeChange
115 | getFutureInfo_ 获取期货合约资料 onReply_GetFutureInfo
116 | stockFilter_ 筛选股票 onReply_StockFilter
117 | requestTradeDate_ 在线拉取交易日 onReply_RequestTradeDate
118 | setPriceReminder_ 设置到价提醒 onReply_SetPriceReminder
119 | getPriceReminder_ 获取到价提醒 onReply_getPriceReminder
120 | getUserSecurityGroup_ 获取自选股分组 onReply_getUserSecurityGroup
121 | ================================ ============================================== ===================================
122 |
123 | FTSPI_Qot行情推送接收接口函数
124 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
125 | ================================== =================================================
126 | 回调函数(点开链接可查看具体协议) 功能简介
127 | ================================== =================================================
128 | notify_ 推送通知
129 | updateBasicQot_ 推送基本行情
130 | updateKL_ 推送K线
131 | updateRT_ 推送分时
132 | updateTicker_ 推送逐笔
133 | updateOrderBook_ 推送买卖盘
134 | updateBroker_ 推送经纪队列
135 | updatePriceReminder_ 推送到价提醒通知
136 | ================================== =================================================
--------------------------------------------------------------------------------
/doc_maker/source/q&a/Q&A.rst:
--------------------------------------------------------------------------------
1 | .. note::
2 |
3 | Futu OpenAPI 文档已于2020年10月16日全新升级,请移步至 `新文档 `_
4 |
5 | 旧的github文档将不再更新,并于2020年11月16日正式停止访问。
6 |
7 |
8 | Q&A
9 | ===
10 |
11 | FutuOpenD相关
12 | +++++++++++++++++++++++++++++++++++++++
13 |
14 | Q1:因未确认协议而退出
15 | --------------------------------
16 |
17 | A: 需要进行相关问卷评估及协议确认,才可以使用FutuOpenD,请先 `前往完成 `_ 。
18 |
19 | --------------------------------
20 |
21 | Q2:因自带数据不存在退出
22 | --------------------------------
23 |
24 | A: 一般因权限问题导致自带数据拷贝失败,可以尝试将程序目录下Appdata.dat解压后的文件拷贝到程序数据目录下。
25 |
26 | + windows程序数据目录:%appdata%/com.futunn.FutuOpenD/F3CNN
27 | + 非windows程序数据目录:~/.com.futunn.FutuOpenD/F3CNN
28 |
29 | ----------------
30 |
31 | Q3:FutuOpenD服务器启动失败
32 | --------------------------------
33 |
34 | A: 检查是否有配置了同样端口的FutuOpenD在运行以及是否有其他程序占用所配置的端口。
35 |
36 | --------------------------------
37 |
38 | Q4:如何验证手机验证码?
39 | --------------------------------
40 |
41 | A: 在FutuOpenD界面上或远程到Telnet端口输入命令input_phone_verify_code -code=123456(手机验证码)。
42 |
43 | 注 :【-code=123456】前有空格
44 |
45 | --------------------------------
46 |
47 | Q5:是否支持其他编程语言?
48 | --------------------------------
49 |
50 | A: 除了python接口外,FutuOpenD有对外提供基于socket的协议,目前我们提供并维护python,c++,java,.net和js接口。`下载入口 `_
51 |
52 | --------------------------------
53 |
54 | Q6:在同一设备多次验证设备锁
55 | --------------------------------
56 |
57 | A: 设备标识随机生成并存放于com.futunn.FutuOpenD\\F3CNN\\Device.dat文件中。
58 |
59 | 1. 如果删除或损坏会重新生成新设备标识然后验证设备锁
60 | 2. 另外镜像拷贝部署的用户需要注意,如果多台机器的Device.dat内容相同,也会导致这些机器多次验证设备锁,删除Device.dat文件即可
61 |
62 | --------------------------------
63 |
64 | Q7:FutuOpenD是否有提供Docker镜像?
65 | -----------------------------------
66 |
67 | A: 目前没有。
68 |
69 | --------------------------------
70 |
71 | Q8:一个账号可以登录多个FutuOpenD吗?
72 | ------------------------------------
73 |
74 | A: 一个账号可以在多台机器上登录FutuOpenD或者其他客户终端,最多10个终端同时登录。同时有“行情互踢”的限制,只能有一个最高权限行情。例如:两个终端登录同一个账号,只能有一个港股Level2行情,另一个是港股BMP行情。
75 |
76 | --------------------------------
77 |
78 | Q9:如何控制FutuOpenD和其他客户端(桌面端和移动端)的行情权限?
79 | --------------------------------------------------------------------
80 |
81 | A: 应交易所的规定,多个终端同时在线会有“行情互踢”的限制,只能有一个终端获得最高权限行情。FutuOpenD命令行版本的启动参数内置了参数,用于灵活配置行情权限。当该参数选项开启时,OpenD在行情权限被抢后,会自动抢回。如果10秒内再次被抢,则其他终端获得最高行情权限(OpenD不会再抢)。
82 |
83 | --------------------------------
84 |
85 | Q10: 如何优先保证OpenD行情权限?
86 | ------------------------------------
87 |
88 | A: OpenD启动参数设置为1,移动端或桌面端不要在10秒内连续两次抢最高权限(登录算一次,点击“重启行情”算第二次)。
89 |
90 | .. image:: ../_static/quote_right.png
91 |
92 |
93 | --------------------------------
94 |
95 | Q11: 如何优先保证移动端(或桌面端)的行情权限?
96 | --------------------------------------------------------------------
97 |
98 | A: OpenD启动参数设置为0,移动端或桌面端在OpenD之后登录即可。
99 |
100 | --------------------------------
101 |
102 | Q12: 使用带 UI 界面 FutuOpenD 记住密码登录,长时间挂机后提示连接断开,需要重新登录?
103 | ----------------------------------------------------------------------------------------------------
104 |
105 | A:使用带UI界面FutuOpenD,如果选择记住密码登录,用的是记录在本地的令牌。由于令牌有时间限制,当令牌过期,且出现且网络波动或富途后台发布,就可能导致与后台断开连接后无法自动连接上的情况。因此,带界面的FutuOpenD如果希望长时间挂机,建议手动输入密码登录,由 FutuOpenD 自动处理该情况。
106 |
107 | --------------------------------
108 |
109 | Q13:使用遇到无法解决的问题时,如何请富途的研发人员协助排查?
110 | ----------------------------------------------------------------
111 |
112 | A:
113 | 1. 通过QQ/微信,联系富途OpenAPI研发人员,方便即时沟通和传输文件。
114 |
115 | 2. 详述发生错误的时间,OpenD版本号,API版本号,脚本语言,接口名或协议号,详细入参和返回的短代码或截图。
116 |
117 | 3. 必要时,须提供FutuOpenD日志,方便定位确认问题。交易问题需要info日志级别,行情问题需要debug日志级别。日志级别 log_level 可以在 FutuOpenD.xml中 `配置 <../intro/FutuOpenDGuide.html#id9>`_ ,配置后需要重启FutuOpenD方能生效,待问题复现后,将该段日志打包发给富途研发人员。
118 |
119 | 日志路径如下:
120 |
121 | windows:%appdata%/com.futunn.FutuOpenD/Log
122 |
123 | 非windows:~/.com.futunn.FutuOpenD/Log
124 |
125 | 连接相关
126 | ++++++++++++++++++++++++++++++++++++++++++
127 |
128 | Q1:脚本连接不上FutuOpenD
129 | --------------------------------
130 |
131 | A: 请先尝试检查是否以下情况:
132 |
133 | 1. 脚本端口是否与FutuOpenD配置一致
134 | 2. 连接上限为128,检查是否有无用连接没有关闭
135 |
136 | --------------------------------
137 |
138 | Q2:脚本连接上之后没反应
139 | --------------------------------
140 |
141 | A: 检查是否有启动API版本的PC牛牛(3.42),若有则请关闭API版本的PC牛牛或者修改该版本的端口配置。
142 |
143 | --------------------------------
144 |
145 | Q3:连接上一段时间后断开
146 | --------------------------------
147 |
148 | A: 如果是自己对接协议,检查下是否有定时发送心跳维持连接。
149 |
150 | --------------------------------
151 |
152 | Q4:Linux下通过multiprocessing模块以多进程方式运行Python脚本可能会连不上FutuOpenD
153 | ------------------------------------------------------------------------------------------------
154 |
155 | A: Linux/Mac环境下以默认方式创建进程后,父进程中py-futu-api内部创建的线程将会在子进程中消失,导致程序内部状态错误。可以用spawn方式来启动进程:
156 |
157 | .. code:: python
158 |
159 | import multiprocessing as mp
160 | mp.set_start_method('spawn')
161 | p = mp.Process(target=func)
162 | ...
163 |
164 |
165 | --------------------------------
166 |
167 | 行情相关
168 | +++++++++++++++++++++++++++++++++++++++++
169 |
170 | Q1:订阅失败
171 | --------------------------------
172 |
173 | A: 检查订阅接口返回的错误描述,常见有以下情况:
174 |
175 | 1. 帐号无港股Lv2权限
176 | 2. 帐号有港股Lv2权限,但被其他终端踢掉行情权限
177 | 3. 帐号有赠送的港股Lv2权限,但赠送的港股Lv2权限只能在大陆IP机器使用。
178 | 4. 订阅额度不足,订阅额度规则参见 `订阅限制 <../protocol/intro.html#id28>`_
179 |
180 | --------------------------------
181 |
182 | Q2:反订阅失败
183 | --------------------------------
184 |
185 | A: 订阅至少一分钟后才能反订阅。
186 |
187 | --------------------------------
188 |
189 | Q3:反订阅成功但没返还额度
190 | --------------------------------
191 |
192 | A: 所有连接都对该行情反订阅才会返还额度。
193 |
194 | --------------------------------
195 |
196 | Q4:订阅不足一分钟关闭脚本会返还额度吗?
197 | ----------------------------------------
198 |
199 | A: 不返还。连接关闭后,订阅不足一分钟的行情一段时间后自动反订阅。
200 |
201 | --------------------------------
202 |
203 | Q5:请求限频逻辑是怎样?
204 | --------------------------------
205 |
206 | A: 30秒内最多n次指第1次和第n+1次请求间隔需要大于30秒。
207 |
208 | --------------------------------
209 |
210 | Q6:自选股添加不上是什么原因?
211 | --------------------------------
212 |
213 | A: 请先检查是否有超出上限,或者删除一部分自选。
214 |
215 | --------------------------------
216 |
217 | Q7:为什么 OpenAPI 端的美股报价和牛牛显示端的全美综合报价有不同?
218 | --------------------------------------------------------------------
219 |
220 | A: 由于美股交易分散在很多家交易所,富途有提供两种美股基本报价行情,一种是 Nasdaq Basic(Nasdaq 交易所的报价),另一种是全美综合报价(全美13家交易所的报价)。而Futu OpenAPI 的美股正股行情目前仅支持通过行情卡购买的方式获取 Nasdaq Basic,不支持全美综合报价。因此,如果您同时购买了显示端的全美综合报价行情卡,和仅用于 OpenAPI 的 Nasdaq Basic 行情卡,确实有可能出现牛牛显示端和 OpenAPI 端的报价差异。
221 |
222 | --------------------------------
223 |
224 | Q8:OpenAPI行情卡在哪里购买?
225 | --------------------------------
226 |
227 | A:
228 |
229 | +------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+
230 | | | 港股LV2高级行情(仅非中国大陆 ip) | https://qtcard.futuhk.com/buy?market_id=1&good_type=1#/ |
231 | + +------------------------------------------------+---------------------------------------------------------------------------------------------------+
232 | | | 期权期货LV2高级行情(仅非中国大陆 ip) | https://qtcard.futuhk.com/buy?market_id=1&good_type=8#/ |
233 | + +------------------------------------------------+---------------------------------------------------------------------------------------------------+
234 | | 港股市场 | 港股LV2+期权期货LV2行情(仅非中国大陆 ip) | https://qtcard.futuhk.com/buy?market_id=1&good_type=9#/ |
235 | + +------------------------------------------------+---------------------------------------------------------------------------------------------------+
236 | | | 高级全盘行情(SF 行情) | https://qtcard.futuhk.com/buy?market_id=1&good_type=10#/ |
237 | +------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+
238 | | 美股市场 | Nasdaq Basic | https://qtcard.futuhk.com/buy?market_id=2&good_type=12&channel=2#/ |
239 | +------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+
240 |
241 | ----------------------------------------------------------------
242 |
243 | Q9:为什么有时候,获取实时数据的get接口响应比较慢?
244 | ----------------------------------------------------------------
245 |
246 | A: 因为获取实时数据的get接口需要先订阅,并依赖后台给OpenD的推送。如果用户刚订阅就立刻用get接口请求,OpenD有可能尚未收到后台推送。为了防止这种情况的发生,get接口内置了等待逻辑,3秒内收到推送会立刻返回给脚本,超过3秒仍未收到后台推送,才会给脚本返回空数据。
247 |
248 | 涉及的get接口包括:get_rt_ticker、get_cur_kline、get_order_book、get_broker_queue、get_stock_quote。因此,当发现获取实时数据的get接口响应比较慢时,可以先检查一下是否是无成交数据的原因。
249 |
250 | --------------------------------
251 |
252 | Q10:购买 OpenAPI 美股 Nasdaq Basic 行情卡后,可以获取哪些数据?
253 | --------------------------------------------------------------------
254 |
255 | A: Nasdaq Basic 行情卡购买激活后,可以获取的品类涵盖 Nasdaq、NYSE、NYSE MKT交易所上市证券(包括美股正股和 ETF,不包括美股期货和美股期权)。
256 |
257 | 支持的数据接口包括:快照,历史 K 线,实时逐笔订阅,实时一档摆盘订阅,实时 K 线订阅,实时报价订阅,实时分时订阅,到价提醒。
258 |
259 | ----------------------------------------------------------------
260 |
261 | Q11:各个行情品类的摆盘(orderbook)支持多少档?
262 | ----------------------------------------------------------------
263 |
264 | A:
265 |
266 | +--------------+-----------------------------------+------------+------------+------------+------------------+
267 | | 摆盘接口档数 | 类型 | BMP | LV1 | LV2 | SF |
268 | +--------------+-----------------------------------+------------+------------+------------+------------------+
269 | | | 证券(含正股、窝轮、牛熊、界内证)| 0 | / | 10 | 全盘+千笔明细 |
270 | + 港股市场 +-----------------------------------+------------+------------+------------+------------------+
271 | | | 期权期货 | 0 | 1 | 10 | / |
272 | +--------------+-----------------------------------+------------+------------+------------+------------------+
273 | | | 股票(含ETF) | / | 1 | 暂未支持 | / |
274 | + 美股市场 +-----------------------------------+------------+------------+------------+------------------+
275 | | | 期权 | / | 1 | 10 | / |
276 | +--------------+-----------------------------------+------------+------------+------------+------------------+
277 | | A股市场 | 股票 | / | 5 | / | / |
278 | +--------------+-----------------------------------+------------+------------+------------+------------------+
279 |
280 |
281 |
282 | 交易相关
283 | +++++++++++++++++++++++++++++++++++++++++
284 |
285 | Q1:如何使用模拟交易?
286 | --------------------------------
287 |
288 | A: 只要有牛牛帐号即可使用模拟交易,在使用交易接口时交易环境传入模拟环境即可。
289 |
290 | --------------------------------
291 |
292 | Q2:模拟与真实交易是否有区别?
293 | --------------------------------
294 |
295 | A: 有区别:
296 |
297 | 1. 订单的状态不支持删除、部分成交、生效、失效状态
298 | 2. 不支持生效失效、删除订单操作,仅支持支持改单, 撤单
299 | 3. 不支持成交数据,包括今日成交,历史成交,成交推送
300 | 4. 下单仅支持Normal类型
301 | 5. 模拟交易不需要解锁交易
302 | 6. 模拟交易不支持期货
303 |
304 | 更多模拟交易规则可跳转至 `模拟交易规则 `_。
305 |
306 | --------------------------------
307 |
308 | Q3:是否模拟交易可视化数据?
309 | --------------------------------
310 |
311 | A: 可视数据可跳转至 `模拟炒股页面 `_,该页面仅支持手机浏览器访问。
312 |
313 | --------------------------------
314 |
315 | Q4:是否支持A股交易?
316 | --------------------------------
317 |
318 | A: 支持A股模拟交易,真实交易可通过A股通交易部分A股。
319 |
320 | --------------------------------
321 |
322 | Q5:各市场支持的交易方向
323 | --------------------------------
324 |
325 | A: 除了期货,其他股票都只支持传入买入和卖出,在空仓情况下卖出,产生的订单交易方向是卖空。
326 |
327 | --------------------------------
328 |
329 | Q6:各市场支持的订单类型
330 | --------------------------------
331 |
332 | A:
333 | + 港股支持增强限价单,竞价单,竞价限价单,绝对限价单,特别限价单
334 | + 美股支持限价单,市价单
335 | + A股通仅支持A股限价委托
336 | + 港股的股指期货支持限价单,竞价单
337 | + 港股的美元黄金期货、香港的股票期货支持限价单
338 |
339 | --------------------------------
340 |
341 | Q7:各市场支持的订单操作
342 | --------------------------------
343 |
344 | A:
345 | + 港股支持改单、撤单、生效、失效、删除
346 | + 美股仅支持改单和撤单
347 | + A股通仅支持撤单
348 | + 期货支持改单、撤单、删除
349 |
350 | --------------------------------
351 |
352 | Q8:FutuOpenD 启动参数 future_trade_api_time_zone 如何使用?
353 | ----------------------------------------------------------------
354 |
355 | A:由于期货账户支持交易的品种分布在全球多个交易所,交易所的所属时区各有不同,因此期货交易API的时间显示就成为了一个问题。
356 |
357 | FutuOpenD启动参数中新增了 future_trade_api_time_zone 这一参数,供全球不同地区的期货交易者灵活指定时区。默认时区为UTC+8,如果您更习惯美东时间,只需将此参数配置为UTC-5即可。
358 |
359 | 请注意:
360 |
361 | + 此参数仅会对期货交易接口类对象生效。港股交易、美股交易、A股通交易接口类对象的时区,仍然按照交易所所在的时区进行显示。
362 |
363 | + 此参数会影响的接口包括:响应订单推送,响应成交推送, 获取订单列表,获取成交列表,获取历史订单列表,获取历史成交列表,下单。
364 |
365 |
366 | 其他
367 | +++++++++++++++++++++++++++++++++++++++++
368 |
369 | Q1:请求限制说明
370 | --------------------------------
371 |
372 | A: 请求限制说明请参见 :ref:`quota-limit`
373 |
374 |
375 | Q2:有没有更完整的策略样例可以参考?
376 | --------------------------------------------
377 |
378 | A: Python 策略样例在 /futu/examples/ 文件夹下,C++ 策略样例在 /FTAPI4CPP/Samples/ 文件夹下,Java 策略样例在 /FTAPI4J/sample/ 文件夹下,Javascript 策略样例在 /FTAPI4JS/sample/ 文件夹下,C# 策略样例在 /FTAPI4NET/Sample/ 文件夹下。
379 |
380 | --------------------------------
381 |
--------------------------------------------------------------------------------
/doc_maker/source/intro/FutuOpenDGuide.rst:
--------------------------------------------------------------------------------
1 | .. note::
2 |
3 | Futu OpenAPI 文档已于2020年10月16日全新升级,请移步至 `新文档 `_
4 |
5 | 旧的github文档将不再更新,并于2020年11月16日正式停止访问。
6 |
7 | =================
8 | FutuOpenD使用说明
9 | =================
10 |
11 | .. _set_handler: ../api/Quote_API.html#set-handler
12 |
13 |
14 | 基本介绍
15 | ----------
16 |
17 | FutuOpenD是futu-api的网关程序,运行于客户本机或服务器,负责中转协议请求到富途后台,并将处理后的数据返回给协议请求连接。
18 |
19 | FutuOpenD目前提供两种安装执行形式,用户可根据自身需求选择任一方式。
20 |
21 | 1. 命令行形式:提供命令行执行程序,需自行进行部分配置,适合熟悉度高或无界面化需求的用户;
22 |
23 | 2. 可视化形式:提供界面化应用程序,操作便捷,尤其适合入门用户。
24 |
25 | ----------------------------
26 |
27 |
28 | 下载安装
29 | ----------
30 |
31 | 命令行FutuOpenD
32 | ~~~~~~~~~~~~~~~~~~~~
33 | * 命令行FutuOpenD目前直接提供程序压缩包,解压后即可运行。
34 |
35 |
36 | * 压缩包内除了各平台的执行程序,还有带有默认FutuOpenD配置文件(FutuOpenD.xml),程序打包数据(Appdata.dat)。
37 |
38 |
39 | * Appdata.dat是程序需要用到的一些数据量较大的信息,打包数据减少启动下载该数据用时,若不存在则程序无法正常启动。
40 |
41 |
42 | * FutuOpenD.xml 用于配置FutuOpenD程序启动参数,若不存在则程序无法正常启动,支持用户自定义文件路径, 详见 `启动命令行参数 <./FutuOpenDGuide.html#id10>`_
43 |
44 | 可视化FutuOpenD
45 | ~~~~~~~~~~~~~~~~~~
46 | * 可视化OpenD提供程序安装包,可一键安装运行,
47 |
48 | * Windows安装在%appdata%目录下。
49 |
50 | * 下载方式同命令行FutuOpenD。
51 |
52 | 方式1:`富途官网下载 `_
53 |
54 | .. image:: ../_static/futunn.com.png
55 |
56 |
57 | 方式2:QQ群文件下载
58 |
59 | .. image:: ../_static/download-QQ.png
60 |
61 | --------------
62 |
63 | 登录参数使用优先级
64 | ----------------
65 | 1.命令行证书登录
66 |
67 | 2.命令行帐号密码密文登录
68 |
69 | 3.命令行帐号密码明文登录
70 |
71 | 4.配置文件证书登录
72 |
73 | 5.配置文件帐号密码密文登录
74 |
75 | 6.配置文件帐号密码明文登录
76 |
77 | ----------------------------
78 |
79 | .. _opend-config:
80 |
81 | FutuOpenD配置
82 | --------------
83 |
84 | 命令行FutuOpenD
85 | ~~~~~~~~~~~~~~~~~~~~
86 | * 命令行FutuOpenD启动配置文件使用XML格式,如下图所示:
87 |
88 | .. image:: ../_static/FTOpenDConfig.png
89 |
90 | **配置项:**
91 |
92 | =========================== ============================================================================================================================================================= ================================================
93 | 键值 说明 是否可选配置项
94 | =========================== ============================================================================================================================================================= ================================================
95 | ip 监听地址 是,不设置则默认127.0.0.1
96 | api_port API协议接收端口 是,可以命令行指定
97 | push_proto_type API协议支持PB以及Json格式,PB:0,Json:1,推送类协议通过该配置决定包体格式 是,不设置则默认PB格式
98 | qot_push_frequency API订阅数据推送频率控制,单位毫秒,目前不包括K线和分时 是,不设置则不限制频率
99 | rsa_private_key API协议RSA加密私钥(PKCS#1)文件绝对路径 是,不设置则协议不加密
100 | telnet_ip 远程操作命令监听地址 是,不设置则默认127.0.0.1
101 | telnet_port 远程操作命令监听端口 是,不设置则不启用远程命令
102 | login_account 登录帐号 是,可以使用证书登录或命令行输入
103 | login_pwd 登录密码明文 是,可以使用密文、证书登录或命令行输入
104 | login_pwd_md5 登录密码密文(32位MD5加密16进制),密文明文都存在情况下,只使用密文 是,可以使用明文、证书登录或命令行输入
105 | log_level 日志级别,可填no(无日志),debug(最详细),info(次详细),warning,error,fatal 是,默认info级别
106 | simulate_trade 是否启用模拟交易,关闭模拟交易可节省少量资源使用,可填enable,disable 是,默认启用
107 | websocket_ip API协议监听地址,可选127.0.0.1(监听来自本地的连接)以及0.0.0.0(监听来自所有网卡的连接) 是,不设置则默认127.0.0.1
108 | websocket_port WebSocket服务监听端口 是,不设置则不启用该功能
109 | websocket_private_key WebSocket证书私钥文件路径,私钥不可设置密码,不配置则不启用SSL,需要和证书同时配置 是,不设置则不启用SSL
110 | websocket_cert WebSocket证书文件路径,不配置则不启用SSL,需要和私钥同时配置 是,不设置则不启用SSL
111 | websocket_key_md5 密钥密文(32位MD5加密16进制),用于JS接口连接时用于判断是否可信连接 是,不设置则不做验证
112 | price_reminder_push 是否接收到价提醒推送,0:不接收,1:接收(需在脚本中设置回调函数 set_handler_ ) 是,默认会推送
113 | auto_hold_quote_right 被踢后是否自动抢权限?0:否,1:是,开启该选项时,OpenD在行情权限被抢后,会自动抢回。如果10秒内再次被抢,则其他终端获得最高行情权限(OpenD不会再抢) 是,默认会自动抢权限
114 | future_trade_api_time_zone 指定期货交易API时区,期货账户调用交易API时,涉及的时间按照此时区规则 是,可以命令行指定,不设置则默认交易所时区
115 | =========================== ============================================================================================================================================================= ================================================
116 |
117 | 可视化FutuOpenD
118 | ~~~~~~~~~~~~~~~~~~
119 | * 可视化FutuOpenD配置以界面化表单形式展现,代替命令行版本的XML配置文件方式。
120 |
121 | .. image:: ../_static/UIConfig.png
122 |
123 | **配置项说明如下表所示:**
124 |
125 | ==================== =================================================================================================================
126 | 配置项 说明
127 | ==================== =================================================================================================================
128 | 监听地址 API协议监听地址,可选127.0.0.1(监听来自本地的连接)以及0.0.0.0(监听来自所有网卡的连接),或填本机某个网卡地址
129 | 监听端口 API协议监听端口
130 | 日志级别 FutuOpenD日志级别
131 | API推送频率 API订阅数据推送频率控制,单位毫秒,目前不包括K线和分时
132 | Telnet地址 远程操作命令监听地址
133 | Telnet端口 远程操作命令监听端口
134 | 加密私钥路径 API协议RSA加密私钥(PKCS#1)文件绝对路径
135 | WebSocket监听地址 API协议监听地址,可选127.0.0.1(监听来自本地的连接)以及0.0.0.0(监听来自所有网卡的连接)
136 | WebSocket端口 WebSocket服务监听端口
137 | WebSocket证书 WebSocket证书文件路径,不配置则不启用SSL,需要和私钥同时配置
138 | WebSocket私钥 WebSocket证书私钥文件路径,私钥不可设置密码,不配置则不启用SSL,需要和证书同时配置
139 | WebSocket鉴权密钥 密钥密文(32位MD5加密16进制),用于JS接口连接时用于判断是否可信连接
140 | 期货交易API时区 指定期货交易API时区,期货账户调用交易API时,涉及的时间按照此时区规则
141 | ==================== =================================================================================================================
142 |
143 | .. note::
144 | * 可视化FutuOpenD通过启动命令行OpenD来提供服务, 且通过Websocket与命令行OpenD交互,所以必定启动Websocket功能。
145 |
146 | * 当API监听地址不是本地,使用交易接口需配置私钥。
147 |
148 | * 当WebSocket监听地址不是本地,需配置SSL才可以启动,且证书私钥生成不可设置密码。
149 |
150 | * 密文是明文经过32位MD5加密后用16进制表示的数据,搜索在线MD5加密(注意,通过第三方网站计算可能有记录撞库的风险)或下载MD5计算工具可计算得到。
151 |
152 | 32位MD5密文如下图红框区域(e10adc3949ba59abbe56e057f20f883e):
153 |
154 | .. image:: ../_static/MD5.png
155 |
156 | * FutuOpenD默认读取同目录下的FutuOpenD.xml。在MacOS上,由于系统保护机制,FutuOpenD.app在运行时会被分配一个随机路径,导致无法找到原本的路径。此时有以下方法:
157 |
158 | 1. 执行tar包下的fixrun.sh
159 | 2. 用命令行参数-cfg_file指定配置文件路径,见下面说明
160 |
161 |
162 | 启动命令行参数
163 | ---------------
164 |
165 | 命令行部分参数与配置文件相同,同样参数若存在于命令行与配置文件,使用命令行参数。
166 |
167 | .. image:: ../_static/login-command.png
168 |
169 | 传参格式:-key=value
170 |
171 | 例如FutuOpenD.exe -login_account=100000 -login_pwd=123456 -lang=en
172 |
173 |
174 | **参数项:**
175 |
176 | =========================== ===================================================================================================================================================== ================================================
177 | 键值 说明 是否可选配置项
178 | =========================== ===================================================================================================================================================== ================================================
179 | login_account 登录帐号 是,可以使用证书登录或配置文件配置项
180 | login_pwd 登录密码明文 是,可以使用证书登录或配置文件配置项
181 | login_pwd_md5 登录密码密文(32位MD5加密16进制),密文明文都存在情况下,只使用密文 是,可以使用密文、证书登录或配置文件配置项
182 | login_by_remember 记住密码登录,需要搭配帐号使用,当密码参数存在,忽略该参数 是,可以使用帐号密码登录或命令行输入
183 | remember 记住密码,当该参数不设置时,已记住密码的帐号继续记住,需要取消记住密码,需要明确传入-remember=0 是,不设置保留当前帐号的记住密码状态
184 | login_region 优先连接点区域,但不一定能连接上该区域连接点(gz/sh/hk) 是,不设置则自动选择
185 | cfg_file FutuOpenD配置文件绝对路径 是,不设置则使用程序所在目录下的FutuOpenD.xml
186 | console 是否显示控制台,后台运行:0,控制台运行:1 是,不设置则默认控制台运行
187 | lang FutuOpenD语言,en:英文,chs:简体中文 是,不设置则默认简体中文
188 | api_ip API服务监听地址 是,不设置则默认127.0.0.1
189 | api_port API协议接收端口 是,不设置则使用配置文件配置项
190 | help 输出启动命令行参数然后退出程序 是,不设置则正常启动FutuOpenD
191 | log_level 日志级别,可填no(无日志),debug(最详细),info(次详细),warning,error,fatal 是,默认info级别
192 | no_monitor 是否启动守护进程,启动:0,不启动:1 是,默认带守护进程启动
193 | simulate_trade 是否启用模拟交易,关闭模拟交易可节省少量资源使用,可填enable,disable 是,默认启用
194 | websocket_ip WebSocket服务监听地址,可选127.0.0.1(监听来自本地的连接)以及0.0.0.0(监听来自所有网卡的连接) 是,不设置则默认127.0.0.1
195 | websocket_port WebSocket服务监听端口 是,不设置则不启用该功能
196 | websocket_private_key WebSocket证书私钥文件路径,不配置则不启用SSL,需要和证书同时配置 是,不设置则不启用SSL
197 | websocket_cert WebSocket证书文件路径,不配置则不启用SSL,需要和私钥同时配置 是,不设置则不启用SSL
198 | websocket_key_md5 密钥密文(32位MD5加密16进制),用于JS接口连接时用于判断是否可信连接 是,不设置则不做验证
199 | price_reminder_push 是否接收到价提醒推送,0:不接收,1:接收(需在脚本中设置回调函数 set_handler_ ) 是,默认会推送
200 | auto_hold_quote_right 被踢后是否自动抢权限?0:否,1:是,开启该选项时,OpenD在行情权限被抢后,会自动抢回。如果10秒内再次被抢,则其他终端获得最高行情权限(OpenD不会再抢) 是,默认会自动抢权限
201 | future_trade_api_time_zone 指定期货交易API时区,期货账户调用交易API时,涉及的时间按照此时区规则 是,可以命令行指定,不设置则默认交易所时区
202 | =========================== ===================================================================================================================================================== ================================================
203 |
204 | --------------
205 |
206 | 运维命令
207 | --------------
208 |
209 | 通过命令行或者Telent发送命令可以对FutuOpenD做运维操作。
210 |
211 | 命令格式:**cmd -param_key1=param_value1 -param_key2=param_value2**
212 |
213 | ----------------------------
214 |
215 | help - 命令帮助
216 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
217 |
218 | help -cmd=exit
219 |
220 | 查看指定命令详细信息,不指定参数则输出命令列表
221 |
222 | **Paramters cmd:** str,命令
223 |
224 | .. note::
225 |
226 | * 运维代码在Telnet窗口或命令控制台输入
227 | .. image:: ../_static/req-verify.png
228 |
229 |
230 | exit - 退出程序
231 | ~~~~~~~~~~~~~~~~
232 |
233 | exit
234 |
235 | 退出FutuOpenD程序
236 |
237 |
238 | req_phone_verify_code - 请求手机验证码
239 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
240 |
241 | req_phone_verify_code
242 |
243 | 请求手机验证码,当启用设备锁并初次在该设备登录,要求做安全验证。
244 |
245 | input_phone_verify_code - 输入手机验证码
246 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
247 |
248 | input_phone_verify_code -code=123456
249 |
250 | 输入手机验证码,并继续登录流程。
251 |
252 | **Parameters: code** - str,手机验证码
253 |
254 | req_pic_verify_code - 请求图形验证码
255 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
256 |
257 | req_pic_verify_code
258 |
259 | 请求图形验证码,当多次输入错登录密码时,需要输入图形验证码。
260 |
261 | input_pic_verify_code - 输入图形验证码
262 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
263 |
264 | input_pic_verify_code -code=1234
265 |
266 | 输入图形验证码,并继续登录流程。
267 |
268 | **Paramters: code** - str,图形验证码
269 |
270 | relogin - 重登录
271 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
272 |
273 | relogin -login_pwd=123456
274 |
275 | 当登录密码修改或中途打开设备锁等情况,要求用户重新登录时,可以使用该命令。只能重登当前帐号,不支持切换帐号。
276 | 密码参数主要用于登录密码修改的情况,不指定密码则使用启动时登录密码。
277 |
278 | **Paramters: login_pwd** - str,登录密码明文
279 |
280 | **Paramters: login_pwd_md5** - str,登录密码密文(32位MD5加密16进制)
281 |
282 | ping - 检测与连接点之间的时延
283 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
284 |
285 | ping
286 |
287 | 检测与连接点之前的时延
288 |
289 | show_delay_report - 展示延迟统计报告
290 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
291 |
292 | show_delay_report -detail_report_path=D:/detail.txt -push_count_type=sr2cs
293 |
294 | 展示延迟统计报告,包括推送延迟,请求延迟以及下单延迟。每日北京时间6:00清理数据。
295 |
296 | **Paramters: detail_report_path** - str,文件输出路径(MAC系统仅支持绝对路径,不支持相对路径),可选参数,若不指定则输出到控制台
297 |
298 | **Paramters: push_count_type** - str,推送延迟的类型(sr2ss,ss2cr,cr2cs,ss2cs,sr2cs),默认sr2cs,sr指服务器接收时间(目前只有港股支持该时间),ss指服务器发出时间,cr指OpenD接收时间,cs指OpenD发出时间
299 |
300 | close_api_conn - 关闭API连接
301 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
302 |
303 | close_api_conn -conn_id=123456
304 |
305 | 关闭某条API连接,若不指定则关闭所有
306 |
307 | **Paramters: conn_id** - uint64,API连接ID
308 |
309 | show_sub_info - 展示订阅状态
310 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
311 |
312 | show_sub_info -conn_id=123456 -sub_info_path=D:/detail.txt
313 |
314 | 展示某条连接的订阅状态,若不指定则展示所有
315 |
316 | **Paramters: conn_id** - uint64,API连接ID
317 |
318 | **Paramters: sub_info_path** - str,文件输出路径(MAC系统仅支持绝对路径,不支持相对路径),可选参数,若不指定则输出到控制台
319 |
320 | request_highest_quote_right - 请求最高行情权限
321 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
322 |
323 | request_highest_quote_right
324 |
325 | 当高级行情权限被其他设备(如:桌面端/手机端)占用时,可使用该命令重新请求最高行情权限(届时,其他处于登录状态的设备将无法使用高级行情)。
326 |
327 |
328 | ----------------------------
329 |
330 | WebSocket相关
331 | --------------
332 |
333 | 证书使用
334 | ~~~~~~~~~~~~~~
335 |
336 | 为保证安全,当websocket监听来自非本地请求时,需要启用SSL并配置连接密钥。
337 |
338 | SSL通过在配置证书以及对应的私钥来启用,命令行FutuOpenD可通过XML或命令行参数设置文件路径。
339 |
340 | 界面FutuOpenD点击【更多选项】可以看到对应设置项。
341 |
342 | .. image:: ../_static/MoreConfig.png
343 |
344 | .. note::
345 |
346 | * 如果证书是自签的,则需要在调用JS接口所在机器上安装该证书,或者设置不验证证书。
347 |
348 | 生成自签证书
349 | ~~~~~~~~~~~~~~
350 |
351 | 自签证书生成详细资料不便在此文档展开,请自行查阅。
352 |
353 | 在此提供较简单可用的生成步骤:
354 |
355 | 1. 安装openssl
356 |
357 | 2. 修改openssl.cnf,在alt_names节点下加上FutuOpenD所在机器IP地址或域名;如 IP.2 = xxx.xxx.xxx.xxx, DNS.2 = www.xxx.com
358 |
359 | 3. 生成私钥以及证书(PEM)。
360 |
361 | 证书生成参数参考如下:
362 | ```
363 | openssl req -x509 -newkey rsa:2048 -out futu.cer -outform PEM -keyout futu.key -days 10000 -verbose -config openssl.cnf -nodes -sha256 -subj "/CN=Futu CA" -reqexts v3_req -extensions v3_req
364 | ```
365 |
366 | 附上本地自签证书以及生成证书的配置文件供测试: `openssl.cnf <../_static/file/openssl.cnf>`_ | `futu.cer <../_static/file/cer>`_ | `futu.key <../_static/file/key>`_
367 |
368 | .. note::
369 |
370 | * openssl.cnf需要放到系统路径下,或在生成参数中指定绝对路径。
371 | * 注意生成私钥需要指定不设置密码(-nodes)。
372 |
373 | ----------------------------
374 |
375 | 补充说明
376 | --------------
377 |
378 | 日志级别
379 | ~~~~~~~~~~~~~~
380 | 默认info级别,在系统开发阶段建议不要关闭日志或者将日志修改到info以上(warning,error,fatal),避免出现问题无法确认以及定位问题。
381 |
382 |
383 | 问卷评估及协议确认
384 | ~~~~~~~~~~~~~~~~~~~~~
385 | 需要进行相关问卷评估及协议确认,才可以使用FutuOpenD,请先 `前往完成 `_ 。
386 |
387 | ----------------------------
388 |
389 | RSA私钥文件
390 | ~~~~~~~~~~~~~~
391 |
392 | 参考文件格式:
393 |
394 | .. code-block:: bash
395 |
396 | -----BEGIN RSA PRIVATE KEY-----
397 | MIICXAIBAAKBgQCx3W78hx5dQxg47hGMEj02JAJYP+HdKGWD8QilzeK4eL6QJ9QP
398 | +uVYGA5Jp0Ed2AaV+zQrT/BCe6z5j/Qd5B0eY2cFlgk+/hbAt7A4wcSAbby8nONw
399 | 0fZTglU78FhLUih84Int5HO0Fr3WLUDvpE+TgS3l/2u5ym6H6fvsdrdNCwIDAQAB
400 | AoGAHep/s2vKmKcjWNf6DZQ3xXZzCoLcK4WS5YlSCglCHAL7EmYQjguGLbYGGS9P
401 | jYR7Pxi8YpiUcao5otQqnCh1GRFouU397D3h+bf/bQXINZcv3sxKFrXm9MNVaBJD
402 | W4BcC3HGfnlaIVTKU+qGkeA1BydP5AQyxsGOq00IUeGK4uECQQD/5xHLDwhwYFyc
403 | MK4xMnlrvne8TSlPBciWfrxQ7V/X0eP/HQ20VkVxc0tFD91aLrCap6OYcNV9jwJN
404 | wTQLt5wbAkEAse7C75LKW0+cMcROvAR3qLV2LbGjLW+cH6WmEP9CEGxi0aJg4Gs3
405 | oSRYfaC/RLI87sSb0DC5+mTswXduLGpB0QJAJk0ec6cHW1KA6fu7Rq/ITqEOaMef
406 | xC0YbbYAV5h/vNy0ZE2j7HbxI97eyDJsrf/I/QzURo+01HsgHCUrtglAOwJBAKiW
407 | cA7sh1zS5kxlErCkjvfDz1BmIhT3zfZSTjGGmYLUHyE/eAjKra+5rzqA5xjgxEj6
408 | 8iLlOCFeJND+Jt5gYzECQH+HtFilF1SxGS4AHrJomHaMhk/IazjtUnLuFM/DuZ/h
409 | sxTqXpBBCtTqcAotMlx4ZJQYL3f2PmI2Q/o0NUMt40w=
410 | -----END RSA PRIVATE KEY-----
411 |
412 | .. note::
413 |
414 | * RSA 密钥的填充方式为 PKCS1, 位数1024
415 | * 密钥文件可通过第三方web平台自动生成, 请在baidu或google上搜索"RSA 在线生成"
416 | * 将私钥保存成文件,并在将文件路径配置在FutuOpenD.xml的rsa_private_key配置项
417 | * 公钥可通过私钥计算得到,但生成私钥时不要设置密码
418 | * 该密钥需要在OpenD配置文件中指定,且API接口也需要调用相关接口设置密钥信息
419 |
420 | ---------------
421 |
422 |
423 |
424 |
425 |
426 |
--------------------------------------------------------------------------------
/doc_maker/source/protocol/trade_protocol.rst:
--------------------------------------------------------------------------------
1 | .. note::
2 |
3 | Futu OpenAPI 文档已于2020年10月16日全新升级,请移步至 `新文档 `_
4 |
5 | 旧的github文档将不再更新,并于2020年11月16日正式停止访问。
6 |
7 | 交易协议
8 | ==========
9 | 这里对FutuOpenD开放的交易协议接口作出归档说明。
10 |
11 | .. note::
12 |
13 | * 为避免增删导致的版本兼容问题,所有enum枚举类型只用于值的定义,在protobuf结构体中声明类型时使用int32类型
14 | * 所有类型定义使用protobuf格式声明,不同语言对接时请自行通过相关工具转换成对应的头文件
15 | * XXX.proto表示协议文件名, 点击超链接可打开github上的协议文件,每条协议内容以github上的为准,此文档更新可能存在滞后
16 | * **要实现交易功能,必须先执行“Trd_GetAccList.proto - 2001获取交易账户列表”,然后再执行“Trd_UnlockTrade.proto - 2005解锁对应账户交易功能”才能进行后续交易功能调用**
17 |
18 | --------------
19 |
20 | `Trd_GetAccList.proto `_ - 2001获取交易账户列表
21 | -----------------------------------------------------------------------------------------------------------------------------------------------------------
22 |
23 | .. code-block:: protobuf
24 |
25 | syntax = "proto2";
26 | package Trd_GetAccList;
27 |
28 | import "Common.proto";
29 | import "Trd_Common.proto";
30 |
31 | message C2S
32 | {
33 | required uint64 userID = 1; //历史原因,目前已废弃,填0即可
34 | }
35 |
36 | message S2C
37 | {
38 | repeated Trd_Common.TrdAcc accList = 1; //交易业务账户列表
39 | }
40 |
41 | message Request
42 | {
43 | required C2S c2s = 1;
44 | }
45 |
46 | message Response
47 | {
48 | //以下3个字段每条协议都有,注释说明在InitConnect.proto中
49 | required int32 retType = 1 [default = -400];
50 | optional string retMsg = 2;
51 | optional int32 errCode = 3;
52 |
53 | optional S2C s2c = 4;
54 | }
55 |
56 | .. note::
57 |
58 | * 业务账户结构参考 `TrdAcc `_
59 |
60 | -------------------------------------
61 |
62 | `Trd_UnlockTrade.proto `_ - 2005解锁或锁定交易
63 | -----------------------------------------------------------------------------------------------------------------------------------------------------------
64 |
65 | .. code-block:: protobuf
66 |
67 | syntax = "proto2";
68 | package Trd_UnlockTrade;
69 |
70 | import "Common.proto";
71 |
72 | message C2S
73 | {
74 | required bool unlock = 1; //true解锁交易,false锁定交易
75 | optional string pwdMD5 = 2; //交易密码的MD5转16进制(全小写),解锁交易必须要填密码,锁定交易不需要验证密码,可不填
76 | }
77 |
78 | message S2C
79 | {
80 |
81 | }
82 |
83 | message Request
84 | {
85 | required C2S c2s = 1;
86 | }
87 |
88 | message Response
89 | {
90 | //以下3个字段每条协议都有,注释说明在InitConnect.proto中
91 | required int32 retType = 1 [default = -400];
92 | optional string retMsg = 2;
93 | optional int32 errCode = 3;
94 |
95 | optional S2C s2c = 4;
96 | }
97 |
98 | .. note::
99 |
100 | * 除2001协议外,所有交易协议请求都需要FutuOpenD先解锁交易
101 | * 密码MD5方式获取请参考 `FutuOpenD配置 <../setup/FutuOpenDGuide.html#id6>`_ 内的login_pwd_md5字段
102 | * 解锁或锁定交易针对与FutuOpenD,只要有一个连接解锁,其他连接都可以调用交易接口
103 | * 强烈建议有实盘交易的用户使用加密通道,参考 `加密通信流程 `_
104 | * 限频接口:30秒内最多10次
105 |
106 | -------------------------------------
107 |
108 |
109 | `Trd_SubAccPush.proto `_ - 2008订阅接收交易账户的推送数据
110 | -----------------------------------------------------------------------------------------------------------------------------------------------------------
111 |
112 | .. code-block:: protobuf
113 |
114 | syntax = "proto2";
115 | package Trd_SubAccPush;
116 |
117 | import "Common.proto";
118 |
119 | message C2S
120 | {
121 | repeated uint64 accIDList = 1; //要接收推送数据的业务账号列表,全量非增量,即使用者请每次传需要接收推送数据的所有业务账号
122 | }
123 |
124 | message S2C
125 | {
126 |
127 | }
128 |
129 | message Request
130 | {
131 | required C2S c2s = 1;
132 | }
133 |
134 | message Response
135 | {
136 | //以下3个字段每条协议都有,注释说明在InitConnect.proto中
137 | required int32 retType = 1 [default = -400];
138 | optional string retMsg = 2;
139 | optional int32 errCode = 3;
140 |
141 | optional S2C s2c = 4;
142 | }
143 |
144 | .. note::
145 |
146 | * 指定发送该协议的连接接收交易数据(订单状态,成交状态等)推送
147 |
148 | -------------------------------------
149 |
150 | `Trd_GetFunds.proto `_ - 2101获取账户资金
151 | -----------------------------------------------------------------------------------------------------------------------------------------------------------
152 |
153 | .. code-block:: protobuf
154 |
155 | syntax = "proto2";
156 | package Trd_GetFunds;
157 |
158 | import "Common.proto";
159 | import "Trd_Common.proto";
160 |
161 | message C2S
162 | {
163 | required Trd_Common.TrdHeader header = 1; //交易公共参数头
164 | optional bool refreshCache = 2; //立即刷新OpenD缓存的此数据,默认不填。true向服务器获取最新数据更新缓存并返回;flase或没填则返回OpenD缓存的数据,不会向服务器请求。
165 | //正常情况下,服务器有更新就会立即推送到OpenD,OpenD缓存着数据,API请求过来,返回同步的缓存数据,一般不需要指定刷新缓存,保证快速返回且减少对服务器的压力
166 | //如果遇到丢包等情况,可能出现缓存数据与服务器不一致,用户如果发现数据更新有异样,可指定刷新缓存,解决数据同步的问题。
167 | optional int32 currency = 3; //货币种类,参见Trd_Common.Currency。期货账户必填,其它账户忽略
168 | }
169 |
170 | message S2C
171 | {
172 | required Trd_Common.TrdHeader header = 1; //交易公共参数头
173 | optional Trd_Common.Funds funds = 2; //账户资金
174 | }
175 |
176 | message Request
177 | {
178 | required C2S c2s = 1;
179 | }
180 |
181 | message Response
182 | {
183 | //以下3个字段每条协议都有,注释说明在InitConnect.proto中
184 | required int32 retType = 1 [default = -400];
185 | optional string retMsg = 2;
186 | optional int32 errCode = 3;
187 |
188 | optional S2C s2c = 4;
189 | }
190 |
191 | .. note::
192 |
193 | * 交易公共参数头结构参考 `TrdHeader `_
194 | * 账户资金结构参考 `Funds `_
195 |
196 | -------------------------------------
197 |
198 | `Trd_GetPositionList.proto `_ - 2102获取持仓列表
199 | -----------------------------------------------------------------------------------------------------------------------------------------------------------
200 |
201 | .. code-block:: protobuf
202 |
203 | syntax = "proto2";
204 | package Trd_GetPositionList;
205 |
206 | import "Common.proto";
207 | import "Trd_Common.proto";
208 |
209 | message C2S
210 | {
211 | required Trd_Common.TrdHeader header = 1; //交易公共参数头
212 | optional Trd_Common.TrdFilterConditions filterConditions = 2; //过滤条件
213 | optional double filterPLRatioMin = 3; //过滤盈亏比例下限,高于此比例的会返回,如0.1,返回盈亏比例大于10%的持仓
214 | optional double filterPLRatioMax = 4; //过滤盈亏比例上限,低于此比例的会返回,如0.2,返回盈亏比例小于20%的持仓
215 | optional bool refreshCache = 5; //立即刷新OpenD缓存的此数据,默认不填。true向服务器获取最新数据更新缓存并返回;flase或没填则返回OpenD缓存的数据,不会向服务器请求。
216 | //正常情况下,服务器有更新就会立即推送到OpenD,OpenD缓存着数据,API请求过来,返回同步的缓存数据,一般不需要指定刷新缓存,保证快速返回且减少对服务器的压力
217 | //如果遇到丢包等情况,可能出现缓存数据与服务器不一致,用户如果发现数据更新有异样,可指定刷新缓存,解决数据同步的问题。
218 | }
219 |
220 | message S2C
221 | {
222 | required Trd_Common.TrdHeader header = 1; //交易公共参数头
223 | repeated Trd_Common.Position positionList = 2; //持仓列表
224 | }
225 |
226 | message Request
227 | {
228 | required C2S c2s = 1;
229 | }
230 |
231 | message Response
232 | {
233 | //以下3个字段每条协议都有,注释说明在InitConnect.proto中
234 | required int32 retType = 1 [default = -400];
235 | optional string retMsg = 2;
236 | optional int32 errCode = 3;
237 |
238 | optional S2C s2c = 4;
239 | }
240 |
241 | .. note::
242 |
243 | * 交易公共参数头结构参考 `TrdHeader `_
244 | * 持仓资金结构参考 `Position `_
245 | * 过滤条件结构参考 `TrdFilterConditions `_
246 |
247 | -------------------------------------
248 |
249 | `Trd_GetMaxTrdQtys.proto `_ - 2111获取最大交易数量
250 | -----------------------------------------------------------------------------------------------------------------------------------------------------------
251 |
252 | .. code-block:: protobuf
253 |
254 | syntax = "proto2";
255 | package Trd_GetMaxTrdQtys;
256 |
257 | import "Common.proto";
258 | import "Trd_Common.proto";
259 |
260 | message C2S
261 | {
262 | required Trd_Common.TrdHeader header = 1; //交易公共参数头
263 | required int32 orderType = 2; //订单类型, 参见Trd_Common.OrderType的枚举定义
264 | required string code = 3; //代码,港股必须是5位数字,A股必须是6位数字,美股没限制
265 | required double price = 4; //价格,3位小数(期货9位),超过四舍五入。如果是竞价、市价单,请也填入一个当前价格,服务器才好计算
266 | optional uint64 orderID = 5; //订单号,新下订单不需要,如果是修改订单就需要把原订单号带上才行,因为改单的最大买卖数量会包含原订单数量。
267 | //为保证与下单的价格同步,也提供调整价格选项,对港、A股有意义,因为港股有价位,A股2位精度,美股可不传
268 | optional bool adjustPrice = 6; //是否调整价格,如果价格不合法,是否调整到合法价位,true调整,false不调整
269 | optional double adjustSideAndLimit = 7; //调整方向和调整幅度百分比限制,正数代表向上调整,负数代表向下调整,具体值代表调整幅度限制,如:0.015代表向上调整且幅度不超过1.5%;-0.01代表向下调整且幅度不超过1%
270 | }
271 |
272 | message S2C
273 | {
274 | required Trd_Common.TrdHeader header = 1; //交易公共参数头
275 | optional Trd_Common.MaxTrdQtys maxTrdQtys = 2; //最大可交易数量结构
276 | }
277 |
278 | message Request
279 | {
280 | required C2S c2s = 1;
281 | }
282 |
283 | message Response
284 | {
285 | //以下3个字段每条协议都有,注释说明在InitConnect.proto中
286 | required int32 retType = 1 [default = -400];
287 | optional string retMsg = 2;
288 | optional int32 errCode = 3;
289 |
290 | optional S2C s2c = 4;
291 | }
292 |
293 | .. note::
294 |
295 | * 交易公共参数头结构参考 `TrdHeader `_
296 | * 最大可交易数量结构参考 `MaxTrdQtys `_
297 |
298 | -------------------------------------
299 |
300 | `Trd_GetOrderList.proto `_ - 2201获取订单列表
301 | -----------------------------------------------------------------------------------------------------------------------------------------------------------
302 |
303 | .. code-block:: protobuf
304 |
305 | syntax = "proto2";
306 | package Trd_GetOrderList;
307 |
308 | import "Common.proto";
309 | import "Trd_Common.proto";
310 |
311 | message C2S
312 | {
313 | required Trd_Common.TrdHeader header = 1; //交易公共参数头
314 | optional Trd_Common.TrdFilterConditions filterConditions = 2; //过滤条件
315 | repeated int32 filterStatusList = 3; //需要过滤的订单状态列表
316 | optional bool refreshCache = 4; //立即刷新OpenD缓存的此数据,默认不填。true向服务器获取最新数据更新缓存并返回;flase或没填则返回OpenD缓存的数据,不会向服务器请求。
317 | //正常情况下,服务器有更新就会立即推送到OpenD,OpenD缓存着数据,API请求过来,返回同步的缓存数据,一般不需要指定刷新缓存,保证快速返回且减少对服务器的压力
318 | //如果遇到丢包等情况,可能出现缓存数据与服务器不一致,用户如果发现数据更新有异样,可指定刷新缓存,解决数据同步的问题。
319 | }
320 |
321 | message S2C
322 | {
323 | required Trd_Common.TrdHeader header = 1; //交易公共参数头
324 | repeated Trd_Common.Order orderList = 2; //订单列表
325 | }
326 |
327 | message Request
328 | {
329 | required C2S c2s = 1;
330 | }
331 |
332 | message Response
333 | {
334 | //以下3个字段每条协议都有,注释说明在InitConnect.proto中
335 | required int32 retType = 1 [default = -400];
336 | optional string retMsg = 2;
337 | optional int32 errCode = 3;
338 |
339 | optional S2C s2c = 4;
340 | }
341 |
342 | .. note::
343 |
344 | * 交易公共参数头结构参考 `TrdHeader `_
345 | * 订单结构参考 `Order `_
346 | * 过滤条件结构参考 `TrdFilterConditions `_
347 |
348 | -------------------------------------
349 |
350 | `Trd_PlaceOrder.proto `_ - 2202下单
351 | -----------------------------------------------------------------------------------------------------------------------------------------------------------
352 |
353 | .. code-block:: protobuf
354 |
355 | syntax = "proto2";
356 | package Trd_PlaceOrder;
357 |
358 | import "Common.proto";
359 | import "Trd_Common.proto";
360 |
361 | message C2S
362 | {
363 | required Common.PacketID packetID = 1; //交易写操作防重放攻击
364 | required Trd_Common.TrdHeader header = 2; //交易公共参数头
365 | required int32 trdSide = 3; //交易方向, 参见Trd_Common.TrdSide的枚举定义
366 | required int32 orderType = 4; //订单类型, 参见Trd_Common.OrderType的枚举定义
367 | required string code = 5; //代码,港股必须是5位数字,A股必须是6位数字,美股没限制
368 | required double qty = 6; //数量,整数,期权单位是"张"
369 | optional double price = 7; //价格,3位小数(期货9位),超过四舍五入
370 | //以下为调整价格使用,对港、A股有意义,因为港股有价位,A股2位精度,美股可不传
371 | optional bool adjustPrice = 8; //是否调整价格,如果价格不合法,是否调整到合法价位,true调整,false不调整
372 | optional double adjustSideAndLimit = 9; //调整方向和调整幅度百分比限制,正数代表向上调整,负数代表向下调整,具体值代表调整幅度限制,如:0.015代表向上调整且幅度不超过1.5%;-0.01代表向下调整且幅度不超过1%
373 | optional int32 secMarket = 10; //(2018/07/17新增)证券所属市场,参见TrdSecMarket的枚举定义
374 | optional string remark = 11; //用户备注字符串,最多只能传64字节。可用于标识订单唯一信息等,下单填上,订单结构就会带上。
375 | }
376 |
377 | message S2C
378 | {
379 | required Trd_Common.TrdHeader header = 1; //交易公共参数头
380 | optional uint64 orderID = 2; //订单号
381 | }
382 |
383 | message Request
384 | {
385 | required C2S c2s = 1;
386 | }
387 |
388 | //如果下单返回的retMsg没用描述清楚错误,可再查看errCode了解详情,errCode一些取值和对应的错误描述如下:
389 | //2: 需要升级到保证金账户
390 | //3: 需要对交易期权的风险确认才能交易交易期权
391 | //7: 开户时选择了不希望交易衍生品
392 | //8: 需要对交易股权的风险确认才能交易交易股权
393 | //9: 需要对交易低价股的风险确认才能交易交易低价股
394 | //11: 需要对暗盘交易的风险确认才能进行暗盘交易
395 | message Response
396 | {
397 | //以下3个字段每条协议都有,注释说明在InitConnect.proto中
398 | required int32 retType = 1 [default = -400];
399 | optional string retMsg = 2;
400 | optional int32 errCode = 3;
401 |
402 | optional S2C s2c = 4;
403 | }
404 |
405 | .. note::
406 |
407 | * 请求包标识结构参考 `PacketID `_
408 | * 交易公共参数头结构参考 `TrdHeader `_
409 | * 交易方向枚举参考 `TrdSide `_
410 | * 订单类型枚举参考 `OrderType `_
411 | * 股票行情市场参考 `TrdSecMarket `_
412 | * 限频接口::ref:`place-order-limit`
413 |
414 | * 如果下单返回的retMsg没用描述清楚错误,可再查看errCode了解详情,errCode一些取值和对应的错误描述如下:
415 | * 2: 需要升级到保证金账户
416 | * 3: 需要对交易期权的风险确认才能交易交易期权
417 | * 7: 开户时选择了不希望交易衍生品
418 | * 8: 需要对交易股权的风险确认才能交易交易股权
419 | * 9: 需要对交易低价股的风险确认才能交易交易低价股
420 | * 11: 需要对暗盘交易的风险确认才能进行暗盘交易
421 |
422 | -------------------------------------
423 |
424 | `Trd_ModifyOrder.proto `_ - 2205修改订单(改价、改量、改状态等)
425 | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
426 |
427 | .. code-block:: protobuf
428 |
429 | syntax = "proto2";
430 | package Trd_ModifyOrder;
431 |
432 | import "Common.proto";
433 | import "Trd_Common.proto";
434 |
435 | message C2S
436 | {
437 | required Common.PacketID packetID = 1; //交易写操作防重放攻击
438 | required Trd_Common.TrdHeader header = 2; //交易公共参数头
439 | required uint64 orderID = 3; //订单号,forAll为true时,传0
440 | required int32 modifyOrderOp = 4; //修改操作类型,参见Trd_Common.ModifyOrderOp的枚举定义
441 | optional bool forAll = 5; //是否对此业务账户的全部订单操作,true是,false否(对单个订单),无此字段代表false,仅对单个订单
442 |
443 | //下面的字段仅在modifyOrderOp为ModifyOrderOp_Normal有效
444 | optional double qty = 8; //数量,整数,期权单位是"张"
445 | optional double price = 9; //价格,3位小数(期货9位),超过四舍五入
446 | //以下为调整价格使用,对港、A股有意义,因为港股有价位,A股2位精度,美股可不传
447 | optional bool adjustPrice = 10; //是否调整价格,如果价格不合法,是否调整到合法价位,true调整,false不调整
448 | optional double adjustSideAndLimit = 11; //调整方向和调整幅度百分比限制,正数代表向上调整,负数代表向下调整,具体值代表调整幅度限制,如:0.015代表向上调整且幅度不超过1.5%;-0.01代表向下调整且幅度不超过1%
449 | }
450 |
451 | message S2C
452 | {
453 | required Trd_Common.TrdHeader header = 1; //交易公共参数头
454 | required uint64 orderID = 2; //订单号
455 | }
456 |
457 | message Request
458 | {
459 | required C2S c2s = 1;
460 | }
461 |
462 | message Response
463 | {
464 | //以下3个字段每条协议都有,注释说明在InitConnect.proto中
465 | required int32 retType = 1 [default = -400];
466 | optional string retMsg = 2;
467 | optional int32 errCode = 3;
468 |
469 | optional S2C s2c = 4;
470 | }
471 |
472 | .. note::
473 |
474 | * 请求包标识结构参考 `PacketID `_
475 | * 交易公共参数头结构参考 `TrdHeader `_
476 | * 修改操作枚举参考 `ModifyOrderOp `_
477 | * 限频接口::ref:`modify-order-limit`
478 | * 模拟交易以及A股通暂不支持全部撤单
479 |
480 | -------------------------------------
481 |
482 | `Trd_UpdateOrder.proto `_ - 2208推送订单更新
483 | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
484 |
485 | .. code-block:: protobuf
486 |
487 | syntax = "proto2";
488 | package Trd_UpdateOrder;
489 |
490 | import "Common.proto";
491 | import "Trd_Common.proto";
492 |
493 | //推送协议,无C2S和Request结构,retType始终是RetType_Succeed
494 |
495 | message S2C
496 | {
497 | required Trd_Common.TrdHeader header = 1; //交易公共参数头
498 | required Trd_Common.Order order = 2; //订单结构
499 | }
500 |
501 | message Response
502 | {
503 | //以下3个字段每条协议都有,注释说明在InitConnect.proto中
504 | required int32 retType = 1 [default = -400];
505 | optional string retMsg = 2;
506 | optional int32 errCode = 3;
507 |
508 | optional S2C s2c = 4;
509 | }
510 |
511 | .. note::
512 |
513 | * 交易公共参数头结构参考 `TrdHeader `_
514 | * 订单结构参考 `Order `_
515 |
516 | -------------------------------------
517 |
518 | `Trd_GetOrderFillList.proto `_ - 2211获取成交列表
519 | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
520 |
521 | .. code-block:: protobuf
522 |
523 | syntax = "proto2";
524 | package Trd_GetOrderFillList;
525 |
526 | import "Common.proto";
527 | import "Trd_Common.proto";
528 |
529 | message C2S
530 | {
531 | required Trd_Common.TrdHeader header = 1; //交易公共参数头
532 | optional Trd_Common.TrdFilterConditions filterConditions = 2; //过滤条件
533 | optional bool refreshCache = 3; //立即刷新OpenD缓存的此数据,默认不填。true向服务器获取最新数据更新缓存并返回;flase或没填则返回OpenD缓存的数据,不会向服务器请求。
534 | //正常情况下,服务器有更新就会立即推送到OpenD,OpenD缓存着数据,API请求过来,返回同步的缓存数据,一般不需要指定刷新缓存,保证快速返回且减少对服务器的压力
535 | //如果遇到丢包等情况,可能出现缓存数据与服务器不一致,用户如果发现数据更新有异样,可指定刷新缓存,解决数据同步的问题。
536 | }
537 |
538 | message S2C
539 | {
540 | required Trd_Common.TrdHeader header = 1; //交易公共参数头
541 | repeated Trd_Common.OrderFill orderFillList = 2; //成交列表
542 | }
543 |
544 | message Request
545 | {
546 | required C2S c2s = 1;
547 | }
548 |
549 | message Response
550 | {
551 | //以下3个字段每条协议都有,注释说明在InitConnect.proto中
552 | required int32 retType = 1 [default = -400];
553 | optional string retMsg = 2;
554 | optional int32 errCode = 3;
555 |
556 | optional S2C s2c = 4;
557 | }
558 |
559 | .. note::
560 |
561 | * 交易公共参数头结构参考 `TrdHeader `_
562 | * 订单结构参考 `OrderFill `_
563 | * 过滤条件结构参考 `TrdFilterConditions `_
564 |
565 | -------------------------------------
566 |
567 | `Trd_UpdateOrderFill.proto `_ - 2218推送新成交
568 | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
569 |
570 | .. code-block:: protobuf
571 |
572 | syntax = "proto2";
573 | package Trd_UpdateOrderFill;
574 |
575 | import "Common.proto";
576 | import "Trd_Common.proto";
577 |
578 | //推送协议,无C2S和Request结构,retType始终是RetType_Succeed
579 |
580 | message S2C
581 | {
582 | required Trd_Common.TrdHeader header = 1; //交易公共参数头
583 | required Trd_Common.OrderFill orderFill = 2; //成交结构
584 | }
585 |
586 | message Response
587 | {
588 | //以下3个字段每条协议都有,注释说明在InitConnect.proto中
589 | required int32 retType = 1 [default = -400];
590 | optional string retMsg = 2;
591 | optional int32 errCode = 3;
592 |
593 | optional S2C s2c = 4;
594 | }
595 |
596 | .. note::
597 |
598 | * 交易公共参数头结构参考 `TrdHeader `_
599 | * 订单结构参考 `OrderFill `_
600 |
601 | -------------------------------------
602 |
603 | `Trd_GetHistoryOrderList.proto `_ - 2221获取历史订单列表
604 | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
605 |
606 | .. code-block:: protobuf
607 |
608 | syntax = "proto2";
609 | package Trd_GetHistoryOrderList;
610 |
611 | import "Common.proto";
612 | import "Trd_Common.proto";
613 |
614 | message C2S
615 | {
616 | required Trd_Common.TrdHeader header = 1; //交易公共参数头
617 | required Trd_Common.TrdFilterConditions filterConditions = 2; //过滤条件
618 | repeated int32 filterStatusList = 3; //需要过滤的订单状态列表
619 | }
620 |
621 | message S2C
622 | {
623 | required Trd_Common.TrdHeader header = 1; //交易公共参数头
624 | repeated Trd_Common.Order orderList = 2; //历史订单列表
625 | }
626 |
627 | message Request
628 | {
629 | required C2S c2s = 1;
630 | }
631 |
632 | message Response
633 | {
634 | //以下3个字段每条协议都有,注释说明在InitConnect.proto中
635 | required int32 retType = 1 [default = -400];
636 | optional string retMsg = 2;
637 | optional int32 errCode = 3;
638 |
639 | optional S2C s2c = 4;
640 | }
641 |
642 | .. note::
643 |
644 | * 交易公共参数头结构参考 `TrdHeader `_
645 | * 订单结构参考 `Order `_
646 | * 过滤条件结构参考 `TrdFilterConditions `_
647 | * 订单状态枚举参考 `OrderStatus `_
648 | * 限频接口::ref:`history-order-list-query-limit`
649 |
650 | -------------------------------------
651 |
652 | `Trd_GetHistoryOrderFillList.proto `_ - 2222获取历史成交列表
653 | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
654 |
655 | .. code-block:: protobuf
656 |
657 | syntax = "proto2";
658 | package Trd_GetHistoryOrderFillList;
659 |
660 | import "Common.proto";
661 | import "Trd_Common.proto";
662 |
663 | message C2S
664 | {
665 | required Trd_Common.TrdHeader header = 1; //交易公共参数头
666 | required Trd_Common.TrdFilterConditions filterConditions = 2; //过滤条件
667 | }
668 |
669 | message S2C
670 | {
671 | required Trd_Common.TrdHeader header = 1; //交易公共参数头
672 | repeated Trd_Common.OrderFill orderFillList = 2; //历史成交列表
673 | }
674 |
675 | message Request
676 | {
677 | required C2S c2s = 1;
678 | }
679 |
680 | message Response
681 | {
682 | //以下3个字段每条协议都有,注释说明在InitConnect.proto中
683 | required int32 retType = 1 [default = -400];
684 | optional string retMsg = 2;
685 | optional int32 errCode = 3;
686 |
687 | optional S2C s2c = 4;
688 | }
689 |
690 | .. note::
691 |
692 | * 交易公共参数头结构参考 `TrdHeader `_
693 | * 成交结构参考 `OrderFill `_
694 | * 过滤条件结构参考 `TrdFilterConditions `_
695 | * 限频接口::ref:`history-deal-list-query-limit`
696 |
697 |
698 |
--------------------------------------------------------------------------------
/doc_maker/source/protocol/intro.rst:
--------------------------------------------------------------------------------
1 | .. note::
2 |
3 | Futu OpenAPI 文档已于2020年10月16日全新升级,请移步至 `新文档 `_
4 |
5 | 旧的github文档将不再更新,并于2020年11月16日正式停止访问。
6 |
7 |
8 | .. _py-futu-api: ../api/intro.html
9 |
10 |
11 | 协议接口
12 | ====================
13 | + FutuOpenD是futu-api项目的网关客户端,在本机或云端成功运行后,第三方应用即可通过约定的TCP协议与之通讯,从而达到调用指定行情和交易接口的目的。
14 | + py-futu-api_ 可以简化在python编程上协议通讯的复杂度,其他语言接口正在陆续开发中……
15 |
16 | --------------
17 |
18 | .. _nProtoFmtType: #id8
19 | .. _InitConnect: base_define.html#initconnect-proto-1001
20 | .. _InitConnect.proto: base_define.html#initconnect-proto-1001
21 | .. _GetGlobalState.proto: base_define.html#getglobalstate-proto-1002
22 | .. _Notify.proto: base_define.html#notify-proto-1003
23 | .. _KeepAlive.proto: base_define.html#keepalive-proto-1004
24 | .. _KeepAlive: base_define.html#keepalive-proto-1004
25 |
26 | .. _Trd_GetAccList.proto: trade_protocol.html#trd-getacclist-proto-2001
27 |
28 | .. _Trd_UnlockTrade.proto: trade_protocol.html#trd-unlocktrade-proto-2005
29 | .. _2005: trade_protocol.html#trd-unlocktrade-proto-2005
30 |
31 | .. _Trd_SubAccPush.proto: trade_protocol.html#trd-subaccpush-proto-2008
32 | .. _Trd_GetFunds.proto: trade_protocol.html#trd-getfunds-proto-2101
33 | .. _2101: trade_protocol.html#trd-getfunds-proto-2101
34 | .. _Trd_GetPositionList.proto: trade_protocol.html#trd-getpositionlist-proto-2102
35 | .. _2102: trade_protocol.html#trd-getpositionlist-proto-2102
36 |
37 | .. _Trd_GetMaxTrdQtys.proto: trade_protocol.html#trd-getmaxtrdqtys-proto-2111
38 | .. _2111: trade_protocol.html#trd-getmaxtrdqtys-proto-2111
39 |
40 | .. _Trd_GetOrderList.proto: trade_protocol.html#trd-getorderlist-proto-2201
41 | .. _2201: trade_protocol.html#trd-getorderlist-proto-2201
42 |
43 | .. _Trd_PlaceOrder.proto: trade_protocol.html#trd-placeorder-proto-2202
44 | .. _2202: trade_protocol.html#trd-placeorder-proto-2202
45 |
46 | .. _Trd_ModifyOrder.proto: trade_protocol.html#trd-modifyorder-proto-2205
47 | .. _2205: trade_protocol.html#trd-modifyorder-proto-2205
48 |
49 | .. _Trd_UpdateOrder.proto: trade_protocol.html#trd-updateorder-proto-2208
50 |
51 | .. _Trd_GetOrderFillList.proto: trade_protocol.html#trd-getorderfilllist-proto-2211
52 | .. _2211: trade_protocol.html#trd-getorderfilllist-proto-2211
53 | .. _Trd_UpdateOrderFill.proto: trade_protocol.html#trd-updateorderfill-proto-2218
54 |
55 | .. _Trd_GetHistoryOrderList.proto: trade_protocol.html#trd-gethistoryorderlist-proto-2221
56 | .. _2221: trade_protocol.html#trd-gethistoryorderlist-proto-2221
57 |
58 | .. _Trd_GetHistoryOrderFillList.proto: trade_protocol.html#trd-gethistoryorderfilllist-proto-2222
59 | .. _2222: trade_protocol.html#trd-gethistoryorderfilllist-proto-2222
60 |
61 | .. _Qot_Sub.proto: quote_protocol.html#qot-sub-proto-3001
62 | .. _3001: quote_protocol.html#qot-sub-proto-3001
63 | .. _Qot_RegQotPush.proto: quote_protocol.html#qot-regqotpush-proto-3002
64 | .. _Qot_GetSubInfo.proto: quote_protocol.html#qot-getsubinfo-proto-3003
65 | .. _Qot_GetBasicQot.proto: quote_protocol.html#qot-getbasicqot-proto-3004
66 | .. _Qot_UpdateBasicQot.proto: quote_protocol.html#qot-updatebasicqot-proto-3005
67 |
68 | .. _Qot_GetKL.proto: quote_protocol.html#qot-getkl-proto-3006k
69 | .. _3006: quote_protocol.html#qot-getkl-proto-3006k
70 | .. _Qot_UpdateKL.proto: quote_protocol.html#qot-updatekl-proto-3007k
71 | .. _Qot_GetRT.proto: quote_protocol.html#qot-getrt-proto-3008
72 | .. _Qot_UpdateRT.proto: quote_protocol.html#qot-updatert-proto-3009
73 | .. _Qot_GetTicker.proto: quote_protocol.html#qot-getticker-proto-3010
74 | .. _3010: quote_protocol.html#qot-getticker-proto-3010
75 | .. _Qot_UpdateTicker.proto: quote_protocol.html#qot-updateticker-proto-3011
76 | .. _Qot_GetOrderBook.proto: quote_protocol.html#qot-getorderbook-proto-3012
77 | .. _Qot_UpdateOrderBook.proto: quote_protocol.html#qot-updateorderbook-proto-3013
78 | .. _Qot_GetBroker.proto: quote_protocol.html#qot-getbroker-proto-3014
79 | .. _Qot_UpdateBroker.proto: quote_protocol.html#qot-updatebroker-proto-3015
80 |
81 | .. _Qot_GetHistoryKL.proto: quote_protocol.html#qot-gethistorykl-proto-3100k
82 | .. _Qot_GetHistoryKLPoints.proto: quote_protocol.html#qot-gethistoryklpoints-proto-3101k
83 | .. _Qot_GetRehab.proto: quote_protocol.html#qot-getrehab-proto-3102
84 | .. _Qot_RequestRehab.proto: quote_protocol.html#qot-requestrehab-proto-3105
85 | .. _3105: quote_protocol.html#qot-requestrehab-proto-3105
86 |
87 | .. _Qot_RequestHistoryKL.proto: quote_protocol.html#qot-requesthistorykl-proto-3103k
88 | .. _3103: quote_protocol.html#qot-requesthistorykl-proto-3103k
89 |
90 | .. _Qot_GetTradeDate.proto: quote_protocol.html#qot-gettradedate-proto-3200
91 | .. _Qot_GetStaticInfo.proto: quote_protocol.html#qot-getstaticinfo-proto-3202
92 |
93 | .. _Qot_GetSecuritySnapshot.proto: quote_protocol.html#qot-getsecuritysnapshot-proto-3203
94 | .. _3203: quote_protocol.html#qot-getsecuritysnapshot-proto-3203
95 |
96 | .. _Qot_GetPlateSet.proto: quote_protocol.html#qot-getplateset-proto-3204
97 | .. _3204: quote_protocol.html#qot-getplateset-proto-3204
98 | .. _Qot_GetPlateSecurity.proto: quote_protocol.html#qot-getplatesecurity-proto-3205
99 | .. _3205: quote_protocol.html#qot-getplatesecurity-proto-3205
100 | .. _Qot_GetReference.proto: quote_protocol.html#qot-getreference-proto-3206
101 | .. _3206: quote_protocol.html#qot-getreference-proto-3206
102 | .. _Qot_GetOwnerPlate.proto: quote_protocol.html#qot-getownerplate-proto-3207
103 | .. _3207: quote_protocol.html#qot-getownerplate-proto-3207
104 | .. _Qot_GetHoldingChangeList.proto: quote_protocol.html#qot-getholdingchangelist-proto-3208
105 | .. _3208: quote_protocol.html#qot-getholdingchangelist-proto-3208
106 | .. _Qot_GetOptionChain.proto: quote_protocol.html#qot-getoptionchain-proto-3209
107 | .. _3209: quote_protocol.html#qot-getoptionchain-proto-3209
108 | .. _SubType: base_define.html#subtype
109 |
110 | .. _Qot_GetWarrant.proto: quote_protocol.html#qot-getwarrant-proto-3210
111 | .. _3210: quote_protocol.html#qot-getwarrant-proto-3210
112 |
113 | .. _Qot_GetCapitalFlow.proto: quote_protocol.html#qot-getcapitalflow-proto-3211
114 | .. _3211: quote_protocol.html#qot-getcapitalflow-proto-3211
115 | .. _Qot_GetCapitalDistribution.proto: quote_protocol.html#qot-getcapitaldistribution-proto-3212
116 | .. _3212: quote_protocol.html#qot-getcapitaldistribution-proto-3212
117 |
118 | .. _Qot_GetUserSecurity.proto: quote_protocol.html#qot-getusersecurity-proto-3213
119 | .. _3213: quote_protocol.html#qot-getusersecurity-proto-3213
120 |
121 | .. _Qot_ModifyUserSecurity.proto: quote_protocol.html#qot-modifyusersecurity-proto-3214
122 | .. _3214: quote_protocol.html#qot-modifyusersecurity-proto-3214
123 |
124 | .. _Qot_StockFilter.proto: quote_protocol.html#qot-stockfilter-proto-3215
125 | .. _3215: quote_protocol.html#qot-stockfilter-proto-3215
126 |
127 | .. _Qot_GetIpoList.proto: quote_protocol.html#qot-getipolist-proto-3217ipo
128 | .. _3217: quote_protocol.html#qot-getipolist-proto-3217ipo
129 |
130 | .. _Qot_GetFutureInfo.proto: quote_protocol.html#qot-getfutureinfo-proto-3218
131 | .. _3218: quote_protocol.html#qot-getfutureinfo-proto-3218
132 |
133 | .. _Qot_RequestTradeDate.proto: quote_protocol.html#qot-requesttradedate-proto-3219
134 | .. _3219: quote_protocol.html#qot-requesttradedate-proto-3219
135 |
136 | .. _Qot_SetPriceReminder.proto: quote_protocol.html#qot-setpricereminder-proto-3220
137 | .. _3220: quote_protocol.html#qot-setpricereminder-proto-3220
138 |
139 | .. _Qot_GetPriceReminder.proto: quote_protocol.html#qot-getpricereminder-proto-3221
140 | .. _3221: quote_protocol.html#qot-getpricereminder-proto-3221
141 |
142 | .. _Qot_GetUserSecurityGroup.proto: quote_protocol.html#qot-getusersecuritygroup-proto-3222
143 | .. _3222: quote_protocol.html#qot-getusersecuritygroup-proto-3222
144 |
145 | .. _Qot_GetMarketState.proto: quote_protocol.html#qot-getmarketstate-proto-3223
146 | .. _3223: quote_protocol.html#qot-getmarketstate-proto-3223
147 |
148 | .. role:: red-strengthen
149 |
150 | 特点
151 | -------
152 |
153 | + 基于TCP传输协议实现,稳定高效。
154 | + 支持protobuf/json两种协议格式, 灵活接入。
155 | + 协议设计支持加密、数据校验及回放功击保护,安全可靠。
156 |
157 |
158 | ---------------------------------------------------
159 |
160 | 协议清单
161 | ----------
162 |
163 | ============== ================================== ==================================================================
164 | 协议ID Protobuf文件 说明
165 | ============== ================================== ==================================================================
166 | 1001 InitConnect.proto_ 初始化连接
167 | 1002 GetGlobalState.proto_ 获取全局状态
168 | 1003 Notify.proto_ 系统通知推送
169 | 1004 KeepAlive.proto_ 保活心跳
170 | 2001 Trd_GetAccList.proto_ 获取业务账户列表
171 | 2005 Trd_UnlockTrade.proto_ 解锁或锁定交易
172 | 2008 Trd_SubAccPush.proto_ 订阅业务账户的交易推送数据
173 | 2101 Trd_GetFunds.proto_ 获取账户资金
174 | 2102 Trd_GetPositionList.proto_ 获取账户持仓
175 | 2111 Trd_GetMaxTrdQtys.proto_ 获取最大交易数量
176 | 2201 Trd_GetOrderList.proto_ 获取订单列表
177 | 2202 Trd_PlaceOrder.proto_ 下单
178 | 2205 Trd_ModifyOrder.proto_ 修改订单
179 | 2208 Trd_UpdateOrder.proto_ 推送订单状态变动通知
180 | 2211 Trd_GetOrderFillList.proto_ 获取成交列表
181 | 2218 Trd_UpdateOrderFill.proto_ 推送成交通知
182 | 2221 Trd_GetHistoryOrderList.proto_ 获取历史订单列表
183 | 2222 Trd_GetHistoryOrderFillList.proto_ 获取历史成交列表
184 | 3001 Qot_Sub.proto_ 订阅或者反订阅
185 | 3002 Qot_RegQotPush.proto_ 注册推送
186 | 3003 Qot_GetSubInfo.proto_ 获取订阅信息
187 | 3004 Qot_GetBasicQot.proto_ 获取股票基本报价
188 | 3005 Qot_UpdateBasicQot.proto_ 推送股票基本报价
189 | 3006 Qot_GetKL.proto_ 获取K线
190 | 3007 Qot_UpdateKL.proto_ 推送K线
191 | 3008 Qot_GetRT.proto_ 获取分时
192 | 3009 Qot_UpdateRT.proto_ 推送分时
193 | 3010 Qot_GetTicker.proto_ 获取逐笔
194 | 3011 Qot_UpdateTicker.proto_ 推送逐笔
195 | 3012 Qot_GetOrderBook.proto_ 获取买卖盘
196 | 3013 Qot_UpdateOrderBook.proto_ 推送买卖盘
197 | 3014 Qot_GetBroker.proto_ 获取经纪队列
198 | 3015 Qot_UpdateBroker.proto_ 推送经纪队列
199 | 3100 Qot_GetHistoryKL.proto_ 从本地下载历史数据获取单只股票一段历史K线
200 | 3101 Qot_GetHistoryKLPoints.proto_ 从本地下载历史数据获取多只股票多点历史K线
201 | 3102 Qot_GetRehab.proto_ 从本地下载历史数据获取复权信息
202 | 3103 Qot_RequestHistoryKL.proto_ 在线获取单只股票一段历史K线
203 | 3105 Qot_RequestRehab.proto_ 在线获取单只股票复权信息
204 | 3200 Qot_GetTradeDate.proto_ 获取市场交易日
205 | 3202 Qot_GetStaticInfo.proto_ 获取股票静态信息
206 | 3203 Qot_GetSecuritySnapshot.proto_ 获取股票快照
207 | 3204 Qot_GetPlateSet.proto_ 获取板块集合下的板块
208 | 3205 Qot_GetPlateSecurity.proto_ 获取板块下的股票
209 | 3206 Qot_GetReference.proto_ 获取正股相关股票
210 | 3207 Qot_GetOwnerPlate.proto_ 获取股票所属板块
211 | 3208 Qot_GetHoldingChangeList.proto_ 获取持股变化列表
212 | 3209 Qot_GetOptionChain.proto_ 获取期权链
213 | 3210 Qot_GetWarrant.proto_ 获取窝轮
214 | 3211 Qot_GetCapitalFlow.proto_ 获取资金流向
215 | 3212 Qot_GetCapitalDistribution.proto_ 获取资金分布
216 | 3213 Qot_GetUserSecurity.proto_ 获取自选股分组下的股票
217 | 3214 Qot_ModifyUserSecurity.proto_ 修改自选股分组下的股票
218 | 3215 Qot_StockFilter.proto_ 获取条件选股
219 | 3217 Qot_GetIpoList.proto_ 获取新股
220 | 3218 Qot_GetFutureInfo.proto_ 获取期货合约资料
221 | 3219 Qot_RequestTradeDate.proto_ 获取市场交易日,在线拉取不在本地计算
222 | 3220 Qot_SetPriceReminder.proto_ 设置到价提醒
223 | 3221 Qot_GetPriceReminder.proto_ 获取到价提醒
224 | 3222 Qot_GetUserSecurityGroup.proto_ 获取自选股分组列表
225 | 3223 Qot_GetMarketState.proto_ 获取指定品种的市场状态
226 | ============== ================================== ==================================================================
227 |
228 | .. note::
229 |
230 | * 所有 Protobuf 文件可从 `futu-api `_ Python开源项目下获取
231 |
232 | ---------------------------------------------------
233 |
234 | .. _quota-limit:
235 |
236 | 协议请求限制
237 | ---------------
238 |
239 | API用户额度
240 | ~~~~~~~~~~~~~~~~~~~~~~
241 |
242 | 部分协议额度限制划分如下:
243 |
244 | .. image:: ../_static/quota-table.png
245 |
246 | 1. 总资产
247 |
248 | 是指您在富途的所有资产,包括港美 A 股账户、Futu Inc. 账户、基金账户等,按照即期汇率换算成以港币为单位。
249 |
250 | 2. 交易笔数
251 |
252 | 会综合您当前自然月与上一自然月的交易情况,取您上个自然月的成交笔数与当前自然月的成交笔数的较大值进行计算,即:max (上个自然月的成交笔数,当前自然月的成交笔数)。
253 |
254 | 3. 交易额
255 |
256 | 是取您上个自然月的成交总金额与当前自然月的成交总金额的较大值进行计算,即:max(上个自然月的成交总金额,当前自然月的成交总金额),按照即期汇率换算成以港币为单位。其中,期货交易额的计算,需要乘以相应的调整系数(默认取0.1),期货交易额计算公式如下:
257 |
258 | 期货交易额=∑(单笔成交数 * 成交价 * 合约乘数 * 汇率 * 调整系数)
259 |
260 | 4. 订阅额度
261 |
262 | 适用于订阅才可获取到的实时数据接口,每只股票订阅一个类型即占用 1 个订阅额度,取消订阅会释放已占用的额度。
263 |
264 | **举例:**
265 |
266 | 假设您的订阅额度是 100。
267 | 当您同时订阅了 HK.00700 的实时摆盘、US.AAPL 的实时逐笔、SH.600519 的实时报价时,此时订阅额度会占用 3 个,剩余的订阅额度为 97。
268 | 这时,如果您取消了 HK.00700 的实时摆盘订阅,您的订阅额度占用将变成 2 个,剩余订阅额度会变成 98。
269 |
270 | 5. 历史 K 线额度(30 天内)
271 |
272 | 适用于历史 K 线接口。最近 30 天内,每请求 1 只股票的历史 K 线,将会占用 1 个历史 K 线额度。最近 30 天内重复请求同一只股票的历史 K 线,不会重复累计。
273 |
274 | **举例:**
275 |
276 | 假设您的历史 K 线额度是 100,今天是 2020 年 7 月 5 日。
277 | 您在 2020 年 6 月 5 日~2020 年 7 月 5 日之间,共计请求了 60 只股票的历史 K 线,则剩余的历史 K 线额度为 40。
278 |
279 |
280 | .. _unlock-limit:
281 |
282 | 解锁或锁定交易
283 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
284 |
285 | * 协议ID: 2005_
286 | * :red-strengthen:`30` 秒内请求次数最多 :red-strengthen:`10` 次
287 |
288 | .. _acctradinginfo-query-limit:
289 |
290 | 获取最大交易数量
291 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
292 | * 协议ID: 2111_
293 | * :red-strengthen:`30` 秒内请求次数最多 :red-strengthen:`10` 次
294 |
295 | .. _accinfo-query-limit:
296 |
297 | 获取账户资金
298 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
299 | * 请求协议ID: 2101_
300 | * :red-strengthen:`30` 秒内请求最多 :red-strengthen:`10` 次
301 | * 仅当refreshCache为True时限制频率
302 |
303 | .. _position-list-query-limit:
304 |
305 | 获取账户持仓
306 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
307 | * 请求协议ID: 2102_
308 | * :red-strengthen:`30` 秒内请求最多 :red-strengthen:`10` 次
309 | * 仅当refreshCache为True时限制频率
310 |
311 | .. _deal-list-query-limit:
312 |
313 | 获取成交列表
314 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
315 | * 请求协议ID: 2211_
316 | * :red-strengthen:`30` 秒内请求最多 :red-strengthen:`10` 次
317 | * 仅当refreshCache为True时限制频率
318 |
319 | .. _order-list-query-limit:
320 |
321 | 获取订单列表
322 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
323 | * 请求协议ID: 2201_
324 | * :red-strengthen:`30` 秒内请求最多 :red-strengthen:`10` 次
325 | * 仅当refreshCache为True时限制频率
326 |
327 | .. _place-order-limit:
328 |
329 | 下单
330 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
331 | * 请求协议ID: 2202_
332 | * :red-strengthen:`30` 秒内请求最多 :red-strengthen:`15` 次,连续两次请求的间隔不可小于 :red-strengthen:`0.02` 秒。
333 |
334 | .. _modify-order-limit:
335 |
336 | 修改订单
337 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
338 | * 请求协议ID: 2205_
339 | * :red-strengthen:`30` 秒内请求最多 :red-strengthen:`20` 次,连续两次请求的间隔不可小于 :red-strengthen:`0.02` 秒。
340 |
341 | .. _history-order-list-query-limit:
342 |
343 | 获取历史订单列表
344 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
345 | * 请求协议ID: 2221_
346 | * :red-strengthen:`30` 秒内请求最多 :red-strengthen:`10` 次
347 |
348 | .. _history-deal-list-query-limit:
349 |
350 | 获取历史成交列表
351 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
352 | * 请求协议ID: 2222_
353 | * :red-strengthen:`30` 秒内请求最多 :red-strengthen:`10` 次
354 |
355 | .. _subscribe-limit:
356 |
357 | 订阅反订阅
358 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
359 | * 请求协议ID: 3001_
360 | * 支持多种实时数据类型的定阅,参见 SubType_ , 每支股票订阅一个类型占用一个额度。
361 | * 额度现在限制请参见 :ref:`API用户额度 `
362 | * 至少订阅一分钟才可以反订阅。
363 | * 由于港股 SF 行情摆盘数据量较大,为保证 SF 行情的速度和 OpenD 的处理性能,目前 SF 权限用户仅限同时订阅 50 只证券类产品(含 hkex 的正股、窝轮、牛熊)的摆盘(如需放开限制,请联系工作人员 https://help.futu5.com/faq/topic2348),剩余订阅额度仍可用于订阅其他类型,如:逐笔,买卖经纪等
364 | * 港股期权期货在LV1权限下,不支持订阅逐笔类型。
365 |
366 | .. _get-cur-kline-limit:
367 |
368 | 获取K线
369 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
370 | * 请求协议ID: 3006_
371 | * 最多能获取最近 :red-strengthen:`1000` 根
372 | * 市盈率,换手率字段只有日K及日K以上周期的正股才有数据。
373 |
374 | .. _get-rt-ticker-limit:
375 |
376 | 获取逐笔
377 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
378 | * 请求协议ID: 3010_
379 | * 最多能获取最近 :red-strengthen:`1000` 根
380 | * 港股期权期货在LV1权限下,不支持获取逐笔。
381 |
382 | .. _request-history-kline-limit:
383 |
384 | 在线获取单只股票一段历史K线
385 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
386 | * 请求协议ID: 3103_
387 | * 30天内在线获取历史K线最多可请求股票数请参见 :ref:`API用户额度 `
388 | * :red-strengthen:`30` 秒内请求最多 :red-strengthen:`60` 次,可分页的请求,第1页限频,后续页请求不限频
389 | * 分K提供最近2年数据,日K及以上提供近10年数据。
390 | * 美股盘前和盘后仅支持 60 分钟及以下级别的K线。由于美股盘前和盘后时段为非常规交易时段,此时段的K线数据可能不足两年。
391 |
392 | .. _get-rehab-limit:
393 |
394 | 在线获取单只股票复权信息
395 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
396 | * 请求协议ID: 3105_
397 | * :red-strengthen:`30` 秒内请求最多 :red-strengthen:`60` 次
398 |
399 | .. _get-market-snapshot-limit:
400 |
401 | 获取股票快照
402 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
403 | * 请求协议ID: 3203_
404 | * 每次可请求股票数最多 :red-strengthen:`400` 个
405 | * 30秒内快照最多请求次数 :red-strengthen:`60` 次
406 | * 港股 BMP 权限下,单次请求的香港证券(含窝轮牛熊界内证)快照数量上限是 :red-strengthen:`20` 个
407 | * 港股期权期货 BMP 权限下,单次请求的香港期货和期权的快照数量上限是 :red-strengthen:`20` 个
408 |
409 | .. _get-plate-list-limit:
410 |
411 | 获取板块集合下的板块
412 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
413 | * 请求协议ID: 3204_
414 | * :red-strengthen:`30` 秒内请求最多 :red-strengthen:`10` 次
415 |
416 | .. _get-plate-stock-limit:
417 |
418 | 获取板块下的股票
419 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
420 | * 请求协议ID: 3205_
421 | * :red-strengthen:`30` 秒内请求最多 :red-strengthen:`10` 次
422 |
423 | .. _get-referencestock-list-limit:
424 |
425 | 获取股票关联数据
426 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
427 | * 请求协议ID: 3206_
428 | * :red-strengthen:`30` 秒内请求最多 :red-strengthen:`10` 次
429 | * 查询相关窝轮不限频
430 |
431 | .. _get-owner-plate-limit:
432 |
433 | 获取股票所属板块
434 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
435 | * 请求协议ID: 3207_
436 | * :red-strengthen:`30` 秒内请求最多 :red-strengthen:`10` 次
437 | * 传入股票最多 :red-strengthen:`200` 个
438 | * 仅支持正股和指数
439 |
440 | .. _get-holding-change-list-limit:
441 |
442 | 获取持股变化列表
443 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
444 | * 请求协议ID: 3208_
445 | * :red-strengthen:`30` 秒内请求最多 :red-strengthen:`10` 次
446 | * 最多返回前 :red-strengthen:`100` 大股东的变化
447 | * 仅支持美股
448 |
449 | .. _get-option-chain-limit:
450 |
451 | 获取期权链
452 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
453 | * 请求协议ID: 3209_
454 | * :red-strengthen:`30` 秒内请求最多 :red-strengthen:`10` 次
455 | * 传入时间跨度最多 :red-strengthen:`30` 天
456 |
457 | .. _get-warrant-limit:
458 |
459 | 获取窝轮
460 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
461 | * 请求协议ID: 3210_
462 | * :red-strengthen:`30` 秒内请求最多 :red-strengthen:`60` 次
463 | * 每次请求的数据个数最多 :red-strengthen:`200` 个
464 | * 仅支持港股
465 |
466 | .. _get-capital-flow-limit:
467 |
468 | 获取资金流向
469 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
470 | * 请求协议ID: 3211_
471 | * :red-strengthen:`30` 秒内请求最多 :red-strengthen:`30` 次
472 | * 仅支持正股、窝轮和基金
473 |
474 | .. _get-capital-distribution-limit:
475 |
476 | 获取资金分布
477 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
478 | * 请求协议ID: 3212_
479 | * :red-strengthen:`30` 秒内请求最多 :red-strengthen:`30` 次
480 | * 仅支持正股、窝轮和基金
481 |
482 | .. _get-user-security-limit:
483 |
484 | 获取自选股分组下的股票
485 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
486 | * 请求协议ID: 3213_
487 | * :red-strengthen:`30` 秒内请求最多 :red-strengthen:`10` 次
488 | * 不支持持仓(Positions),基金宝(Mutual Fund),外汇(Forex)的查询。
489 |
490 | .. _modify-user-security-limit:
491 |
492 | 修改自选股分组下的股票
493 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
494 | * 请求协议ID: 3214_
495 | * :red-strengthen:`30` 秒内请求最多 :red-strengthen:`10` 次
496 | * 仅支持自定义分组
497 | * 自选股的数量是有上限的。
498 | * 如果有同名的分组,会返回自定义分组里面排序第一个分组的信息。
499 |
500 | .. _get-stock-filter-limit:
501 |
502 | 获取条件选股
503 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
504 | * 请求协议ID: 3215_
505 | * :red-strengthen:`30` 秒内请求最多 :red-strengthen:`10` 次
506 | * 每次请求的数据个数最多 :red-strengthen:`200` 个
507 | * 建议筛选条件不超过 :red-strengthen:`250` 个,否则可能会出现“业务处理超时没返回”。
508 | * 累积属性的同一筛选条件数量最多 :red-strengthen:`10` 个
509 | * 自定义指标属性的同一类筛选条件数量最多 :red-strengthen:`10` 个
510 |
511 | .. _get-ipo-list-limit:
512 |
513 | 获取IPO列表
514 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
515 | * 请求协议ID: 3217_
516 | * :red-strengthen:`30` 秒内请求最多 :red-strengthen:`10` 次
517 |
518 | .. _get-future-info-limit:
519 |
520 | 获取期货合约资料
521 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
522 | * 请求协议ID: 3218_
523 | * :red-strengthen:`30` 秒内请求最多 :red-strengthen:`30` 次
524 | * 传入股票最多 :red-strengthen:`200` 个
525 |
526 | .. _request-trading-day-limit:
527 |
528 | 在线拉取市场交易日
529 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
530 | * 请求协议ID: 3219_
531 | * :red-strengthen:`30` 秒内请求最多 :red-strengthen:`30` 次
532 |
533 | .. _set-price-reminder-limit:
534 |
535 | 设置到价提醒
536 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
537 | * 请求协议ID: 3220_
538 | * :red-strengthen:`30` 秒内请求最多 :red-strengthen:`60` 次
539 |
540 | .. _get-price-reminder-limit:
541 |
542 | 获取到价提醒列表
543 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
544 | * 请求协议ID: 3221_
545 | * :red-strengthen:`30` 秒内请求最多 :red-strengthen:`10` 次
546 |
547 | .. _get-user-security-group-limit:
548 |
549 | 获取自选股分组列表
550 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
551 | * 请求协议ID: 3222_
552 | * :red-strengthen:`30` 秒内请求最多 :red-strengthen:`10` 次
553 |
554 | .. _get-market-state-limit:
555 |
556 | 获取指定品种的市场状态的限制
557 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
558 | * 请求协议ID: 3223_
559 | * :red-strengthen:`30` 秒内请求最多 :red-strengthen:`10` 次
560 | * 每次请求的数据个数最多 :red-strengthen:`400` 个
561 |
562 | 协议请求流程
563 | -------------
564 | * 建立连接
565 | * 初始化连接
566 | * 请求数据或接收推送数据
567 | * 定时发送 KeepAlive_ 保持连接
568 |
569 | .. image:: ../_static/proto.png
570 |
571 | --------------
572 |
573 | 协议设计
574 | ---------
575 | 协议数据包括协议头以及协议体,协议头固定字段,协议体根据具体协议决定。
576 |
577 | 协议头结构
578 | ~~~~~~~~~~~~~~~
579 |
580 | .. code-block:: bash
581 |
582 | struct APIProtoHeader
583 | {
584 | u8_t szHeaderFlag[2];
585 | u32_t nProtoID;
586 | u8_t nProtoFmtType;
587 | u8_t nProtoVer;
588 | u32_t nSerialNo;
589 | u32_t nBodyLen;
590 | u8_t arrBodySHA1[20];
591 | u8_t arrReserved[8];
592 | };
593 |
594 |
595 | ============== ==================================================================
596 | 字段 说明
597 | ============== ==================================================================
598 | szHeaderFlag 包头起始标志,固定为“FT”
599 | nProtoID 协议ID
600 | nProtoFmtType 协议格式类型,0为Protobuf格式,1为Json格式
601 | nProtoVer 协议版本,用于迭代兼容, 目前填0
602 | nSerialNo 包序列号,用于对应请求包和回包, 要求递增
603 | nBodyLen 包体长度
604 | arrBodySHA1 包体原始数据(解密后)的SHA1哈希值
605 | arrReserved 保留8字节扩展
606 | ============== ==================================================================
607 |
608 | .. note::
609 |
610 | * u8_t表示8位无符号整数,u32_t表示32位无符号整数
611 | * FutuOpenD内部处理使用Protobuf,因此协议格式建议使用Protobuf,减少Json转换开销
612 | * nProtoFmtType字段指定了包体的数据类型,回包会回对应类型的数据;推送协议数据类型由FutuOpenD配置文件指定
613 | * **arrBodySHA1用于校验请求数据在网络传输前后的一致性,必须正确填入**
614 | * **协议头的二进制流使用的是小端字节序,即一般不需要使用ntohl等相关函数转换数据**
615 |
616 | ---------------------------------------------------
617 |
618 | 协议体结构
619 | ~~~~~~~~~~~
620 |
621 | **Protobuf协议请求包体结构**
622 |
623 | .. code-block:: bash
624 |
625 | message C2S
626 | {
627 | required int64 req = 1;
628 | }
629 |
630 | message Request
631 | {
632 | required C2S c2s = 1;
633 | }
634 |
635 | **Protobuf协议回应包体结构**
636 |
637 | .. code-block:: bash
638 |
639 | message S2C
640 | {
641 | required int64 data = 1;
642 | }
643 |
644 | message Response
645 | {
646 | required int32 retType = 1 [default = -400]; //RetType,返回结果
647 | optional string retMsg = 2;
648 | optional int32 errCode = 3;
649 | optional S2C s2c = 4;
650 | }
651 |
652 | **Json协议请求包体结构**
653 |
654 | .. code-block:: bash
655 |
656 | {
657 | "c2s":
658 | {
659 | "req": 0
660 | }
661 | }
662 |
663 | **Json协议回应包体结构**
664 |
665 | .. code-block:: bash
666 |
667 | {
668 | "retType" : 0
669 | "retMsg" : ""
670 | "errCode" : 0
671 | "s2c":
672 | {
673 | "data": 0
674 | }
675 | }
676 |
677 | ---------
678 |
679 | ============== ==================================================================
680 | 字段 说明
681 | ============== ==================================================================
682 | c2s 请求参数结构
683 | req 请求参数,实际根据协议定义
684 | retType 请求结果
685 | retMsg 若请求失败,说明失败原因
686 | errCode 若请求失败对应错误码
687 | s2c 回应数据结构,部分协议不返回数据则无该字段
688 | data 回应数据,实际根据协议定义
689 | ============== ==================================================================
690 |
691 | .. note::
692 |
693 | * 包体格式类型请求包由协议头 nProtoFmtType_ 指定, FutuOPenD主动推送格式参见 `FutuOpenD配置 `_ 约定的 “push_proto_type“ 配置项
694 | * 原始协议文件格式是以Protobuf格式定义,若需要json格式传输,建议使用protobuf3的接口直接转换成json
695 | * 枚举值字段定义使用有符号整形,注释指明对应枚举,枚举一般定义于Common.proto,Qot_Common.proto,Trd_Common.proto文件中
696 | * **协议中价格、百分比等数据用浮点类型来传输,直接使用会有精度问题,需要根据精度(如协议中未指明,默认小数点后三位)做四舍五入之后再使用**
697 |
698 | ---------------------------------------------------
699 |
700 | 加密通信流程
701 | ~~~~~~~~~~~~~~~
702 |
703 | * 若FutuOpenD配置了加密, InitConnect_ 初始化连接协议必须使用RSA公钥加密,后续其他协议使用 InitConnect_ 返回的随机密钥进行AES加密通信。
704 | * FutuOpenD的加密流程借鉴了SSL协议,但考虑到一般是本地部署服务和应用,简化了相关流程,FutuOpenD与接入Client共用了同一个RSA 私钥文件,请妥善保存和分发私钥文件。
705 | * 可到"http://web.chacuo.net/netrsakeypair"这个网址在线生成随机RSA密钥对,密钥格式必须为PCKS#1,密钥长度512,1024都可以,不要设置密码,将生成的私钥复制保存到文件中,然后将私钥文件路径配置到 `FutuOpenD配置 `_ 约定的 “rsa_private_key”配置项中
706 | *
707 | * **强烈建议有实盘交易的用户配置加密,避免账户和交易信息泄露**
708 |
709 | .. image:: ../_static/encrypt.png
710 |
711 |
712 | ---------------------------------------------------
713 |
714 | RSA加解密
715 | ~~~~~~~~~~~~~~~~~~~
716 | * `FutuOpenD配置 `_ 约定"rsa_private_key"为私钥文件路径
717 | * FutuOpenD 与接入客户端共用相同的私钥文件
718 | * RSA加解密仅用于 InitConnect_ 请求,用于安全获取其它请求协议的对称加密Key
719 | * FutuOpenD的RSA密钥为1024位, 填充方式PKCS1, 公钥加密,私钥解密,公钥可通过私钥生成
720 | * Python API 参考实现: `RsaCrypt `_ 类的encrypt / decrypt 接口
721 |
722 |
723 | **发送数据加密**
724 |
725 | * RSA加密规则:若密钥位数是key_size, 单次加密串的最大长度为 (key_size)/8 - 11, 目前位数1024, 一次加密长度可定为100
726 |
727 | * 将明文数据分成一个或数个最长100字节的小段进行加密,拼接分段加密数据即为最终的Body加密数据
728 |
729 | **接收数据解密**
730 |
731 | * RSA解密同样遵循分段规则,对于1024位密钥, 每小段待解密数据长度为128字节
732 |
733 | * 将密文数据分成一个或数个128字节长的小段进行解密,拼接分段解密数据即为最终的Body解密数据
734 |
735 |
736 | -------------------------------------------------------------
737 |
738 |
739 | AES加解密
740 | ~~~~~~~~~~~~~~~~~~~
741 | * 加密key由 InitConnect_ 协议返回
742 | * 使用的是AES的ecb加密模式。
743 | * Python API 参考实现: `FutuConnMng `_ 类的encrypt_conn_data / decrypt_conn_data 接口
744 |
745 | **发送数据加密**
746 |
747 | * AES加密要求源数据长度必须是16的整数倍, 故需补‘\0'对齐后再加密,记录mod_len为源数据长度与16取模值
748 |
749 | * 因加密前有可能对源数据作修改, 故需在加密后的数据尾再增加一个16字节的填充数据块,其最后一个字节赋值mod_len, 其余字节赋值'\0', 将加密数据和额外的填充数据块拼接作为最终要发送协议的body数据
750 |
751 | **接收数据解密**
752 |
753 | * 协议body数据, 先将最后一个字节取出,记为mod_len, 然后将body截掉尾部16字节填充数据块后再解密(与加密填充额外数据块逻辑对应)
754 |
755 | * mod_len 为0时,上述解密后的数据即为协议返回的body数据, 否则需截掉尾部(16 - mod_len)长度的用于填充对齐的数据
756 |
757 | .. image:: ../_static/AES.png
758 |
--------------------------------------------------------------------------------