前言
新接触的一个项目,需要获取期货的实时报价信息。结合数据来源的权威性和时效性,决定采用 CTP API。CTP API 提供的是 C++ 库,并给出了 Python 实现,因为项目是使用 Java 写的,所以需要自己来编译 C++ 库完成 Java 实现。
一、准备工作
需要安装 CTP API SDK、JDK、SWIG 和 Visual Studio 4 个工具。
1. 下载 CTP API SDK
访问 http://www.openctp.cn/CTPAPI.html,网站提供了 CTP API(期货合约)和 CTP 股票期权 API(股票期权合约)两种接口库,按需选择对应库文件下载。这里下载的是 CTP API ctpapi-6.7.11.zip。
解压 ctpapi-6.7.11.zip 文件,包含以下内容:
其中 v6.7.11_xxx_linux64 是 linux 环境相关文件,v6.7.11_xxx_winApi 是 windows 环境相关文件。因为是在 Win11 环境进行编译和开发,所以选择 winApi 文件夹下的文件。要注意的是,windows 环境的文件区分 32 位和 64 位,目前大多数 windows 操作系统(win10、win11)都是 64 位的,所以要选择 64 位文件,文件名带'64'的是 64 位文件目录。
最终我们需要的文件包括:
- ThostFtdcMdApi.h:行情 API 头文件
- ThostFtdcTraderApi.h:交易 API 头文件
- ThostFtdcUserApiDataType.h:数据类型定义头文件
- ThostFtdcUserApiStruct.h:数据接口定义头文件
- thostmduserapi_se.dll:行情动态链接库
- thostmduserapi_se.lib:行情导入库
- thosttraderapi_se.dll:交易动态链接库
- thosttraderapi_se.lib:交易导入库
2. 下载 JDK
访问 https://www.oracle.com/cn/java/technologies/downloads/ 下载 JDK,根据自己的需求选择对应版本,尽量选择 JDK 8+。安装步骤参考网上其他教程。我安装的目录是 D:\Program Files\Java\jdk-8,记住这个路径后面会用到。
3. 下载编译工具 SWIG
访问 https://sourceforge.net/projects/swig/files/,下载 swigwin,这里以 swigwin-4.4.0 为例,下载 zip 包后解压到指定目录,例如 D:\develop\swigwin-4.4.0,然后配置环境变量(Path)。
打开终端,输入 swig -version,看到版本信息说明安装配置成功。
4. 安装 Visual Studio
访问 https://visualstudio.microsoft.com/zh-hans/downloads/,下载 Visual Studio,我下载的是 Visual Studio 2022 Community。注意,选择 Visual Studio,而不是 Visual Studio Code!!!安装时勾选 '桌面开发用 C++'(确保包含 MSVC 编译器、Windows SDK),后续安装和配置步骤可参考网上相关教程。
二、编译步骤
第一步:文件目录结构搭建
新建一个文件夹并重新命名,目录和文件夹名称尽量不要有空格和中文,比如我创建的文件夹名是 CTP-Java-SDK,路径是 D:\develop\CTP-Java-SDK。在该目录下再新建 ctp_lib 目录,将 ctpapi-6.7.11.zip 中解压出来的 8 个头文件和库文件全部复制到此目录中;在 ctp_lib 同级目录下新建 swig 目录,从 swig 的安装目录 下复制 various.i 文件到此目录中,再手动创建一个 ctp.i 的空文件(swig 接口文件,后面会用到);在 ctp_lib 同级目录下新建 (存放 java 文件)、wrap(存放 C++ 包装类文件)、vs_project(vs2022 dll 项目目录)和 final(存放最终可用的文件)几个空文件夹。最后的文件目录结构如下:


