XTPPro

通过 DolphinDB 的 XTPPro 插件,用户可以接收上交所、深交所以及北交所的实时行情,并将数据存储于 DolphinDB 的共享表中。可接收的数据如下表所示:

指数

股票

基金

债券

期权

快照

有

有

有

有

有

逐笔

无

有

有

有

无

订单簿

无

有

有

有

无

本插件依赖中泰证券提供的第三方库 libxtpxquoteapi.so。

安装插件

版本要求

DolphinDB Server 2.00.19 和 3.00.6 及更高版本。支持 Linux x64。支持 Linux_ABI 特性。

使用前应准备以下信息:

  • 可登录的 XTP-Pro 行情账户、服务器 IP 和端口,以及相应的行情权限。

  • DolphinDB 进程可写的日志目录。

  • 使用 UDP 时,准备 XTP-Pro SDK 要求的配置文件、对应的本地网卡和行情网络。配置文件需位于 DolphinDB 服务器上。

安装步骤

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

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

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

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

    loadPlugin("XTPPro")

接口说明

setGlobalConfig

语法

XTPPro::setGlobalConfig(clientId, saveFilePath, [logLevel=3], [udpSeqOutput=false])

详情

设置一些全局配置项。在创建句柄前必须调用至少一次。无返回值。

在调用该接口时不能有已创建的句柄。第一次登录尝试后,修改日志路径、日志级别或 UDP 序列日志开关需要重启 DolphinDB 进程才能生效。

参数

clientId INT 类型标量,1-99 之间取值,表示客户端 ID。如果需要在多个 DolphinDB 进程中使用同一个账户去连接,则需要使用不同的 clientId。

saveFilePath STRING 类型标量,表示存储日志文件的目录,要求必须存在且有可写权限。

logLevel INT 类型标量,表示 xtp 记录日志的级别,0-5 之间取值,分别对应 FATAL ERROR WARNING INFO DEBUG TRACE 级别,默认是 3。

udpSeqOutput BOOL 类型标量,设定 UDP 方式接收行情时,是否输出序列相关异步日志,默认为 false。

createXTPConnection

语法

XTPPro::createXTPConnection(name, [config])

详情

返回一个连接句柄,可用于登录,订阅数据。

参数

name STRING 类型标量,连接句柄的唯一标识符,不能为空,也不能重复。

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

配置项

值类型

说明

receiveTime

整型

可选参数,用于设定是否将接收到数据的时间添加为表的最后一列,类型为 NANOTIMESTAMP。1:增加该列;其它不增加;默认不增加。

OutputElapsed

整型

可选参数,用于设定是否为行情表增加最后一列。该列数据类型为 LONG,表示插件从收到行情开始到准备插入流表为止的延时,单位为纳秒。1 表示增加该列;其它不增加,默认不增加。

login

语法

XTPPro::login(conn, config)

详情

连接 XTP-Pro 服务器并登录。无返回值。

注意事项(摘自 XTP 官方文档):

  • 测试环境使用 TCP 的方式推送行情。由于带宽的限制,建议客户只订阅少量股票,否则会出现推送延时、断线等问题。

  • XTP 提供的 API 的默认日志级别是 DEBUG,需要调整到 INFO(或 ERROR),否则可能会导致丢包。本插件已将默认级别调整到 INFO,在调试时可以设置为 DEBUG。

参数

conn 由 createXTPConnection 接口返回的句柄。

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

配置项

值类型

说明

ip

字符串

服务器 IP 地址

port

整型

服务器端口号

localIP

字符串

可选参数,本地网卡地址。不填或填空字符串时,由 SDK 选择本地地址。

user

字符串

登录用户名

password

字符串

登录密码

protocolType

整型

1: TCP;2: UDP

heartBeatInterval

整型

可选参数,设置心跳检测时间间隔,单位为秒。默认填 30。必须大于 0。

configFilePath

字符串

UDP 方式时必填,XTP-Pro SDK 配置文件的绝对路径。文件必须已存在,并对 DolphinDB 进程可读。

subscribe

语法

XTPPro::subscribe(conn, quoteType, marketType, codeList, tableDict)

详情

订阅行情数据,收到数据后存储到目标表中。无返回值。

注意事项:

  • 订阅同一个行情类型时,在多次订阅上证、深证市场时,要求传入的 tableDict 相同,如果不同,则以第一次订阅传入的 tableDict 为准。

  • 订阅同一个行情类型时,在多次订阅新三板市场时,要求传入的 tableDict 相同,如果不同,则以第一次订阅传入的 tableDict 为准。

  • 订阅同一个行情类型时,市场类型如果已订阅了 5(上证+深证)则不能再次订阅 1(上证)或 2(深证)。

  • 订阅同一个行情类型时,市场类型如果已订阅了 1(上证)或 2(深证)则不能再次订阅 5(上证+深证)。

  • 如果 marketType 填为 5,则不能填非空的 codeList。

  • 各目标表的 schema 可以通过 getSchema 接口获取。

  • 目标表要求是共享表。

  • 公网测试环境仅供客户调试 API 接口,没有订单簿 OB 行情。

参数

conn 由 createXTPConnection 接口返回的句柄。

quoteType INT 类型标量,表示行情类型。1:快照,2:逐笔,3:订单簿。

marketType INT 类型标量,表示市场类型。1:上证, 2:深证,3:新三板,5:上证+深证。

marketType=3 对应北交所及全国股转系统,仅支持通过 UDP 接收快照。

codeList STRING 类型向量或空值,表示合约 ID 数组。如果填 NULL 或空向量,则订阅全市场数据。

tableDict 一个字典,key 类型是 STRING,除 TickByTickTable 可使用通道字典外,value 必须是共享表,用来指定输出表。根据行情类型的不同,输出表的数量也不同。首次订阅时,如果空缺其中若干表,则相对应的行情会被丢弃,详情如下表所示:

行情类型

key

说明

快照

indexTable、optionTable、actualTable、bondTable

指数快照表、期权快照表、现货快照表(股票/基金等)、债券快照表

快照(marketType=3)

BSEMarketData

北交所及全国股转系统快照表,必须配置此键

逐笔

entrustTable、tradeTable、statusTable、TickByTickTable

逐笔委托表、逐笔成交表、逐笔状态表、逐笔合并表

订单簿

orderBookTable

订单簿表

注意:TickByTickTable 即逐笔合并表,其包含收到的三种逐笔数据(委托、成交、状态),在订阅逐笔数据时,tableDict 如果指定了 “TickByTickTable”,就会忽略其它的表。当 key 为 “TickByTickTable” 时,value 分成两种情况:

  • value 为一个表,即包含收到的所有数据。

  • value 为一个字典,该字典的键为整型,表示 channelNo,值是共享表,会将收到数据按照 channelNo 进行分类,放到不同的表中。

unsubscribe

语法

XTPPro::unsubscribe(conn, quoteType)

详情

取消订阅某个类型的行情数据。无返回值。

参数

conn 由 createXTPConnection 接口返回的句柄。

quoteType INT 类型标量,表示行情类型。1:快照;2:逐笔;3:订单簿。

getStatus

语法

XTPPro::getStatus([conn])

详情

获取订阅的状态信息。返回一个表,表结构如下所示:

列名

含义

类型

conn

连接名称

STRING

quotationType

行情类型:MarketData、TickByTick 或 OrderBook

STRING

startTime

订阅开始的时间

NANOTIMESTAMP

endTime

订阅结束的时间

NANOTIMESTAMP

lastMsgTime

最近一条成功写入目标表的消息的处理时间

NANOTIMESTAMP

processedMsgCount

成功写入目标表的消息数

LONG

lastErrMsg

最后一条错误信息

STRING

failedMsgCount

处理失败的消息数

LONG

lastFailedTimestamp

最后一条错误消息发生的时间

NANOTIMESTAMP

参数

conn 由 createXTPConnection 接口返回的句柄,可选参数。如果不填,则返回当前所有连接的状态信息。

getHandle

语法

XTPPro::getHandle(name)

详情

返回由 name 指定的连接句柄。

参数

name STRING 类型标量,表示连接句柄的唯一标识符。

closeXTPConnection

语法

XTPPro::closeXTPConnection(conn)

详情

断开连接,销毁句柄。

参数

conn 由 createXTPConnection 接口返回的句柄。

getSchema

语法

XTPPro::getSchema(type, [outputRecvTime=false], [outputElapsed=false])

详情

返回可存储相应行情类型数据的表的结构。

参数

type STRING 类型标量,表示类型。可选的 type 如下表所示:

type

含义

indexMarketData

指数快照表

optionMarketData

期权快照表

actualMarketData

现货快照表

bondMarketData

债券快照表

BSEMarketData

北交所数据表

entrust

逐笔委托表

trade

逐笔成交表

state

逐笔状态表

orderBook

订单簿表

TickByTickTable

逐笔合并表

outputRecvTime BOOL 类型标量,可选参数,默认为 false,表示是否需要包含 receiveTime 列。如果在 createXTPConnection 时指定了 receiveTime=1 配置,那么该参数须设置为 true。

outputElapsed BOOL 类型标量,可选参数,表示返回的 schema 是否包含 elapsedTime 列。默认为 false,表示不包含。如果在 createXTPConnection 时指定了 OutputElapsed=1 配置,那么该参数须设置为 true。

当 outputRecvTime 和 outputElapsed 均为 true 时,最后两列依次为 receiveTime、elapsedTime。

返回值

一个表结构。返回表每行描述一个输出字段,按输出列的实际顺序排列,包含以下列:

列名

类型

说明

name

STRING

输出字段名

typeString

STRING

输出字段的数据类型名称

typeInt

INT

输出字段的数据类型编号

各行情输出表的完整字段说明见“数据表结构”。

getAllNQTickersFullInfo

语法

XTPPro::getAllNQTickersFullInfo(conn)

详情

查询北交所及全国股转系统证券的全量基础信息,返回包含 37 列的表,字段说明见“证券基础信息表”。

参数

conn 由 createXTPConnection 或 getHandle 返回的连接句柄,须已成功登录。

数据表结构

以下列出各行情输出表的基础字段。

指数快照表

列名

列类型

说明

exchangeID

INT

交易所 ID

ticker

SYMBOL

指数代码,6位

lastPrice

DOUBLE

最新价

preClosePrice

DOUBLE

昨日收盘

openPrice

DOUBLE

今日开盘

highPrice

DOUBLE

最高

lowPrice

DOUBLE

最低

closePrice

DOUBLE

今收

dataTime

TIMESTAMP

时间戳

qty

LONG

成交量,单位:上交所是手,深交所是股

turnover

DOUBLE

成交金额,单位元

tradesCount

LONG

成交笔数 注意,该字段对上交所无意义(填0)

bid1Qty

LONG[]

买一队列

maxBid1Count

INT

买一队列总委托笔数

bid1Count

INT

买一队列的有效委托笔数

ask1Qty

LONG[]

卖一队列

maxAsk1Count

INT

卖一队列总委托笔数

ask1Count

INT

卖一队列的有效委托笔数

期权快照表

列名

列类型

说明

exchangeID

INT

交易所 ID

ticker

SYMBOL

期权代码,8位

lastPrice

DOUBLE

最新成交价

preClosePrice

DOUBLE

昨日收盘价

openPrice

DOUBLE

今日开盘

highPrice

DOUBLE

当日最高价

lowPrice

DOUBLE

当日最低价

closePrice

DOUBLE

今收价

preTotalLongPosition

LONG

昨持仓量

totalLongPosition

LONG

未平仓合约数量(张或股)

preSettlPrice

DOUBLE

昨日结算价

settlPrice

DOUBLE

今日结算价

upperLimitPrice

DOUBLE

涨停价

lowerLimitPrice

DOUBLE

跌停价

dataTime

TIMESTAMP

时间戳

qty

LONG

当日累计成交量

turnover

DOUBLE

当日累计成交金额

avgPrice

DOUBLE

均价

bids

DOUBLE[]

10档买价

asks

DOUBLE[]

10档卖价

bidQty

LONG[]

10档买量

askQty

LONG[]

10档卖量

tradesCount

LONG

成交笔数

tickerStatus

SYMBOL

当前交易状态及标志

auctionPrice

DOUBLE

波段性中断参考价

auctionQty

LONG

波段性中断集合竞价虚拟匹配量

lastEnquiryTime

TIMESTAMP

最近询价时间

bid1Qty

LONG[]

买一队列

maxBid1Count

INT

买一队列总委托笔数

bid1Count

INT

买一队列的有效委托笔数

ask1Qty

LONG[]

卖一队列

maxAsk1Count

INT

卖一队列总委托笔数

ask1Count

INT

卖一队列的有效委托笔数

现货快照表

列名

列类型

说明

exchangeID

INT

交易所ID

ticker

SYMBOL

现货代码(股票、基金等)

lastPrice

DOUBLE

最新成交价

preClosePrice

DOUBLE

昨日收盘价

openPrice

DOUBLE

今日开盘

highPrice

DOUBLE

当日最高价

lowPrice

DOUBLE

当日最低价

closePrice

DOUBLE

今收价

upperLimitPrice

DOUBLE

涨停价

lowerLimitPrice

DOUBLE

跌停价

dataTime

TIMESTAMP

时间戳

qty

LONG

当日累计成交量

turnover

DOUBLE

当日累计成交金额

bids

DOUBLE[]

10档买价

asks

DOUBLE[]

10档卖价

bidQty

LONG[]

10档买量

askQty

LONG[]

10档卖量

tradesCount

LONG

成交笔数

tickerStatus

SYMBOL

当前交易状态及标志

totalBidQty

LONG

委托买入总量,SHL2/SZ有值

totalAskQty

LONG

委托卖出总量,SHL2/SZ有值

maBidPrice

DOUBLE

加权平均委买价格,SHL2/SZ有值

maAskPrice

DOUBLE

加权平均委卖价格,SHL2/SZ有值

maBondBidPrice

DOUBLE

债券加权平均委买价格,SHL2有值

maBondAskPrice

DOUBLE

债券加权平均委卖价格,SHL2有值

yieldToMaturity

DOUBLE

债券到期收益率,SHL2有值

iopv

DOUBLE

基金实时参考净值,SH/SZ有值

etfBuyCount

INT

ETF申购笔数,SHL2有值

etfSellCount

INT

ETF赎回笔数,SHL2有值

etfBuyQty

DOUBLE

ETF申购数量,SHL2有值

etfBuyMoney

DOUBLE

ETF申购金额,SHL2有值

etfSellQty

DOUBLE

ETF赎回数量,SHL2有值

etfSellMoney

DOUBLE

ETF赎回金额,SHL2有值

totalWarrantExecQty

DOUBLE

权证执行的总数量,SHL2有值

warrantLowerPrice

DOUBLE

权证跌停价格,SHL2有值

warrantUpperPrice

DOUBLE

权证涨停价格,SHL2有值

cancelBuyCount

INT

买入撤单笔数,SHL2有值

cancelSellCount

INT

卖出撤单笔数,SHL2有值

cancelBuyQty

DOUBLE

买入撤单数量,SHL2有值

cancelSellQty

DOUBLE

卖出撤单数量,SHL2有值

cancelBuyMoney

DOUBLE

买入撤单金额,SHL2有值

cancelSellMoney

DOUBLE

卖出撤单金额,SHL2有值

totalBuyCount

LONG

买入总笔数,SHL2有值

totalSellCount

LONG

卖出总笔数,SHL2有值

durationAfterBuy

INT

买入委托成交最大等待时间,SHL2有值

durationAfterSell

INT

卖出委托成交最大等待时间,SHL2有值

numBidOrders

INT

买方委托价位数,SHL2有值

numAskORders

INT

卖方委托价位数,SHL2有值

preIopv

DOUBLE

基金T-1日净值。SZ有值

bid1Qty

LONG[]

买一队列

maxBid1Count

INT

买一队列总委托笔数

bid1Count

INT

买一队列的有效委托笔数

ask1Qty

LONG[]

卖一队列

maxAsk1Count

INT

卖一队列总委托笔数

ask1Count

INT

卖一队列的有效委托笔数

债券快照表

列名

列类型

说明

exchangeID

INT

交易所ID

ticker

SYMBOL

债券代码

lastPrice

DOUBLE

最新成交价

preClosePrice

DOUBLE

昨日收盘价

openPrice

DOUBLE

今日开盘

highPrice

DOUBLE

当日最高价

lowPrice

DOUBLE

当日最低价

closePrice

DOUBLE

今收价

upperLimitPrice

DOUBLE

涨停价

lowerLimitPrice

DOUBLE

跌停价

dataTime

TIMESTAMP

时间戳

qty

LONG

当日累计成交量

turnover

DOUBLE

当日累计成交金额

bids

DOUBLE[]

10档买价

asks

DOUBLE[]

10档卖价

bidQty

LONG[]

10档买量

askQty

LONG[]

10档卖量

tradesCount

LONG

成交笔数

tickerStatus

SYMBOL

当前交易状态及标志

totalBidQty

LONG

委托买入总量(SH,SZ)

totalAskQty

LONG

委托卖出总量(SH,SZ)

maBidPrice

DOUBLE

加权平均委买价格(SZ)

maAskPrice

DOUBLE

加权平均委卖价格(SZ)

maBondBidPrice

DOUBLE

债券加权平均委买价格(SH)

maBondAskPrice

DOUBLE

债券加权平均委卖价格(SH)

yieldToMaturity

DOUBLE

债券到期收益率(SH)

matchLastpx

DOUBLE

匹配成交最近价(SZ)

maBondPrice

DOUBLE

债券加权平均价格(SH)

matchQty

LONG

匹配成交量(SZ)

matchTurnover

DOUBLE

匹配成交金额(SZ)

cancelBuyCount

INT

买入撤单笔数(SH)

cancelSellCount

INT

卖出撤单笔数(SH)

cancelBuyQty

DOUBLE

买入撤单数量(SH)

cancelSellQty

DOUBLE

卖出撤单数量(SH)

cancelBuyMoney

DOUBLE

买入撤单金额(SH)

cancelSellMoney

DOUBLE

卖出撤单金额(SH)

totalBuyCount

LONG

买入总笔数(SH)

totalSellCount

LONG

卖出总笔数(SH)

durationAfterBuy

INT

买入委托成交最大等待时间(SH)

durationAfterSell

INT

卖出委托成交最大等待时间(SH)

numBidOrders

INT

买方委托价位数(SH)

numAskOrders

INT

卖方委托价位数(SH)

instrumentStatus

SYMBOL

状态

bid1Qty

LONG[]

买一队列

maxBid1Count

INT

买一队列总委托笔数

bid1Count

INT

买一队列的有效委托笔数

ask1Qty

LONG[]

卖一队列

maxAsk1Count

INT

卖一队列总委托笔数

ask1Count

INT

卖一队列的有效委托笔数

北交所数据表

列名

列类型

说明

exchangeID

INT

交易所ID

ticker

SYMBOL

股票 ID

lastPrice

DOUBLE

最新成交价

preClosePrice

DOUBLE

昨日收盘价

openPrice

DOUBLE

今日开盘

highPrice

DOUBLE

当日最高价

lowPrice

DOUBLE

当日最低价

closePrice

DOUBLE

今收价

totalLongPosition

LONG

未平仓合约数量(张或股)

dataTime

TIMESTAMP

时间戳

qty

LONG

当日累计成交量

turnover

DOUBLE

当日累计成交金额

upperLimitPrice

DOUBLE

涨停价

lowerLimitPrice

DOUBLE

跌停价

tradesCount

LONG

成交笔数

tickerStatus

SYMBOL

当前交易状态及标志

bids

DOUBLE[]

5档买价

asks

DOUBLE[]

5档卖价

bidQty

LONG[]

5档买量

askQty

LONG[]

5档卖量

bid1Qty

LONG[]

买一队列

maxBid1Count

INT

买一队列总委托笔数

bid1Count

INT

买一队列的有效委托笔数

ask1Qty

LONG[]

卖一队列

maxAsk1Count

INT

卖一队列总委托笔数

ask1Count

INT

卖一队列的有效委托笔数

逐笔委托表

列名

列类型

说明

exchangeID

INT

交易所 ID

ticker

SYMBOL

代码,6位

seq

LONG

上交所表示业务序号;深交所无意义

dataTime

TIMESTAMP

时间戳

channelNo

INT

频道代码

entrustSeq

LONG

委托序号

price

DOUBLE

委托价格

qty

LONG

上交所表示剩余委托数量;深交所表示委托数量

side

CHAR

上交所:'B'(买);'S'(卖) 深交所:'1'(买);'2'(卖);'G'(借入);'F'(出借)

ordType

CHAR

上交所:'A'(增加);'D'(删除) 深交所表示订单类别:'1'(市价); '2'(限价);'U'(本方最优)

orderNo

LONG

上交所表示原始订单号;深交所无意义

tradeQty

LONG

已成交数量

逐笔成交表

列名

列类型

说明

exchangeID

INT

交易所 ID

ticker

SYMBOL

代码,6位

seq

LONG

上交所表示业务序号;深交所无意义

dataTime

TIMESTAMP

时间戳

channelNo

INT

频道代码

tradeSeq

LONG

成交序号

price

DOUBLE

成交价格

qty

LONG

成交量

money

DOUBLE

成交金额(仅适用上交所)

bidNo

LONG

买方订单号

askNo

LONG

卖方订单号

tradeFlag

CHAR

上交所表示内外盘标识('B':主动买;'S':主动卖;'N':未知) 深交所表示成交标识('4':撤;'F':成交)

逐笔状态表

列名

列类型

说明

exchangeID

INT

交易所 ID

ticker

SYMBOL

代码,6位

seq

LONG

上交所表示业务序号;深交所无意义

dataTime

TIMESTAMP

时间戳

channelNo

INT

频道代码

statusSeq

LONG

状态序号

flag

SYMBOL

状态信息

订单簿表

列名

列类型

说明

exchangeID

INT

交易所 ID

ticker

SYMBOL

代码,6位

lastPrice

DOUBLE

最近成交价

qty

LONG

成交总量

turnover

DOUBLE

成交总金额

tradesCount

LONG

成交笔数

bids

DOUBLE[]

十档买价

asks

DOUBLE[]

十档卖价

bidQty

LONG[]

十档买量

askQty

LONG[]

十档卖量

dataTime

TIMESTAMP

最近成交时间

逐笔合并表

列名

列类型

说明

SecurityID

SYMBOL

标的字符串

MDDate

DATE

日期

MDTime

TIME

时间

ExchangeType

INT

1 上证 2 深证

SourceType

INT

0表示逐笔委托 1表示逐笔成交 -1表示产品状态

Type

INT

交易类型: 如果是逐笔委托单,则:1表示市价;2表示限价;3表示本方最优;10表示撤单(仅上交所) 如果是逐笔成交单,则:0表示成交;1表示撤单(仅深交所) 如果是产品状态,则:11市场状态(仅上交所)

Price

LONG

价格,真实价格*10000

Qty

LONG

数量

BSFlag

INT

买卖方向:1表示买单;2表示卖单 在逐笔成交时,通过买卖订单号判断,如果买单订单号大,就是买单,如果卖单订单号大,就是卖单

BuyNo

LONG

买方委托序号

SellNo

LONG

卖方委托序号

ApplSeqNum

LONG

一个通道内的逐笔数据序号

ChannelNo

INT

channel 序号

证券基础信息表

列名

列类型

说明

exchangeId

INT

交易所标识

ticker

SYMBOL

证券代码

tickerName

SYMBOL

证券名称

securityType

INT

证券类型

tickerQualificationClass

INT

证券资格分类

tickerAbbrEn

SYMBOL

证券英文简称

baseTicker

SYMBOL

基础证券代码

industryType

SYMBOL

行业类别

currencyType

SYMBOL

币种

tradeUnit

INT

交易单位

hangOutDate

INT

挂牌日期,保留 SDK 返回的整型值

valueDate

INT

起息日期,保留 SDK 返回的整型值

maturityDate

INT

到期日期,保留 SDK 返回的整型值

perLimitVol

INT

单笔数量限制参数

buyVolUnit

INT

买入数量单位

sellVolUnit

INT

卖出数量单位

miniDeclaredVol

INT

最小申报数量

limitPriceAttr

INT

价格限制属性

marketMakerQuantity

INT

做市商数量

priceGear

DOUBLE

价格档位

firstLimitTrans

DOUBLE

首次交易限制参数(SDK 字段 first_limit_trans)

subsequentLimitTrans

DOUBLE

后续交易限制参数(SDK 字段 subsequent_limit_trans)

limitUpperPrice

DOUBLE

价格上限

limitLowerPrice

DOUBLE

价格下限

blockTradeUpper

DOUBLE

大宗交易价格上限

blockTradeLower

DOUBLE

大宗交易价格下限

convertIntoRation

DOUBLE

转换比例参数(SDK 字段 convert_into_ration)

tradeStatus

INT

交易状态

securityLevel

INT

证券级别

tradeType

INT

交易类型

suspendFlag

INT

停牌标志

exDividendFlag

INT

除权除息标志

layerType

INT

分层类型

isRzbd

CHAR

融资标的标志(SDK 字段 is_rzbd)

isRqbd

CHAR

融券标的标志(SDK 字段 is_rqbd)

isDrrz

CHAR

当日融资标志(SDK 字段 is_drrz)

isDrrq

CHAR

当日融券标志(SDK 字段 is_drrq)

使用示例

示例中的账户、密码、IP 和目录从 DolphinDB 服务器进程的环境变量读取,需在启动服务前配置。

订阅沪深现货快照

先设置 XTP_CLIENT_ID、XTP_LOG_PATH、XTP_IP、XTP_PORT、XTP_USER 和 XTP_PASSWORD 环境变量。以下示例采用 TCP,订阅上交所两个证券,并启用接收时间和处理耗时字段。

// 1. 设置全局配置。此时不能已有 XTPPro 连接句柄。
XTPPro::setGlobalConfig(
    clientId=int(getEnv("XTP_CLIENT_ID")),
    saveFilePath=getEnv("XTP_LOG_PATH"),
    logLevel=3,
    udpSeqOutput=false)

// 2. 创建句柄。如需多个连接,应在首次登录前全部创建。
connConfig = dict(keyType=STRING, valueType=ANY)
connConfig["receiveTime"] = 1
connConfig["OutputElapsed"] = 1
conn = XTPPro::createXTPConnection(name="xtpProFeed", config=connConfig)

// 3. 按对应 schema 创建并共享输出表。
quoteSchema = XTPPro::getSchema(
    type="actualMarketData", outputRecvTime=true, outputElapsed=true)
quoteTable = streamTable(10000:0, quoteSchema.name, quoteSchema.typeString)
share(table=quoteTable, sharedName="xtpProActual")
outputTables = dict(keyType=STRING, valueType=ANY)
outputTables["actualTable"] = quoteTable

// 4. 登录 TCP 行情服务器。
loginConfig = dict(keyType=STRING, valueType=ANY)
loginConfig["ip"] = getEnv("XTP_IP")
loginConfig["port"] = int(getEnv("XTP_PORT"))
loginConfig["user"] = getEnv("XTP_USER")
loginConfig["password"] = getEnv("XTP_PASSWORD")
loginConfig["protocolType"] = 1
XTPPro::login(conn=conn, config=loginConfig)

// 5. 订阅现货快照;其他未配置输出表的快照不会写入。
XTPPro::subscribe(conn=conn, quoteType=1, marketType=1,
    codeList=["600000", "600519"], tableDict=outputTables)

接收行情后,可在同一节点查询状态和输出表。

XTPPro::getStatus(conn=conn)
select top 10 * from xtpProActual

停止接收时,取消订阅并关闭连接。共享表保留,可继续查询已收到的数据。

XTPPro::unsubscribe(conn=conn, quoteType=1)
XTPPro::closeXTPConnection(conn=conn)

订阅逐笔合并数据

以下为快照示例中第 3 步、第 5 步的替换模板;先按相同流程配置、创建句柄并成功登录。

tickSchema = XTPPro::getSchema(
    type="TickByTickTable", outputRecvTime=true, outputElapsed=true)
tickTable = streamTable(10000:0, tickSchema.name, tickSchema.typeString)
share(table=tickTable, sharedName="xtpProTicks")
tickTables = dict(keyType=STRING, valueType=ANY)
tickTables["TickByTickTable"] = tickTable
XTPPro::subscribe(conn=conn, quoteType=2, marketType=1,
    codeList=["600000", "600519"], tableDict=tickTables)

如需按通道分表,将 TickByTickTable 的值改为通道字典。下例通道号仅作示意,应替换为行情源实际使用的通道号。此配置应在首次订阅逐笔数据时使用;已订阅时需先取消该类型的全部订阅。

channelOneTable = streamTable(10000:0, tickSchema.name, tickSchema.typeString)
channelTwoTable = streamTable(10000:0, tickSchema.name, tickSchema.typeString)
share(table=channelOneTable, sharedName="xtpProChannelOne")
share(table=channelTwoTable, sharedName="xtpProChannelTwo")
channelTables = dict(keyType=INT, valueType=ANY)
channelTables[1] = channelOneTable
channelTables[2] = channelTwoTable
tickTables = dict(keyType=STRING, valueType=ANY)
tickTables["TickByTickTable"] = channelTables
XTPPro::subscribe(conn=conn, quoteType=2, marketType=1,
    codeList=["600000", "600519"], tableDict=tickTables)

通过 UDP 订阅北交所快照

以下为快照示例的替换模板。不要在已有 TCP 登录的句柄上直接重复登录。

// 替换原登录步骤。XTP_CONFIG_FILE 为服务器上可读配置文件的绝对路径。
loginConfig["protocolType"] = 2
loginConfig["configFilePath"] = getEnv("XTP_CONFIG_FILE")
loginConfig["localIP"] = getEnv("XTP_LOCAL_IP")
XTPPro::login(conn=conn, config=loginConfig)

bseSchema = XTPPro::getSchema(
    type="BSEMarketData", outputRecvTime=true, outputElapsed=true)
bseTable = streamTable(10000:0, bseSchema.name, bseSchema.typeString)
share(table=bseTable, sharedName="xtpProBse")
bseTables = dict(keyType=STRING, valueType=ANY)
bseTables["BSEMarketData"] = bseTable
XTPPro::subscribe(conn=conn, quoteType=1, marketType=3,
    codeList=NULL, tableDict=bseTables)

// 一次性查询证券基础信息。
nqInfo = XTPPro::getAllNQTickersFullInfo(conn=conn)

注意事项

  • 如果需要连接多个 XTP-Pro 服务器,则需要创建多个句柄,用每个句柄连接不同的服务器。

  • 在登录任一个 XTP-Pro 服务器之前,必须创建完毕所有句柄,即在登录后就不允许创建新的句柄,否则会抛出异常。

  • 连接由节点进程管理,退出客户端会话不会自动关闭。其他会话可通过 getHandle 获取连接;结束接入时须调用 closeXTPConnection。

  • 连接断开后会自动重连。TCP 重新登录成功后恢复原有订阅,UDP 重新登录后继续接收组播行情。自动重连不补齐断线期间的历史行情。