DataFeed

DolphinDB DataFeed 插件通过集成中金所提供的 SDK 来接收非展示型行情源数据,并将数据存入 DolphinDB 的数据表。该插件使用组播方式接收数据。

插件依赖第三方库 libdatafeed_multi_api.so。

安装插件

版本要求

DolphinDB Server:2.00.10 及更高版本,支持 Linux x64。

安装步骤

  1. 在 DolphinDB 客户端中使用 listRemotePlugins 命令查看插件仓库中的插件信息。

    注意:仅展示当前操作系统和 server 版本支持的插件。若无预期插件,可自行编译(请自行选择对应分支下的插件)或在 DolphinDB 用户社区进行反馈。

    login("admin", "123456")
    listRemotePlugins()
  2. 使用 installPlugin 命令完成插件安装。

    installPlugin("DataFeed")
  3. 使用 loadPlugin 命令加载插件。

    loadPlugin("DataFeed")

接口说明

createHandle

语法

createHandle(addr , userName, password, logLevel, logFileName)

详情

创建一个句柄,用于后续操作,例如订阅,取消订阅等。注意:只能创建一个。

参数

addr STRING 类型向量,表示后台服务器地址。服务器地址的格式为:"protocol://ipaddress:port",如:"tcp://127.0.0.1:17001"。 "tcp" 代表传输协议,"127.0.0.1" 代表服务器地址,"17001" 代表服务器端口号。

userName STRING 类型标量,表示用户名。

password STRING 类型标量,表示密码。

logLevel 整型标量,表示日志级别,在[0, 5]中取值,分别表示 FATAL, ERROR, WARNING, INFO, DEBUG, TRACE。

logFileName STRING 类型标量,用于指定存储 DataFeed 日志的文件。

config:一个 key 类型为 STRING 的字典,包含如下配置项:

配置项(key)值类型说明
receiveTimeBOOL可选参数,设定是否将接收到数据的时间做为一列置于表的最后一列,类型为 NANOTIMESTAMP。 true: 增加该列,否则不增加。默认不增加。

subscribe

语法

DataFeed::subscribe(handle, hostIP, table)

详情

开始订阅行情数据,将数据存到 table 中。

参数

handlecreateHandle 返回的句柄。

hostIP STRING 类型标量,表示用户本地 IP 地址,用来校验地址以及指定组播接收网卡。注意:请保证传入的 IP 地址合法,且相应网卡已使能组播,否则无法收到数据。

table 共享内存表或共享流表,表结构可由 getSchema 接口获取。

unsubscribe

语法

DataFeed::unsubscribe(handle)`

详情

取消订阅。

参数

handlecreateHandle 返回的句柄。

close

语法

DataFeed::close(handle)

详情

断开连接,销毁该 handle

参数

handlecreateHandle 返回的句柄。

getHandle

语法

DataFeed::getHandle()

详情

返回可用的句柄。如果没有可用句柄,则抛出异常。

getStatus

语法

DataFeed::getStatus()

详情

获取订阅数据的状态信息。返回一个表格,结构为:

列名含义类型
startTime订阅开始的时间NANOTIMESTAMP
endTime订阅结束的时间NANOTIMESTAMP
lastMsgTime最后一条消息收到的时间NANOTIMESTAMP
processedMsgCount已经处理的消息数LONG
lastErrMsg最后一条错误信息STRING
failedMsgCount处理失败的消息数LONG
lastFailedTimestamp最后一条错误消息发生的时间NANOTIMESTAMP

getSchema

语法

DataFeed::getSchema([needReceiveTime])

详情

返回存放行情的表的结构信息。返回一个表,包含三列:name,typeString 和 typeInt,分别表示该行情表中字段的名字,字段类型的名称和类型的枚举值。

nametypeStringtypeInt
nametypeStringtypeInt
1TradingDaySYMBOL17
2InstrumentIDSYMBOL17
3SettlementGroupIDSYMBOL17
4SettlementIDINT4
5LastPriceDOUBLE16
6PreSettlementPriceDOUBLE16
7PreClosePriceDOUBLE16
8PreOpenInterestDOUBLE16
9OpenPriceDOUBLE16
10HighPriceDOUBLE16
11LowPriceDOUBLE16
12VolumeINT4
13TurnoverDOUBLE16
14OpenInterestDOUBLE16
15ClosePriceDOUBLE16
16SettlementPriceDOUBLE16
17UpperLimitPriceDOUBLE16
18LowerLimitPriceDOUBLE16
19PreDeltaDOUBLE16
20CurrDeltaDOUBLE16
21UpdateTimeSYMBOL17
22UpdateMsecINT4
23BidPriceDOUBLE80
24BidVolumeINT68
25AskPriceDOUBLE80
26AskVolumeINT68
27BandingUpperPriceDOUBLE16
28BandingLowerPriceDOUBLE16
29receiveTime(可选)NANOTIMESTAMP14

参数

needReceiveTime 可选参数,BOOL 类型标量, 表示是否需要包含 receiveTime 列,默认为 false。如果在 createHandle 时,指定了 receiveTime,则需要将该参数设置为 true。

完整示例

handle = DataFeed::createHandle(["tcp://10.15.14.15:9001"], "user", "password", 3, "/home/logPath/log.log")

share  table(1:0, `TradingDay`InstrumentID`SettlementGroupID`SettlementID`LastPrice`PreSettlementPrice`PreClosePrice`PreOpenInterest`OpenPrice`HighPrice`LowPrice`Volume`Turnover`OpenInterest`ClosePrice`SettlementPrice`UpperLimitPrice`LowerLimitPrice`PreDelta`CurrDelta`UpdateTime`UpdateMsec`BidPrice`BidVolume`AskPrice`AskVolume`BandingUpperPrice`BandingLowerPrice, [SYMBOL, SYMBOL, SYMBOL, INT, DOUBLE, DOUBLE, DOUBLE, DOUBLE, DOUBLE, DOUBLE, DOUBLE, INT, DOUBLE, DOUBLE, DOUBLE, DOUBLE, DOUBLE, DOUBLE, DOUBLE, DOUBLE, SYMBOL, INT, DOUBLE[], INT[], DOUBLE[], INT[], DOUBLE, DOUBLE]) as depthMDTable

DataFeed::subscribe(handle, "10.115.11.114", depthMDTable)

DataFeed::getStatus()
DataFeed::close(handle)