OpenCTP TTS 6.3.15 的 Python 原生绑定与 AlphaPilot 柜台仿真插件。仓库同时包含
底层 CTP 兼容 API、交易/回放行情 gateway、插件发现入口、离线测试和真实仿真 UAT
工具;安装一个 wheel 即可让 AlphaPilot 发现 tts 与 tts_7x24 provider。
TTS 是有服务端资金、持仓、委托和成交状态的仿真柜台,不是实盘券商通道。 AlphaPilot 当前只允许 A 股股票和基金路由;期货、期权、债券会 fail-closed。
| 路径 | 作用 |
|---|---|
alphapilot_ttsapi/ |
TTS 6.3.15 CTP 兼容 Python API、头文件和三平台运行库 |
alphapilot_broker_tts/ |
AlphaPilot gateway、字段转换和插件声明 |
native/ |
Meson/pybind11 原生绑定与生成代码 |
scripts/build_tts_wheels.py |
构建平台 wheel、校验 Linux RPATH 和输出 SHA256 |
scripts/tts_uat_local.py |
不接收命令行凭据的真实仿真 UAT 工具 |
tests/ |
SDK 哈希、gateway、映射、插件及 AlphaPilot 集成测试 |
| Provider | 通道 | 用途 | 自动路由 |
|---|---|---|---|
tts |
trade-only | OpenCTP TTS 服务端柜台仿真 | 仅搭配 realtime 行情时允许 |
tts_7x24 |
quote-only | 7x24 历史行情循环回放 | 始终禁止,仅观察、录制和 Dry-run |
TTS 仿真交易环境本身不提供可用于策略自动交易的实盘行情。可以在 AlphaPilot 中独立 选择已经安装的 XTP/EMT 实时行情 provider。
- Python 3.10+
- AlphaPilot
0.1.dev0系列,并包含RunMode.SIMULATION支持 - Linux x86_64、Windows x64 或 macOS arm64
- 从源码构建需要 C++17、Meson、meson-python 和 pybind11
- OpenCTP 模拟账号;实时策略还需要独立的实时行情 provider
仓库不支持 Windows x86。不同操作系统必须在相应原生机器上构建 wheel。
先安装或以 editable 模式加载 AlphaPilot:
python -m pip install -e /path/to/AlphaPilot然后从本仓库安装:
git clone https://github.com/ai-yang/alphapilot_tts.git
cd alphapilot_tts
python -m pip install .开发环境:
python -m pip install -e /path/to/AlphaPilot
python -m pip install -e . --no-build-isolation
python -m pip install pytest
python -m pytest -q安装完成后确认插件发现:
python -c "from alphapilot_ttsapi.api import MdApi, TdApi; print(MdApi().getApiVersion(), TdApi().getApiVersion())"
alphapilot live_pluginsalphapilot live_plugins 应显示交易 provider tts 和回放行情 provider tts_7x24。
卸载 alphapilot-tts 后,重启 Portal/daemon 即可移除这两个 provider。
python -m pip install build patchelf
python scripts/build_tts_wheels.py --output distLinux 构建脚本会验证扩展模块只使用 $ORIGIN 查找随 wheel 分发的 TTS 动态库,并在
输出中打印 wheel 的 SHA256。Windows x64 和 macOS arm64 需要在对应系统上执行同一命令。
所有凭据只通过环境变量或 AlphaPilot 的运行时配置注入,禁止写入仓库:
export ALPHAPILOT_LIVE_TTS_USER_ID='<simulation-user>'
export ALPHAPILOT_LIVE_TTS_PASSWORD='<simulation-password>'
export ALPHAPILOT_LIVE_TTS_BROKER_ID=''
export ALPHAPILOT_LIVE_TTS_TRADE_FRONT='tcp://host:port'
export ALPHAPILOT_LIVE_TTS_APP_ID=''
export ALPHAPILOT_LIVE_TTS_AUTH_CODE=''
export ALPHAPILOT_LIVE_TTS_T0_FUNDS=''7x24 回放行情使用独立变量:
export ALPHAPILOT_LIVE_TTS_7X24_USER_ID='<simulation-user>'
export ALPHAPILOT_LIVE_TTS_7X24_PASSWORD='<simulation-password>'
export ALPHAPILOT_LIVE_TTS_7X24_BROKER_ID=''
export ALPHAPILOT_LIVE_TTS_7X24_QUOTE_FRONT='tcp://host:port'请从 OpenCTP 官方文档获取当前前置地址和账号申请方式,不要把账号、密码、私有行情 地址或 UAT 产物提交到 Git。
- 启动时依次完成认证、登录、结算确认、合约、资金、持仓、委托和成交查询。
- 服务端快照与本地状态无差异后才允许策略路由。
- 使用 RESTART 私有流恢复当日委托和成交,并对回报去重。
- 股票
Offset.NONE仅在 SDK 边界转换为买入开仓/卖出平仓。 - 默认执行 A 股 T+1;只有显式配置的基金代码允许 T+0。
- 非实时行情、未知合约、期货、期权和债券统一拒绝路由。
- 同一个外部账户只允许一个活动自动策略写入者。
UAT 工具不会从命令行接收账号或密码,只读取运行环境:
python scripts/tts_uat_local.py preflight --quote-provider xtp
python scripts/tts_uat_local.py start --quote-provider xtp涉及委托、撤单或成交的命令仍需要工具要求的显式确认。隔夜持仓必须至少跨两个实际 交易日验证,不能只凭接口文档推断服务端重置策略。
AlphaPilot 绑定和插件代码使用 MIT License。OpenCTP 仓库的 BSD-3-Clause 许可证收录在 LICENSES/OpenCTP-BSD-3-Clause.txt, vn.py MIT 许可证收录在 LICENSES/VnPy-MIT.txt。
TTS SDK 头文件和动态库不由 AlphaPilot 重新授权,其来源、版本和 SHA256 见 SDK_MANIFEST.json,详细声明见 THIRD_PARTY_NOTICES.md。使用者仍需遵守 OpenCTP、交易所、 行情源以及所在地区的适用条款。