前言¶
做国内期货量化或实盘辅助时,常见路径是单独跑一套 Python 脚本或 vnpy 工程,再把行情、下单逻辑和对话式 Agent 拆开维护。CTP(Comprehensive Transaction Platform)是期货公司普遍提供的接口,SimNow 仿真与实盘穿透式环境的前置地址、认证字段又多,容易在配置和联调上耗时间。
下面介绍 SkillHub 上的社区 Skill「CTP直连数据」(坐标 @user_a459bc71/ctp-connector,当前版本 1.0.7)。它把行情订阅、交易查询与下单、数据落盘与推送、回测数据准备等能力写进标准 SKILL.md 与配套脚本,便于在 Cursor 等支持 Skills 的 Agent 里按文档驱动开发与排错。
这是什么¶
「CTP直连数据」是由 SkillHub 用户 user_a459bc71 发布的 community / professional 类 Skill。官方页面:SkillHub - CTP直连数据。
Skill 自述定位为:CTP 直连数据能力,支持行情订阅、交易下单、持仓与资金查询,并兼容实盘穿透式环境与 SimNow 仿真环境。SkillHub 元数据标注 requires_api_key=true,实际使用中需要 SimNow 或期货公司提供的账户、认证码等凭证(建议用环境变量,勿写入仓库)。
截至 SkillHub 页面与抓取数据:评分 100000,下载约 897 次(安装计数以商店为准)。
核心功能¶
以下能力均来自 Skill 包内 SKILL.md 与模块说明,可按需裁剪使用。
- 行情:Tick、深度行情、K 线订阅;
CTPMarketData提供连接、登录、订阅/退订、run()阻塞运行及on_tick等回调。 - 交易:
CTPTrader支持下单、撤单,以及账户、持仓、委托、成交查询。 - 环境:
config/ctp_config.yaml中通过environment: simnow | production切换 SimNow 与实盘穿透式配置块。 - 数据输出:本地 CSV/JSON/Parquet(配置项)、可选 SQLite/MySQL/MongoDB、
storage模块;实时推送可选 ZeroMQ、WebSocket、Redis(streaming模块)。 - 回测准备:
backtest模块提供行情录制与 CSV 回放示例。 - 工程化:v1.0.6+ 文档提到
ConfigValidator、HealthChecker;v1.0.7 强调日志脱敏、依赖版本固定与tests/单元测试。
安装与启用¶
1. 通过 SkillHub 安装 Skill¶
先确认本机已安装 SkillHub CLI(参见 SkillHub 安装说明)。安装 Skill 时必须用 --dir 指向当前 Agent 的 skills 目录,否则默认落在 ./skills/ 可能不会被识别。
在 Cursor 中,常用路径为 ~/.cursor/skills/:
skillhub install @user_a459bc71/ctp-connector --dir ~/.cursor/skills/
官方页面亦支持将下列提示交给 Agent,让其按安装文档执行:
请根据 https://skillhub.cn/install/skillhub.md,安装 `@user_a459bc71/ctp-connector`。
安装完成后重启或刷新 Agent,使其加载新 Skill。
2. 安装 Python 依赖¶
Skill 目录内提供分层依赖文件。最小核心安装:
cd ~/.cursor/skills/@user_a459bc71/ctp-connector
pip install -r requirements-core.txt
requirements-core.txt 固定版本包括:openctp==0.1.0、pandas==2.2.3、numpy==2.2.6、pyyaml==6.0.2、python-dotenv==1.1.0。完整功能可执行 pip install -r requirements.txt;存储与推送等可选能力可按文档追加 sqlalchemy、pymongo、pyzmq 等。
SKILL.md 另列示例:pip install openctp 及 pandas sqlalchemy pymongo redis pyzmq websocket-client;与 requirements-*.txt 并用时,以 Skill 包内锁定文件为准更利于复现。
3. 凭证与环境变量¶
Skill 标注需要 API Key 类凭证。推荐复制包内 .env.example 为 .env,填写 SimNow 或实盘相关变量(如 SIMNOW_USER_ID、SIMNOW_PASSWORD、SIMNOW_AUTH_CODE 等),并确保 .env 不进入版本控制。配置文件中可用 ${ENV_VAR} 引用,环境变量优先于同名配置项。
典型用法¶
配置文件¶
在工程内创建 config/ctp_config.yaml。下面节选 SimNow 与输出段(完整字段见 Skill 文档):
environment: simnow
simnow:
front_address: "tcp://180.168.146.187:10131"
trade_front: "tcp://180.168.146.187:10130"
broker_id: "9999"
user_id: "${SIMNOW_USER_ID}"
password: "${SIMNOW_PASSWORD}"
auth_code: "${SIMNOW_AUTH_CODE}"
app_id: "simnow_client_test"
output:
file:
enabled: true
path: "./data"
format: "csv"
subscriptions:
- "cu2506"
- "al2506"
订阅行情¶
from ctp_connector import CTPMarketData
md = CTPMarketData(config_path="config/ctp_config.yaml")
md.connect()
md.login()
md.subscribe(["cu2506", "al2506", "ni2506"])
md.run()
查询与下单¶
from ctp_connector import CTPTrader
trader = CTPTrader(config_path="config/ctp_config.yaml")
trader.connect()
trader.login()
account = trader.query_account()
print(f"可用资金: {account.available}")
order = trader.insert_order(
instrument="cu2506",
direction="buy",
offset="open",
price=70000,
volume=1,
order_type="limit",
)
trader.cancel_order(order.order_id)
运行前请将 Python 路径指向 Skill 提供的 ctp_connector 包布局(以你安装后的目录与 scripts/__init__.py 导出为准);在 Agent 会话中可直接引用 Skill 内示例让模型生成完整工程结构。
适用场景与注意¶
适合谁
- 需要在 Agent 对话中编写、解释 CTP 行情/交易代码的期货开发者。
- 先在 SimNow 验证订阅与下单,再切换
production配置对接期货公司穿透式环境。 - 希望把 Tick 落盘、入库或经 ZeroMQ/WebSocket 推给下游策略服务。
限制与注意
- 合规与风险:Skill 免责声明写明仅供学习研究,不构成投资建议;实盘前需自行评估风险并完成期货公司穿透式认证。
- 网络与时间:SimNow 前置地址与交易时段以 SimNow 官网 及 Skill 文档中的前置表为准;非交易时段可能无行情。
- 合约代码:订阅需区分大小写(如
CF509);无数据时按文档检查登录状态与交易时间。 - 依赖与平台:核心依赖
openctp与 CTP 原生接口相关,部署环境需满足其运行要求;可选模块失败时应回退到requirements-core.txt最小集排查。 - 敏感信息:勿在
SKILL.md或配置中硬编码认证码;v1.0.7 已强调移除硬编码示例,仍建议只用环境变量。
结尾¶
「CTP直连数据」把 CTP 行情、交易、存储推送与回测数据准备收敛到一份可安装的 Agent Skill,适合作为 SimNow 联调与实盘穿透式对接的文档化起点。安装与版本信息以 SkillHub 为准:
- 商店页:https://www.skillhub.cn/skills/user_a459bc71/ctp-connector
- API 索引:https://api.skillhub.cn/user_a459bc71/ctp-connector