native/ctp_bridge/README.md
ctp_bridge_native 是 trader 的本地 C++ 扩展,用于通过 pybind11 直连 CTP Thost API。
CMakeLists.txt:构建入口src/py_module.cpp:CtpClient 导出与回调桥接api/win、api/linux:Thost 头文件与库在 native/ctp_bridge 目录下执行 CMake 构建。
当前构建设置:
C++23/std:c++latest 与 /utf-8cd native/ctp_bridge
cmake -S . -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config Release
cd native/ctp_bridge
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j
除了头文件,还需要把 CTP 动态库放到对应平台目录:
native/ctp_bridge/api/linux/
thosttraderapi_se.sothostmduserapi_se.soDataCollect.so 或 LinuxDataCollect.sonative/ctp_bridge/api/win/
.dll,并与 .lib 配套)注意:前两个交易/行情库用于编译与链接 Python 扩展模块;
DataCollect库为行情链路运行时自动调用依赖,也必须放在对应目录。
编译成功后,通常模块输出在:
native/ctp_bridge/build在项目根目录 config.yaml 的 ctp_native 章节确保:
gateway = pybindmodule = ctp_bridge_nativemodule_path = <构建输出目录>(例如 native/ctp_bridge/build)回到项目根目录执行:
python test/test_ctp.pyLinux 建议先做一次依赖检查(确认模块已正确链接 Thost 动态库):
ldd ctp_bridge_native.cpython-314-x86_64-linux-gnu.so
输出中应能看到:
thosttraderapi_se.so => .../native/ctp_bridge/api/linux/thosttraderapi_se.sothostmduserapi_se.so => .../native/ctp_bridge/api/linux/thostmduserapi_se.so按当前配置方案,只需在 config.yaml 里设置好 ctp_native.module_path,无需把扩展模块复制到项目根目录。
若需要企业微信日志推送,请在 config.yaml 的 weixin 章节补齐 CorpID、Secret(以及可选 AgentID、ToUser)。
当前 trader 已内置该推送能力,无需再单独运行 flower。
可选环境变量:
CTP_TEST_WARMUP_SECONDS:登录预热秒数CTP_TEST_INSTRUMENT:优先测试合约(若无效会自动回退)ModuleNotFoundError: No module named 'ctp_bridge_native'
ctp_native.module_path 未指向构建目录。config.yaml 中 ctp_native.module_path 是否正确。ImportError: undefined symbol: CThostFtdc...CreateFtdc...
api/linux 下两个 thost*.so 文件存在,重新执行 CMake 构建,并用 ldd 验证依赖是否解析成功。