OpenCTP 是一个提供 7x24 小时模拟交易环境的CTP兼容接口,可作为 SimNow 的稳定替代方案。
在启动 GUI 之前,先测试连接是否正常:
cd /e/work/quant/quantPlus
uv run python tests/test_openctp_connection.py预期输出:
============================================================
OpenCTP TTS 网关连接测试
============================================================
[OK] 加载配置: 用户名=your_username, 交易服务器=tcp://trading.openctp.cn:30001
[步骤 1] 创建事件引擎和主引擎...
[OK] 引擎创建成功
[步骤 2] 添加 TTS 网关...
[OK] TTS 网关添加成功
[步骤 3] 连接到 OpenCTP TTS 服务器...
[日志] 交易前置服务器连接成功
[日志] 行情服务器连接成功
[日志] 交易前置服务器登录成功
[日志] 投资者信息确认成功
[日志] 行情服务器登录成功
[OK] 连接成功!已接收合约信息(耗时 1 秒)
[OK] 共获取 5000+ 个合约
使用 TTS 网关启动交易界面:
# 使用 OpenCTP TTS (7x24 模拟环境)
uv run python -m qp.runtime.trader_app --gateway tts
# 或继续使用 CTP (SimNow)
uv run python -m qp.runtime.trader_app --gateway ctp- 在 GUI 中点击 系统 → 连接TTS
- 等待状态栏显示 "已连接"
- 可以开始查看合约、订阅行情
.vntrader/connect_tts.json
{
"用户名": "your_username",
"密码": "your_password",
"经纪商代码": "9999",
"交易服务器": "tcp://trading.openctp.cn:30001",
"行情服务器": "tcp://trading.openctp.cn:30011",
"产品名称": "",
"授权编码": ""
}重要提示:以上配置中的 your_username 和 your_password 是占位符,请替换为您自己申请的账号。
如何申请:
- 访问 OpenCTP GitHub
- 关注 OpenCTP 微信公众号,自动获取免费测试账号
- 账号类型:7x24 模拟账号,长期有效
| 品种类别 | 示例合约 | 说明 |
|---|---|---|
| 商品期货 | p2505, rb2505, i2505 | 棕榈油、螺纹钢、铁矿石等 |
| 金融期货 | IF2601, IC2601, IH2601 | 沪深300、中证500、上证50 |
| 期权 | IO2601-C-4000 | 股指期权 |
| A股 | 600000.SH, 000001.SZ | 股票模拟交易 |
- 交易时间: 全天候,不受实盘交易时段限制
- 行情数据: 历史数据轮播,持续更新
- 账号有效期: 长期有效(建议定期确认)
- 与 vnpy_ctp 接口完全兼容
- 无需修改策略代码
- 可无缝切换 CTP/TTS
# 使用 OpenCTP 进行策略测试
uv run python -m qp.runtime.trader_app --gateway tts --profile all
# 在 GUI 中:
# 1. 连接 TTS
# 2. 功能 → CTA策略
# 3. 加载策略并测试# 在任何时间都可以连接获取数据
# 不受 SimNow 停服影响
from vnpy_tts import TtsGateway
main_engine.add_gateway(TtsGateway)
main_engine.connect(tts_config, "TTS")# 适合课堂演示、培训使用
# 不需要等待特定交易时段
uv run python -m qp.runtime.trader_app --gateway tts| 特性 | CTP (SimNow) | TTS (OpenCTP) |
|---|---|---|
| 服务时间 | 交易时段 | 7x24 小时 |
| 稳定性 | 经常停服维护 | 持续可用 |
| 数据类型 | 实时行情 | 历史轮播行情 |
| 品种支持 | 期货 + 期权 | 期货 + 期权 + 股票 |
| 账号申请 | 实名注册 | GitHub 申请 |
# 方法 1:命令行参数
uv run python -m qp.runtime.trader_app --gateway tts # 使用 TTS
uv run python -m qp.runtime.trader_app --gateway ctp # 使用 CTP
# 方法 2:在 GUI 中手动选择
# 系统 → 连接TTS 或 系统 → 连接CTP重要:同一时间只能连接一个网关(CTP 和 TTS 的 DLL 同名,会冲突)
原因:
- 同时运行了其他使用 CTP DLL 的程序
- GUI 中同时勾选了 CTP 和 TTS
解决:
- 关闭其他 CTP 程序
- 只勾选 TTS 网关
- 重启 QuantPlus
原因:
- 网络连接问题
- 服务器地址错误
- 用户名密码错误
解决:
- 检查配置文件
.vntrader/connect_tts.json - 确认用户名为
your_username,密码为your_password - 测试网络连接:
ping trading.openctp.cn
说明:
- OpenCTP TTS 使用历史数据轮播
- 不是实时行情,而是模拟行情
- 适合策略测试,不适合实盘决策
| 项目 | SimNow | OpenCTP TTS |
|---|---|---|
| 行情类型 | 实时 | 历史轮播 |
| 可用时间 | 交易时段 | 7x24 小时 |
| 停服频率 | 频繁 | 很少 |
| 品种覆盖 | 期货 | 期货+股票+期权 |
除了默认的 7x24 环境,还可以使用其他环境:
{
"用户名": "your_username",
"密码": "your_password",
"经纪商代码": "9999",
"交易服务器": "tcp://122.51.136.165:20002",
"行情服务器": "tcp://122.51.136.165:20004",
"产品名称": "",
"授权编码": ""
}可用环境:
| 环境 | 交易前置 | 行情前置 | 特点 |
|---|---|---|---|
| 7x24 | tcp://122.51.136.165:20002 | tcp://122.51.136.165:20004 | 轮播行情 |
| 仿真 | tcp://121.36.146.182:20002 | tcp://121.36.146.182:20004 | 交易时段 |
| 官方 | tcp://trading.openctp.cn:30001 | tcp://trading.openctp.cn:30011 | 推荐使用 |
- OpenCTP GitHub - 源码和文档
- OpenCTP 官网 - 服务器地址和公告
- VeighNa TTS 接口 - 官方网关
- VeighNa 社区 - 社区讨论
如遇到问题,请提供以下信息:
- 错误日志:
.vntrader/log/目录下的最新日志 - 配置文件:
.vntrader/connect_tts.json(隐藏密码) - 测试输出:
uv run python tests/test_openctp_connection.py - 环境信息:
- Python 版本:
python --version - vnpy_tts 版本:
pip show vnpy-tts - 操作系统:Windows/Linux/Mac
- Python 版本:
- 测试连接:运行测试脚本确认连接正常
- 查看合约:在 GUI 中浏览可用合约
- 订阅行情:测试行情订阅功能
- 运行策略:使用 CTA策略 模块测试策略
- 数据录制:使用 DataRecorder 录制行情数据
测试脚本位置:tests/test_openctp_connection.py
测试内容:
- ✅ 加载配置文件
- ✅ 创建主引擎
- ✅ 添加 TTS 网关
- ✅ 连接服务器
- ✅ 登录验证
- ✅ 获取合约信息
- ✅ 订阅行情数据
- ✅ 断开连接
运行方式:
uv run python tests/test_openctp_connection.py典型耗时:
- 连接建立:1-3 秒
- 合约下载:2-5 秒
- 行情订阅:立即
- 总计:约 10 秒
文档更新时间:2026-01-17 版本:1.0.0