ctpRisk
综合交易平台(Comprehensive Transaction Platform,CTP)是上海期货信息技术有限公司开发的核心交易系统,目前是国内期货市场应用最广泛的交易柜台,为期货公司提供交易、风控、结算等一体化业务解决方案。
为对接 CTP 系统,DolphinDB 已开发 CTP 插件,用于订阅期货市场的实时行情数据、查询商品信息。在此基础上,DolphinDB 推出基于 CTP RiskAPI 开发的 ctpRisk 插件,用于实时获取 CTP 的用户事件数据,实现风险监控。
安装插件
版本要求
DolphinDB Server 2.00.17/3.00.4 及更高版本,支持 Linux x86_64 和 Linux x86_64 ABI。
安装步骤
-
使用
listRemotePlugins函数查看可供安装的插件。login("admin", "123456"); listRemotePlugins(); -
使用
installPlugin函数安装插件。installPlugin("ctpRisk"); -
使用
loadPlugin函数加载插件。loadPlugin("ctpRisk");
接口说明
connect
语法
ctpRisk::connect(id, host, port, brokerID, userID, password, [options])
详情
创建一个和 CTP 行情服务器之间的连接,返回一个句柄。
参数
id STRING 标量,指定全局唯一的连接 ID。
host STRING 标量或向量,指定行情服务器的 IP 地址。
port INT 标量或向量,指定行情服务器的监听端口,长度必须与 host 相同。
brokerID STRING 标量,指定期货公司的 ID。
userID STRING 标量,指定客户的 ID。
password STRING 标量,指定登录密码。
options 可选参数,键为 STRING 类型的字典,支持以下键值对:
| 键 | 值类型 | 说明 |
|---|---|---|
|
"flowPath" |
STRING |
SDK 状态文件目录。默认为 dolphindb 可执行文件的同目录。 |
|
"timeoutMs" |
INT |
连接及登录等待上限,默认值 10000,最小值 5000,单位为毫秒。 |
|
"ReceivedTime" |
BOOL |
指定是否增加一列表示接收到数据的时间,类型为 NANOTIMESTAMP。true 表示增加该列;默认为 false,表示不增加。 |
|
"OutputElapsed" |
BOOL |
指定是否增加一列表示插件从收到行情开始到准备插入流表为止的延时,单位为纳秒,类型为 LONG。true 表示增加该列;默认为 false,表示不增加。 |
返回值
一个连接句柄。
subscribe
语法
ctpRisk::subscribe(handle, dataType, outputTable, [startSequence])
详情
订阅指定类别的数据。
参数
handle
connect 接口返回的连接句柄。
dataType STRING 标量,指定需要订阅的数据类别,目前只支持 "UserEvent"。
outputTable 共享流数据输出表。表必须与 getSchema
返回的表在列名、列顺序和列类型上完全一致。
startSequence 可选参数,非负 INT 标量,指定事件序号,即指订阅数据的起始位置,默认为 0。
返回值
无
getSchema
语法
ctpRisk::getSchema(dataType, [options])
详情
获取输出表的表结构。
参数
dataType STRING 标量,指定需要订阅的数据类别,目前只支持 "UserEvent"。
options 可选参数,键为 STRING 类型的字典,支持以下键值对:
| 键 | 值类型 | 说明 |
|---|---|---|
|
"ReceivedTime" |
BOOL |
指定是否增加一列表示接收到数据的时间,类型为 NANOTIMESTAMP。true 表示增加该列;默认为 false,表示不增加。 |
|
"OutputElapsed" |
BOOL |
指定是否增加一列表示插件从收到行情开始到准备插入流表为止的延时,单位为纳秒,类型为 LONG。true 表示增加该列;默认为 false,表示不增加。 |
返回值
包含 name、typeString、typeInt 三列的表。
getStatus
语法
ctpRisk::getStatus(handle)
详情
获取订阅状态。
参数
handleconnect 接口返回的连接句柄。
返回值
一张表,其结构如下所示:
| 列名 | 类型 | 说明 |
|---|---|---|
|
conn |
STRING |
连接名称 |
|
quotationType |
STRING |
订阅类型 |
|
startTime |
NANOTIMESTAMP |
订阅开始的时间 |
|
lastMsgTime |
NANOTIMESTAMP |
收到最后一条消息的时间 |
|
processedMsgCount |
LONG |
已经处理的消息数 |
|
lastErrMsg |
STRING |
最后一条错误信息 |
|
failedMsgCount |
LONG |
处理失败的消息数 |
|
lastFailedTimestamp |
NANOTIMESTAMP |
最后一条错误消息发生的时间 |
getHandle
语法
getHandle([id])
详情
获取当前已有的连接句柄。
参数
id 可选参数,STRING 标量,指定连接 ID,对应于调用 connect 接口时指定的
id。
返回值
-
指定 id 时,返回该 id 对应的连接句柄。
-
不指定 id 时,返回一个字典,包含所有当前存在的连接句柄。
close
语法
ctpRisk::close(handle)
详情
关闭连接。
参数
handle
connect 接口返回的连接句柄。
返回值
无
示例
loadPlugin("ctpRisk")
connectOption = dict(STRING, ANY)
connectOption["flowPath"] = "/home/test/con"
handle = ctpRisk::connect("test", "222.xxx.xx.xx", 50001, "0292", "user1", "123456", connectOption)
tschema = ctpRisk::getSchema("UserEvent")
t = streamTable(1:0, tschema.name, tschema.typeInt)
share t as outputTable
ctpRisk::subscribe(handle1, "UserEvent", outputTable)
select count(*) from outputTable
select top 10 * from outputTable
ctpRisk::close(handle)
