CTP直连数据:在 Agent 中对接期货行情与交易

前言

做国内期货量化或实盘辅助时,常见路径是单独跑一套 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 与模块说明,可按需裁剪使用。

  1. 行情:Tick、深度行情、K 线订阅;CTPMarketData 提供连接、登录、订阅/退订、run() 阻塞运行及 on_tick 等回调。
  2. 交易:CTPTrader 支持下单、撤单,以及账户、持仓、委托、成交查询。
  3. 环境:config/ctp_config.yaml 中通过 environment: simnow | production 切换 SimNow 与实盘穿透式配置块。
  4. 数据输出:本地 CSV/JSON/Parquet(配置项)、可选 SQLite/MySQL/MongoDB、storage 模块;实时推送可选 ZeroMQ、WebSocket、Redis(streaming 模块)。
  5. 回测准备:backtest 模块提供行情录制与 CSV 回放示例。
  6. 工程化: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 推给下游策略服务。

限制与注意

  1. 合规与风险:Skill 免责声明写明仅供学习研究,不构成投资建议;实盘前需自行评估风险并完成期货公司穿透式认证。
  2. 网络与时间:SimNow 前置地址与交易时段以 SimNow 官网 及 Skill 文档中的前置表为准;非交易时段可能无行情。
  3. 合约代码:订阅需区分大小写(如 CF509);无数据时按文档检查登录状态与交易时间。
  4. 依赖与平台:核心依赖 openctp 与 CTP 原生接口相关,部署环境需满足其运行要求;可选模块失败时应回退到 requirements-core.txt 最小集排查。
  5. 敏感信息:勿在 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye