CTP插件
本页介绍 CTPDataService 的用途,并说明连接 CTP 所需参数与端口用途注意事项。
Source: https://dolphindb.cn/blogs/120
What this page covers
- 文章标题与发布日期等元信息
- 查询合约与订阅行情的端口号使用区别
- Python 参考代码:连接、查询、发布表与订阅管理
- CTPDataService 用途、参数含义与端口用途备注
- 配置与调用流程示例(从连接到清理)
技能认证特训营第二期报名信息
页面顶部展示技能认证特训营第二期的限时报名链接与优惠提示。
- 包含“技能认证特训营第二期”的报名入口信息。
- 包含限时报名相关提示。
- 包含优惠相关提示。
CTP插件(文章标题与元信息)
给出文章标题“CTP插件”、作者标识与发布日期。
- 文章标题为“CTP插件”。
- 页面包含作者标识信息。
- 页面包含发布日期信息。
端口号使用注意事项(查询合约 vs 订阅行情)
说明查询合约与订阅行情分别需要使用交易端口与行情端口。
- 查询合约需要使用交易端口号。
- 订阅行情需要使用行情端口号。
Python调用参考代码:CTPDataService
提供Python类CTPDataService示例代码,涵盖连接、查询合约、创建发布表、订阅/取消订阅、查询状态与关闭连接等流程。
- 示例包含创建 CTP 连接句柄的步骤。
- 示例包含查询合约/证券信息的步骤。
- 示例包含创建发布表(stream table)的步骤。
- 示例包含订阅行情数据到发布表的步骤。
- 示例包含取消订阅行情的步骤。
- 示例包含查询连接状态的步骤。
- 示例包含关闭连接的步骤。
- 示例包含删除发布表的步骤。
使用说明与参数说明
解释CTPDataService用途并列出连接CTP所需参数及端口用途备注。
- CTPDataService 用于连接期货 CTP 接口。
- 连接参数包含 ip、trade_port、market_port、username、password、borker_id、app_id、auth_code。
- trade_port 用于交易端口场景(例如查询合约列表)。
- market_port 用于行情端口场景(例如订阅行情)。
使用示例:配置与调用流程
给出CTP配置字典与从连接到查询合约、创建发布表、订阅/取消订阅、删除发布表的示例调用。
- 示例提供 CTP 配置字典。
- 示例展示从连接开始的调用顺序。
- 示例展示查询合约列表的调用。
- 示例展示创建发布表的调用。
- 示例展示订阅行情的调用。
- 示例展示取消订阅的调用。
- 示例展示删除发布表的调用。
Facts Index
| Entity | Attribute | Value | Confidence |
|---|---|---|---|
| CTP插件(文章) | 发布日期 | 2024-09-20 | high |
| CTP端口使用 | 查询合约所需端口 | 查询合约需要交易端口号 | high |
| CTP端口使用 | 订阅行情所需端口 | 订阅行情需要行情端口号 | high |
| CTPDataService | 用途 | 用于连接期货CTP接口 | high |
| CTPDataService参数 ip | 含义/类型 | ip为string,CTP交易服务器IP | high |
| CTPDataService参数 trade_port | 含义 | CTP交易服务器的端口 | high |
| CTPDataService参数 market_port | 含义 | CTP行情端口号 | high |
| CTPDataService参数 username | 含义 | 资金账户 | high |
| CTPDataService参数 password | 含义 | 交易密码 | high |
| CTPDataService参数 borker_id | 含义 | 经纪公司代码 | high |
| CTPDataService参数 app_id | 含义 | 客户端认证的App代码 | high |
| CTPDataService参数 auth_code | 含义 | 客户端认证请求的认证码(授权码) | high |
| 端口用途备注 | trade_port用途 | trade_port为交易端口用于查询合约列表 | high |
| 端口用途备注 | market_port用途 | market_port为行情端口用于订阅行情 | high |
| DolphinDB/CTP连接(示例代码) | 连接函数 | 使用 ctp::connect(ip, market_port, dict(["ReceivedTime","ConcatTime","OutputElapsed"],[true,true,true])) 创建连接句柄 ctp_handle | high |
| DolphinDB/CTP查询合约(示例代码) | 查询函数 | 使用 ctp::queryInstrument(ip, trade_port, username, password, borker_id, app_id, auth_code[, exchange]) 获取证券/合约信息 | high |
| CTPDataService | 默认发布表名 | ctpMarketData | high |
| CTPDataService.create_ctp_publish_table(示例代码) | 默认capacity | 1500000 | high |
| 发布表创建(示例代码) | schema来源 | schema = ctp::getSchema(handle, `marketData) | high |
| 发布表创建(示例代码) | 表类型与容量表达式 | pubTable = streamTable(capacity:0, schema.name, schema.typeInt) | high |
| 发布表共享与持久化(示例代码) | 启用参数 | enableTableShareAndPersistence(table=pubTable, tableName=`{table_name}, cacheSize=1000000, preCache=500000) | high |
| 发布表持久化说明(示例代码注释) | 触发与保存行为 | 当流数据表数据量达到100万行时启用持久化,将其中50%的数据采用异步方式压缩保存到磁盘 | medium |
| 行情订阅(示例代码) | 订阅函数 | ctp::subscribe(ctp_handle, `marketData, objByName(`{table_name}), codes) | high |
| CTPDataService.subscribe_ctp_data(示例代码) | 前置条件 | 若发布表不存在(existsStreamTable为false),会抛出 ValueError("发布表不存在,先执行create_ctp_publish_table") | high |
| 取消订阅(示例代码) | 取消订阅函数 | ctp::unsubscribe(ctp_handle, `marketData, codes) | high |
| CTP状态查询(示例代码) | 状态函数 | ctp::getStatus(ctp_handle) | high |
| CTP关闭连接(示例代码) | 关闭函数 | ctp::close(ctp_handle) | high |
| 发布表删除(示例代码) | 删除函数 | dropStreamTable(`{table_name}) | high |
| dropPubTable效果(示例代码日志文案) | 清理范围 | 丢弃发布表时,内存中和磁盘上的流数据均会被清除 | medium |
| 使用示例(示例代码) | 查询合约列表结果列名 | 查询合约列表,列名:InstrumentID | high |
| 使用示例(示例代码) | 发布表名可指定 | create_ctp_publish_table(table_name="ctpPubTable") 可生成名为 ctpPubTable 的发布表;默认发布表名为 ctpMarketData | high |
| 使用示例(示例代码) | 订阅参数默认行为 | subscribe_ctp_data() 默认全部订阅;也可用 subscribe_ctp_data(["T2503","IC2410"]) 订阅两个合约 | high |
| 使用示例(示例代码) | 取消订阅默认行为 | unsubscribe() 默认取消之前订阅的code;也可以指定传入 | high |
| 使用示例(示例代码) | 删除发布表默认行为 | dropPubTable() 的 table_name 默认为 ctpMarketData | high |