├── 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 | --------------------------------------------------------------------------------