股票
回测平台支持的股票资产行情数据类型包括:逐笔或逐笔+快照,快照,快照+逐笔成交明细,分钟频率,日频,逐笔(宽表),逐笔+快照(宽表)等。
引擎配置说明
接口 createBacktester
的参数 config 和接口
createBacktestEngine
的参数 userConfig
的配置可参考下表(注意股票回测的策略类型需要设置为“stock”):
key | 说明 | 备注 |
---|---|---|
"startDate" | 开始日期 | 必须配置,DATE 类型 例如 “2020.01.01” |
"endDate" | 结束日期 | 必须配置,DATE 类型 例如 “2020.01.01” |
"strategyGroup" | 策略类型 | 必须配置,“stock” |
"cash" | 初始资金 | 必须配置,DOUBLE 类型 |
"commission" | 手续费 | 必须配置,DOUBLE 类型 |
"tax" | 印花税 | 必须配置,DOUBLE 类型 |
"dataType" | 行情类型 | 必须配置,INT 类型,可选值为: 0:股票逐笔(逐笔委托和逐笔成交明细)+快照 1:快照 2:快照+逐笔成交明细 3:分钟频率 4:日频 5:股票逐笔(逐笔委托和逐笔成交明细合并为宽表) 6:股票逐笔+快照(逐笔委托、逐笔成交明细和快照合并为宽表) |
“frequency” |
逐笔数据以指定频率合成快照 或快照数据以指定频率合成 bar |
INT 类型,默认为 0
|
"msgAsTable" | 行情的数据格式 | BOOL 类型,默认 false false:字典 true:表 (只能通过接口createBacktestEngine 创建引擎) |
“matchingMode“ | 订单撮合模式 | INT 类型,根据行情类型模式不同,可选值为: 1:
2:
3:以委托价格成交 当 dataType=1 或 2 时,该参数设置为 1 或 2 时无效,默认按模拟撮合引擎撮合订单。当 dataType=3 或 4 时,默认为 1 撮合模式。 |
“benchmark” | 基准标的 | STRING 或 SYMBOL 类型 上交所以 ".XSHG" 结尾 深交所以 ".XSHE" 结尾 例如 ”000300.XSHG“ ,在接口 |
"latency" | 订单延时 | INT 类型,单位为毫秒,用来模拟用户订单从发出到被处理的时延 |
“stockDividend” | 分红除权基本信息表 | TABLE 类型,字段说明见下文 |
“enableIndicatorOptimize” | 是否开启指标优化 | BOOL 类型,默认为 false true:开启 false:不开启 |
“isBacktestMode“ | 是否为回测模式 | BOOL 类型,默认为 true true:回测模式 false:模拟交易模式 |
”dataRetentionWindow“ | 开始指标优化时数据保留的窗口 | STRING 类型或 INT 类型。 当 enableIndicatorOptimize = true 时,该参数生效。
|
”addTimeColumnInIndicator“ | 指标订阅时是否给指标数表增加时间列 | BOOL 类型,默认为 false true:增加 false:不增加 |
"context" | 行情逻辑上下文类结构 | DICT 类型,行情全局变量构成的字典,如:context=dict(STRING,ANY) context["buySignalRSI"]=70. context["buySignalRSI"]=30. userConfig["context"]=context |
”callbackForSnapshot “ | 快照行情触发回调模式 | dataType = 1 时仅有。 INT 类型,默认为 0 ,可选值为: 0:表示只触发 onSnapshot 1 :表示既触发 onSnpshot 又触发 onBar 2 :表示只触发 onBar 当 frequency >0 时,必须触发 onBar 回调函数,即 callbackForSnapshot =1 或者 2 |
“enableSubscriptionToTickQuotes” | 是否订阅逐笔行情 | dataType = 0 、5、6 时仅有。 BOOL 类型,默认为 false。当 dataType = 0 或 5,并且使用行情回调函数 onTick 时,必须配置为 true true:订阅 false:不订阅 |
“outputQueuePosition” |
是否需要获取订单在行情中的位置 如果输出该信息,则在成交明细和未成交订单接口中会增加以下 5 个指标:
|
dataType = 0 、5、6 且enableSubscriptionToTickQuotes = true
时仅有。 INT 类型,可选值为: 0:默认值,表示不输出 1:表示订单撮合成交计算上述指标的时候,把最新的一条行情纳入订单薄 2:表示订单撮合成交计算上述指标的时候,把最新的一条行情不纳入订单薄,即统计的是撮合计算前的位置信息 |
“prevClosePrice” | 前收盘价数据表 | dataType = 0 、5、6 时仅有。 TABLE 类型,为以下三列的表: [symbol, tradeDate, prevClose] 在深交所的逐笔行情时,科创版股票的前收盘价必须设置,否则订单撮合结果可能不符合预期 |
“orderBookMatchingRatio” | 与行情订单薄的成交百分比 | dataType = 0 、1、2、 5、6 时仅有 DOUBLE 类型,默认 1.0,取值 0~1.0 之间 |
“matchingRatio” | 区间撮合比例 | dataType = 0 、1、2、 5、6 时仅有 DOUBLE 类型,默认 1.0,取值 0~1.0 之间。默认和成交百分比 orderBookMatchingRatio 相等 |
不同的股票行情类型(dataType)的引擎配置参数有所差异:
-
快照行情触发回调模式“callbackForSnapshot” 参数只有在快照行情时设置;
-
是否订阅逐笔行情 “enableSubscriptionToTickQuotes” 、是否需要获取订单在行情中的位置 “outputQueuePosition” 以及前收盘价数据表 “prevClosePrice” 只有在含逐笔的行情类型中可以设置,即 dataType = 0 、5、6;
-
与行情订单薄的成交百分比 “orderBookMatchingRatio” 以及区间撮合比例 “matchingRatio” 只有在含快照的行情类型中可以设置,即 dataType = 0 、1、2、 5、6。
分红除权基本信息表说明
股票分红除权基本信息表字段说明如下:
字段 | 名称 |
---|---|
symbol | 股票代码 |
endDate | 分红年度 |
annDate | 预案公告日 |
recordDate | 股权登记日 |
exDate | 除权除息日 |
payDate | 派息日 |
divListDate | 红股上市日 |
bonusRatio | 每股送股比例 |
capitalConversion | 每股转增比例 |
afterTaxCashDiv | 每股分红(税后) |
allotPrice | 配股价格 |
allotRatio | 每股配股比例 |
融资融券
引擎配置说明
关于接口 createBacktester
的参数 config 和接口
createBacktestEngine
的参数 userConfig
的配置,除上述所需的基本参数配置,用户可以根据下表添加两融行情所需的参数配置,其中策略类型需要更改为“securityCreditAccount”,行情类型仅支持快照、分钟频以及日频。此外,融资融券策略的行情数据以及行情回调函数说明与股票的保持一致,融资融券策略支持分红除权的设置,具体的结构请参考股票中分红除权表的说明。
key | 说明 | 备注 |
---|---|---|
"strategyGroup" | 策略类型 | 必须配置,“securityCreditAccount” |
"dataType" | 行情类型 | 必须配置,INT
类型,可选值为: 1:快照 3:分钟频率 4:日频 |
“lineOfCredit” | 授信额度 | 必须配置,DOUBLE 类型,最大可融额度(融资+融券) |
“marginTradingInterestRate” | 融资利率 | 必须配置,FLOAT 类型,如 0.15 |
“secuLendingInterestRate” | 融券利率 | 必须配置,FLOAT 类型,可设置与融资利率不同的值,如 0.15 |
“maintainanceMargin” | 维持担保比例 | 必须配置,FLOAT 数组类型,如[1.45,1.3,1.2],三个元素分别为警戒线、追保线、最低线 |
“longConcentration” |
多头集中度 集中度计算公式为: stock_i 持仓市值/总持仓市值 |
FLOAT 数组类型,控制多头买入金额,如 [1.0, 0.85, 0.6], 三个元素分别控制三条警戒线。注意,最后一个元素是最高线,第一个元素是底线。 |
“shortConcentration“ |
净空头负债集中度 集中度计算公式为: stock_i 持仓市值/总持仓市值 |
FLOAT 数组类型,控制融券卖出金额,如 [1.0, 0.85, 0.6]。集中度越小,说明风险被组合降低。 |
“outputOrderinfo” | 是否输出风控日志(在订单明细表中) | BOOL 类型 true:输出 false:不输出 |
“repayWithoutMarginBuy“ | 控制是否可以用融资买入的券抵消融券卖出的券 | BOOL 类型 true:可以抵消 false:不允许抵消 |
“setLastPosition” | 设置底仓 | TABLE 类型,对于每一支选池内的股票进行底仓设置 |
-
设置底仓 ”setLastDayPosition”,引擎配置中 “setLastPosition” 的具体字段说明如下:
字段 | 类型 | 备注 |
---|---|---|
symbol | SYMBOL | 标的代码 |
marginSecuPosition | LONG | 担保品买入持仓量 |
marginSecuAvgPrice | DOUBLE | 买成交均价 |
marginPosition | LONG | 融资买入持仓量 |
marginBuyValue | DOUBLE | 融资买入金额 |
secuLendingPosition | LONG | 融券卖出持仓量 |
secuLendingSellValue | DOUBLE | 融券卖出金额 |
closePrice | DOUBLE | 收盘价 |
conversionRatio | DOUBLE | 保证金折算率 |
tradingMargin | DOUBLE | 融资保证金比例 |
lendingMargin | DOUBLE | 融券保证金比例 |
基本信息表说明
接口 createBacktester
的参数 securityReference
和接口 createBacktestEngine
的参数
securityReference
基本信息表:每日可买入卖出标的基本信息表字段说明如下:
字段 | 类型 | 备注 |
---|---|---|
symbol | SYMBOL | 标的代码 |
tradeDate | DATE | 交易日 |
symbolSource | SYMBOL | 交易所 |
securityRating | SYMBOL | 标的分类 |
marginable | BOOL | 是否是可充抵保证金证券 true:可以担保品买入 false:无法担保品买入 |
conversionRatio | FLOAT | 保证金折算率 (影响可用保证金可用余额) |
tradingMargin | FLOAT | 融资保证金比例 (影响可用保证金可用余额) |
lendingMargin | FLOAT | 融券保证金比例 (影响可用保证金可用余额) |
eligibleForMarginTrading | BOOL | 是否是可融资状态 true:可以融资买入 false:无法融资买入 |
eligibleForLending | BOOL | 是否是可融券状态 true:可以融券卖出 false:无法融券卖出 |
逐笔或逐笔+快照
行情数据结构说明
通过接口 appendQuotationMsg
向引擎中插入数据时,msg 结构
colName=`msgTime`msgType`msgBody`symbol`channelNo`seqNum colType= [TIMESTAMP, SYMBOL, BLOB,STRING,INT,LONG] messageTable=streamTable(10000000:0, colName, colType)
带有逐笔行情时,msgType 有 "entrust", "trade", "snapshot", "END"
四种类型,当使用逐笔数据合成指定频率的快照数据时,可以不使用 msgType 为 "snapshot"
的行情数据。在这种情况下,系统将根据逐笔交易数据和委托单数据生成对应频率的快照数据。不同 msgType 类型的逐笔数据表通过回放函数
replayDS
以及
replay输出得到回测所需的表messageTable
。下面为各类逐笔数据表的结构说明:
逐笔数据 entrust 和 trade 表结构:
字段 | 类型 | 备注 |
---|---|---|
symbol | SYMBOL | 股票代码 上交所以 ".XSHG" 结尾 深交所以 ".XSHE" 结尾 |
symbolSource | STRING | "XSHG"(上交所)或者 "XSHE" (深交所) |
timestamp | TIMESTAMP | 时间戳 |
sourceType | INT | 0 代表委托数据 entrust;1 代表成交数据 trade |
orderType | INT | entrust:1 市价;2 限价;3 本方最优;10 撤单(仅上交所,即上交所撤单记录在 entrust
中) trade:0 成交;1 撤单(仅深交所,即深交所撤单记录在 trade中) |
price | DOUBLE | 订单价格 |
qty | LONG | 订单数量 |
buyNo | LONG | trade 对应其原始数据; entrust 中的委托单号填充 |
sellNo | LONG | trade 对应其原始数据; entrust 中的委托单号填充 |
direction | INT | 1(买 )or 2(卖) |
channelNo | INT | 通道号 |
seqNum | LONG | 逐笔数据序号 |
snapshot 表结构:
字段 | 类型 | 备注 |
---|---|---|
symbol | SYMBOL | 股票代码 上交所以 ".XSHG" 结尾 深交所以 ".XSHE" 结尾 |
symbolSource | STRING | "XSHG"(上交所)或者 "XSHE"(深交所) |
timestamp | TIMESTAMP | 时间戳 |
lastPrice | DOUBLE | 最新成交价 |
upLimitPrice | DOUBLE | 涨停价 |
downLimitPrice | DOUBLE | 跌停价 |
totalBidQty | LONG | 区间买量 |
totalOfferQty | LONG | 区间卖量 |
bidPrice | DOUBLE[] | 委买价格列表 |
bidQty | LONG[] | 委买量列表 |
offerPrice | DOUBLE[] | 委卖价格列表 |
offerQty | LONG[] | 委卖量列表 |
signal | DOUBLE[] | 指标列表 |
seqNum | LONG | 逐笔数据序号 |
prevClosePrice | DOUBLE | 前收盘价 |
回测行情回放结束时,增加一条 msgType 为”END“的消息。如下示例:
messageTable=select top 1* from messageTable where msgTime=max(msgTime) update messageTable set msgType="END" update messageTable set msgTime=concatDateTime(msgTime.date(),16:00:00) Backtest::appendQuotationMsg(engine,messageTable)
行情回调函数说明
逐笔行情回调函数 onTick
:输入参数 msg
msg 为字典时,是以 symbol 为 key 的 tick 数据字典。其中 value 为这支股票对应的行情信息以及 initialize 中定义的指标计算结果。每个 tick 对象包含字段如下:
字段 | 类型 | 备注 |
---|---|---|
symbol | SYMBOL | 股票代码 上交所以".XSHG"结尾 深交所以".XSHE"结尾 |
symbolSource | STRING | ".XSHG"(上交所)或者".XSHE"(深交所) |
timestamp | TIMESTAMP | 时间戳 |
sourceType | INT | 0 代表委托数据entrust;1 代表成交表 trade |
orderType | INT | entrust:1 市价;2 限价;3 本方最优;10 撤单(仅上交所,即上交所撤单记录在 entrust
中) trade:0 成交;1 撤单(仅深交所,即深交所撤单记录在 trade 中) |
price | DOUBLE | 订单价格 |
qty | LONG | 订单数量 |
buyNo | LONG | trade 对应其原始数据,entrust 中的委托单号填充。 |
sellNo | LONG | trade 对应其原始数据;entrust 中的委托单号填充。 |
direction | INT | 1 (买 )or 2 (卖) |
channelNo | INT | 通道号 |
seqNum | LONG | 逐笔数据序号 |
快照行情回调函数 onSnapshot
:输入参数 msg
msg 为字典时,是以 symbol 为 key 的 snapShot 数据字典。其中 value 为这支股票对应的行情信息以及initialize 中定义的指标计算结果。每个 snapShot 对象包含字段如下:
字段 | 类型 | 备注 |
---|---|---|
symbol | SYMBOL | 股票代码 上交所以".XSHG"结尾 深交所以".XSHE"结尾 |
symbolSource | SYMBOL | 股票市场 ".XSHG"(上交所)或者".XSHE"(深交所) |
timestamp | TIMESTAMP | 时间戳 |
lastPrice | DOUBLE | 最新成交价 |
upLimitPrice | DOUBLE | 涨停板价 |
downLimitPrice | DOUBLE | 跌停板价 |
totalBidQty | LONG | 买单成交数量总和 |
totalOfferQty | LONG | 卖单成交数量总和 |
bidPrice | DOUBLE[] | 买单价格列表 |
bidQty | LONG[] | 买单数量列表 |
offerPrice | DOUBLE[] | 卖单价格列表 |
offerQty | LONG[] | 卖单数量列表 |
signal | DOUBLE[] | 指标列表 |
快照
行情数据结构说明
执行回测时输入表messageTable
的数据结构:Backtest::appendQuotationMsg(engine,messageTable)
快照行情(frequency=0,callbackForSnapshot=0)时的表结构:
colName=["symbol","symbolSource","timestamp","lastPrice","upLimitPrice", "downLimitPrice","bidPrice","bidQty", "offerPrice","offerQty","signal","prevClosePrice"] colType= ["STRING","STRING","TIMESTAMP","DOUBLE","DOUBLE","DOUBLE","LONG", "LONG","DOUBLE[]","LONG[]","DOUBLE[]","DOUBLE"] messageTable=table(10000000:0, colName, colType)
-
标的代码 symbol 必须带有交易所标识(".XSHG",".XSHE")结尾,如 600000.XSHG,不然报错。
-
上述为快照行情(frequency=0,callbackForSnapshot=0),即非快照合成 bar 行情的输入表结构。
具体字段说明如下:
字段 | 类型 | 备注 |
---|---|---|
symbol | SYMBOL | 股票代码 上交所以".XSHG"结尾 深交所以".XSHE"结尾 |
symbolSource | STRING | "XSHG"(上交所)或者"XSHE"(深交所) |
timestamp | TIMESTAMP | 时间戳 |
lastPrice | DOUBLE | 最新成交价 |
upLimitPrice | DOUBLE | 涨停价 |
downLimitPrice | DOUBLE | 跌停价 |
totalBidQty | LONG | 区间买量 |
totalOfferQty | LONG | 区间卖量 |
bidPrice | DOUBLE[] | 委买价格列表 |
bidQty | LONG[] | 委买量列表 |
offerPrice | DOUBLE[] | 委卖价格列表 |
offerQty | LONG[] | 委卖量列表 |
signal | DOUBLE[] | 指标列表 |
prevClosePrice | DOUBLE | 前收盘价 |
快照行情(frequency>0,callbackForSnapshot=1或者2)时的表结构:
colName=["symbol","symbolSource","timestamp","lastPrice","upLimitPrice", "downLimitPrice","totalBidQty","totalOfferQty","bidPrice","bidQty", "offerPrice","offerQty","signal","prevClosePrice","open", "close","low","high","volume"] colType= ["STRING","STRING","TIMESTAMP","DOUBLE","DOUBLE","DOUBLE","LONG", "LONG","DOUBLE[]","LONG[]","DOUBLE[]","LONG[]","DOUBLE[]","DOUBLE",DOUBLE, DOUBLE,DOUBLE,DOUBLE,LONG] messageTable=table(10000000:0, colName, colType)
快照合成 bar 行情时(frequency>0 且 callbackForSnapshot=1 或者 2), 还需要增加五个字段:"open", "close", "low", "high", "volume"。
具体字段说明如下:
字段 | 类型 | 备注 |
---|---|---|
symbol | SYMBOL | 股票代码 上交所以 ".XSHG" 结尾 深交所以 ".XSHE" 结尾 |
symbolSource | STRING | "XSHG"(上交所)或者 "XSHE"(深交所) |
timestamp | TIMESTAMP | 时间戳 |
lastPrice | DOUBLE | 最新成交价 |
upLimitPrice | DOUBLE | 涨停价 |
downLimitPrice | DOUBLE | 跌停价 |
totalBidQty | LONG | 区间买量 |
totalOfferQty | LONG | 区间卖量 |
bidPrice | DOUBLE[] | 委买价格列表 |
bidQty | LONG[] | 委买量列表 |
offerPrice | DOUBLE[] | 委卖价格列表 |
offerQty | LONG[] | 委卖量列表 |
signal | DOUBLE[] | 指标列表 |
prevClosePrice | DOUBLE | 前收盘价 |
open | DOUBLE | 合成 bar 行情的开盘价 |
close | DOUBLE | 合成 bar 行情的收盘价 |
low | DOUBLE | 合成 bar 行情的最低价 |
high | DOUBLE | 合成 bar 行情的最高价 |
volume | LONG | 合成 bar 行情的成交量 |
回测行情回放结束时,发送一条 symbol 为 “END” 的消息:
messageTable=select top 1* from messageTable where msgTime=max(msgTime) update messageTable set msgType="END" update messageTable set msgTime=concatDateTime(msgTime.date(),16:00:00) Backtest::appendQuotationMsg(engine,messageTable)
行情回调函数说明
快照行情回调函数 onSnapshot
:输入参数 msg
msg 为字典时,是以 symbol为 key 的 snapShot 数据字典。其中 value 为这支股票对应的行情信息。每个 snapShot 对象包含字段如下:
名称 | 类型 | 含义 |
---|---|---|
symbol | SYMBOL | 股票代码 上交所以".XSHG"结尾 深交所以".XSHE"结尾 |
symbolSource | STRING | ".XSHG"(上交所)或者".XSHE"(深交所) |
timestamp | TIMESTAMP | 时间戳 |
lastPrice | DOUBLE | 最新成交价 |
upLimitPrice | DOUBLE | 涨停板价 |
downLimitPrice | DOUBLE | 跌停板价 |
totalBidQty | LONG | 买单成交数量总和 |
totalOfferQty | LONG | 卖单成交数量总和 |
bidPrice | DOUBLE[] | 买单价格列表 |
bidQty | LONG[] | 买单数量列表 |
offerPrice | DOUBLE[] | 卖单价格列表 |
offerQty | LONG[] | 卖单数量列表 |
signal | DOUBLE[] | 其他 |
open | DOUBLE | 合成 bar 行情的开盘价 (dataType = 1 或者 2,callbackForSnapshot = 1或者2时才有) |
close | DOUBLE | 合成 bar 行情的收盘价 (dataType = 1或者 2,callbackForSnapshot = 1或者 2 时才有) |
low | DOUBLE | 合成 bar 行情的最低价 (dataType = 1 或者 2,callbackForSnapshot = 1或者 2 时才有) |
high | DOUBLE | 合成 bar 行情的最高价 (dataType = 1 或者 2,callbackForSnapshot = 1或者 2 时才有) |
volume | LONG | 合成 bar 行情的成交量 (dataType = 1 或者 2,callbackForSnapshot = 1 或者 2 时才有) |
-
快照合成 bar 行情时(frequency > 0 且 callbackForSnapshot = 1 或者 2), 输入参数 msg 还需要增加五个字段:"open", "close","low","high","volume"。
-
当 callbackForSnapshot = 1 或 2 时,还需回调 onBar 函数,输入参数 msg 的数据结构如下。
k线行情回调函数 onBar
:输入参数 msg
msg 为字典时,是以 symbol 为 key 的分钟频率的 K 线数据字典。每个 K 线包含字段如下:
字段 | 类型 | 备注 |
---|---|---|
symbol | SYMBOL | 股票代码 上交所以".XSHG"结尾 深交所以".XSHE"结尾 |
tradeTime | TIMESTAMP | 交易日 |
open | DOUBLE | 开盘价 |
low | DOUBLE | 最低价 |
high | DOUBLE | 最高价 |
close | DOUBLE | 收盘价 |
volume | LONG | 成交量 |
amount | DOUBLE | 成交额 |
upLimitPrice | DOUBLE | 涨停价 |
downLimitPrice | DOUBLE | 跌停价 |
prevClosePrice | DOUBLE | 前收盘价 |
signal | DOUBLE[] | 其他 |
快照+逐笔成交明细
行情数据结构说明
快照+逐笔成交明细行情(frequency=0,callbackForSnapshot=0)时的表结构:
colName=["symbol","symbolSource","timestamp","lastPrice","upLimitPrice", "downLimitPrice","totalBidQty","totalOfferQty","bidPrice","bidQty", "offerPrice","offerQty","tradePrice","tradeQty","signal","prevClosePrice","open", "close","low","high","volume"] colType= ["STRING","STRING","TIMESTAMP","DOUBLE","DOUBLE","DOUBLE","LONG", "LONG","DOUBLE[]","LONG[]","DOUBLE[]","LONG[]","DOUBLE[]","LONG[]","DOUBLE[]","DOUBLE","DOUBLE","DOUBLE", "DOUBLE","DOUBLE","LONG"] messageTable=table(10000000:0, colName, colType)
-
标的代码symbol必须带有交易所标识(".XSHG",".XSHE")结尾,如 600000.XSHG,不然报错。
-
上述为快照+逐笔成交明细行情(frequency=0,callbackForSnapshot=0),即非快照合成bar行情的输入表结构。
具体字段说明如下:(与快照行情比增加tradePrice 和 tradeQty 两个字段)
字段 | 类型 | 备注 |
---|---|---|
symbol | SYMBOL | 股票代码 上交所以 ".XSHG" 结尾 深交所以 ".XSHE" 结尾 |
symbolSource | STRING | "XSHG"(上交所)或者"XSHE"(深交所) |
timestamp | TIMESTAMP | 时间戳 |
lastPrice | DOUBLE | 最新成交价 |
upLimitPrice | DOUBLE | 涨停价 |
downLimitPrice | DOUBLE | 跌停价 |
totalBidQty | LONG | 区间买量 |
totalOfferQty | LONG | 区间卖量 |
bidPrice | DOUBLE[] | 委买价格列表 |
bidQty | LONG[] | 委买量列表 |
offerPrice | DOUBLE[] | 委卖价格列表 |
offerQty | LONG[] | 委卖量列表 |
tradePrice | DOUBLE[] | 成交价格 |
tradeQty | LONG[] | 成交数量 |
signal | DOUBLE[] | 指标列表 |
prevClosePrice | DOUBLE | 前收盘价 |
快照+逐笔成交明细行情(frequency>0,callbackForSnapshot=1或者2)时的表结构:
colName=["symbol","symbolSource","timestamp","lastPrice","upLimitPrice", "downLimitPrice","totalBidQty","totalOfferQty","bidPrice","bidQty", "offerPrice","offerQty","tradePrice","tradeQty","signal","prevClosePrice","open", "close","low","high","volume"] colType= ["STRING","STRING","TIMESTAMP","DOUBLE","DOUBLE","DOUBLE","LONG", "LONG","DOUBLE[]","LONG[]","DOUBLE[]","LONG[]","DOUBLE[]","LONG[]","DOUBLE[]","DOUBLE",DOUBLE, DOUBLE,DOUBLE,DOUBLE,LONG] messageTable=table(10000000:0, colName, colType)
快照合成bar行情时(frequency>0且callbackForSnapshot=1或者2), 还需要增加五个字段:"open", "close","low","high","volume"。
具体字段说明如下:(与快照行情比增加tradePrice 和 tradeQty 两个字段)
字段 | 类型 | 备注 |
---|---|---|
symbol | SYMBOL | 股票代码 上交所以 ".XSHG" 结尾 深交所以 ".XSHE" 结尾 |
symbolSource | STRING | "XSHG"(上交所)或者 "XSHE"(深交所) |
timestamp | TIMESTAMP | 时间戳 |
lastPrice | DOUBLE | 最新成交价 |
upLimitPrice | DOUBLE | 涨停价 |
downLimitPrice | DOUBLE | 跌停价 |
totalBidQty | LONG | 区间买量 |
totalOfferQty | LONG | 区间卖量 |
bidPrice | DOUBLE[] | 委买价格列表 |
bidQty | LONG[] | 委买量列表 |
offerPrice | DOUBLE[] | 委卖价格列表 |
offerQty | LONG[] | 委卖量列表 |
tradePrice | DOUBLE[] | 成交价格 |
tradeQty | LONG[] | 成交数量 |
signal | DOUBLE[] | 指标列表 |
prevClosePrice | DOUBLE | 前收盘价 |
open | DOUBLE | 合成bar行情的开盘价 |
close | DOUBLE | 合成bar行情的收盘价 |
low | DOUBLE | 合成bar行情的最低价 |
high | DOUBLE | 合成bar行情的最高价 |
volume | LONG | 合成bar行情的成交量 |
回测行情回放结束时,发送一条symbol为“END”的消息:
messageTable=select top 1* from messageTable where msgTime=max(msgTime) update messageTable set msgType="END" update messageTable set msgTime=concatDateTime(msgTime.date(),16:00:00) Backtest::appendQuotationMsg(engine,messageTable)
行情回调函数说明
快照行情回调函数 onSnapshot
:输入参数 msg
msg 为字典时,是以 symbol为 key 的 snapShot数据字典。其中 value 为这支股票对应的行情信息。每个 snapShot 对象包含字段如下:
字段 | 类型 | 备注 |
---|---|---|
symbol | SYMBOL | 股票代码 上交所以".XSHG"结尾 深交所以".XSHE"结尾 |
symbolSource | STRING | ".XSHG"(上交所)或者".XSHE"(深交所) |
timestamp | TIMESTAMP | 时间戳 |
lastPrice | DOUBLE | 最新成交价 |
upLimitPrice | DOUBLE | 涨停板价 |
downLimitPrice | DOUBLE | 跌停板价 |
totalBidQty | LONG | 买单成交数量总和 |
totalOfferQty | LONG | 卖单成交数量总和 |
bidPrice | DOUBLE[] | 买单价格列表 |
bidQty | LONG[] | 买单数量列表 |
offerPrice | DOUBLE[] | 卖单价格列表 |
offerQty | LONG[] | 卖单数量列表 |
signal | DOUBLE[] | 其他 |
open | DOUBLE | 合成 bar 行情的开盘价 (dataType = 1 或者 2,callbackForSnapshot = 1 或者 2 时才有) |
close | DOUBLE | 合成 bar 行情的收盘价 (dataType = 1 或者 2,callbackForSnapshot = 1 或者 2 时 才有) |
low | DOUBLE | 合成 bar 行情的最低价 (dataType = 1 或者 2,callbackForSnapshot = 1 或者 2 时才有) |
high | DOUBLE | 合成 bar 行情的最高价 (dataType = 1 或者 2,callbackForSnapshot = 1 或者 2 时才有) |
volume | LONG | 合成 bar 行情的成交量 (dataType = 1 或者 2,callbackForSnapshot = 1 或者 2 时才有) |
-
快照合成 bar 行情时(frequency > 0 且 callbackForSnapshot = 1 或者 2), 输入参数 msg 还需要增加五个字段:"open", "close","low","high","volume"。
-
当 callbackForSnapshot = 1 或 2 时,还需回调 onBar 函数,输入参数 msg 的数据结构如下。
k线行情回调函数 onBar
:输入参数 msg
msg 为字典时,是以 symbol 为 key 的分钟频率的 K 线数据字典。每个 K 线包含字段如下:
字段 | 类型 | 备注 |
---|---|---|
symbol | SYMBOL | 股票代码 上交所以".XSHG"结尾 深交所以".XSHE"结尾 |
tradeTime | TIMESTAMP | 交易日 |
open | DOUBLE | 开盘价 |
low | DOUBLE | 最低价 |
high | DOUBLE | 最高价 |
close | DOUBLE | 收盘价 |
volume | LONG | 成交量 |
amount | DOUBLE | 成交额 |
upLimitPrice | DOUBLE | 涨停价 |
downLimitPrice | DOUBLE | 跌停价 |
prevClosePrice | DOUBLE | 前收盘价 |
signal | DOUBLE[] | 其他 |
分钟频或日频
行情数据结构说明
执行回测时输入表messageTable
的数据结构:Backtest::appendQuotationMsg(engine,messageTable)
colName=`symbol`tradeTime`open`low`high`close`volume`amount`upLimitPrice`downLimitPrice`prevClosePrice`signal colType=[SYMBOL,TIMESTAMP,DOUBLE,DOUBLE,DOUBLE,DOUBLE,LONG,DOUBLE,DOUBLE,DOUBLE,DOUBLE,DOUBLE[]] messageTable=table(10000000:0, colName, colType)
分钟频行情数据表结构:
字段 | 类型 | 备注 |
---|---|---|
symbol | SYMBOL | 股票代码 |
tradeTime | TIMESTAMP | 时间戳 |
open | DOUBLE | 开盘价 |
low | DOUBLE | 最低价 |
high | DOUBLE | 最高价 |
close | DOUBLE | 收盘价 |
volume | LONG | 成交量 |
amount | DOUBLE | 成交金额 |
upLimitPrice | DOUBLE | 涨停价 |
downLimitPrice | DOUBLE | 跌停价 |
prevClosePrice | DOUBLE | 前收盘价 |
signal | DOUBLE[] | 其他字段列表 |
回测行情回放结束时,发送一条symbol为“END”的消息:
messageTable=select top 1* from messageTable where msgTime=max(msgTime) update messageTable set msgType="END" update messageTable set msgTime=concatDateTime(msgTime.date(),16:00:00) Backtest::appendQuotationMsg(engine,messageTable)
行情回调函数说明
K 线行情回调函数 onBar
:输入参数 msg
msg 为字典时,是以 symbol 为 key 的分钟频率的 K 线数据字典。每个 K 线包含字段如下:
字段 | 类型 | 备注 |
---|---|---|
symbol | SYMBOL | 股票代码 上交所以".XSHG"结尾 深交所以".XSHE"结尾 |
tradeTime | TIMESTAMP | 交易日 |
open | DOUBLE | 开盘价 |
low | DOUBLE | 最低价 |
high | DOUBLE | 最高价 |
close | DOUBLE | 收盘价 |
volume | LONG | 成交量 |
amount | DOUBLE | 成交额 |
upLimitPrice | DOUBLE | 涨停价 |
downLimitPrice | DOUBLE | 跌停价 |
prevClosePrice | DOUBLE | 前收盘价 |
signal | DOUBLE[] | 其他 |
逐笔(宽表)
行情数据结构说明
执行回测时输入表 messageTable 结构:
Backtest::appendQuotationMsg(engine,messageTable)
colName=[`symbol,`symbolSource,`timestamp,`sourceType,`orderType,`price,`qty,`buyNo, `sellNo,`direction,`channelNo,`seqNum,`reserve1] colType=["SYMBOL","INT","TIMESTAMP","INT","INT","DOUBLE","LONG","LONG", "LONG","INT","INT","LONG","DOUBLE"] messageTable=table(1000:0,colName,colType)
逐笔(宽表)行情数据表结构:
字段 | 类型 | 备注 |
---|---|---|
symbol | SYMBOL | 股票代码 上交所以 ".XSHG" 结尾 深交所以 ".XSHE" 结尾 |
symbolSource | INT | 0(上交所)或者1(深交所) |
timestamp | TIMESTAMP | 时间戳 |
sourceType | INT | 0 代表委托数据entrust ;1 代表成交表 trade |
orderType | INT |
trade:0 成交;1 撤单(仅深交所,即深交所撤单记录在 trade中) |
price | DOUBLE | 订单价格 |
qty | LONG | 订单数量 |
buyNo | LONG | trade 对应其原始数据;entrust 中的委托单号填充, |
sellNo | LONG | trade 对应其原始数据;entrust 中的委托单号填充, |
direction | INT | 1(买 )or 2(卖) |
channelNo | INT | 通道号 |
seqNum | LONG | 逐笔数据序号 |
reserve1 | DOUBLE | 预留字段1(宽表) |
与逐笔数据相比,逐笔(宽表)增加了”reserve1“ 这个预留字段。
回测行情回放结束时,增加一条msgType为”END“的消息。如下示例:
messageTable=select top 1* from messageTable where msgTime=max(msgTime) update messageTable set msgType="END" update messageTable set msgTime=concatDateTime(msgTime.date(),16:00:00) Backtest::appendQuotationMsg(engine,messageTable)
行情回调函数说明
逐笔行情回调函数 onTick
:输入参数 msg
msg 为字典时,是以 symbol 为 key 的 tick 数据字典。其中 value 为这支股票对应的行情信息以及initialize 中定义的指标计算结果。每个 tick 对象包含字段如下:
字段 | 类型 | 备注 |
---|---|---|
symbol | SYMBOL | 股票代码 上交所以".XSHG"结尾 深交所以".XSHE"结尾 |
symbolSource | STRING | ".XSHG"(上交所)或者".XSHE"(深交所) |
timestamp | TIMESTAMP | 时间戳 |
sourceType | INT | 0代表委托数据entrust ;1代表成交表 trade |
orderType | INT | entrust :1市价;2限价;3本方最优;10撤单(仅上交所,即上交所撤单记录在entrust 中)trade:0成交;1撤单(仅深交所,即深交所撤单记录在 trade中) |
price | DOUBLE | 订单价格 |
qty | LONG | 订单数量 |
buyNo | LONG | trade 对应其原始数据;entrust 中的委托单号填充, |
sellNo | LONG | trade 对应其原始数据;entrust 中的委托单号填充, |
direction | INT | 1(买 )or 2(卖) |
channelNo | INT | 通道号 |
seqNum | LONG | 逐笔数据序号 |
reserve1 | DOUBLE | 预留字段1(宽表) |
快照行情回调函数 onSnapshot
:输入参数 msg
msg 为字典时,是以 symbol 为 key 的 snapShot 数据字典。其中 value 为这支股票对应的行情信息以及initialize 中定义的指标计算结果。每个 snapShot 对象包含字段如下:
字段 | 类型 | 备注 |
---|---|---|
symbol | SYMBOL | 股票代码 上交所以".XSHG"结尾 深交所以".XSHE"结尾 |
symbolSource | STRING | ".XSHG"(上交所)或者".XSHE"(深交所) |
timestamp | TIMESTAMP | 时间戳 |
sourceType | INT | 0代表委托数据entrust ;1代表成交表 trade |
orderType | INT | entrust :1市价;2限价;3本方最优;10撤单(仅上交所,即上交所撤单记录在entrust 中)trade:0成交;1撤单(仅深交所,即深交所撤单记录在 trade中) |
price | DOUBLE | 订单价格 |
qty | LONG | 订单数量 |
buyNo | LONG | trade 对应其原始数据;entrust 中的委托单号填充, |
sellNo | LONG | trade 对应其原始数据;entrust 中的委托单号填充, |
direction | INT | 1(买 )or 2(卖) |
channelNo | INT | 通道号 |
seqNum | LONG | 逐笔数据序号 |
reserve1 | DOUBLE | 预留字段1(宽表) |
逐笔+快照(宽表)
行情数据结构说明
执行回测时输入表messageTable
的数据结构:Backtest::appendQuotationMsg(engine,messageTable)
colName=[`symbol,`symbolSource,`timestamp,`sourceType,`orderType,`price,`qty,`buyNo, `sellNo,`direction,`channelNo,`seqNum,"lastPrice","upLimitPrice", "downLimitPrice","totalBidQty","totalOfferQty","bidPrice","bidQty", "offerPrice","offerQty","signal","prevClosePrice"] colType=["SYMBOL","STRING","TIMESTAMP","INT","INT","DOUBLE","LONG","LONG", "LONG","INT","INT","LONG","DOUBLE","DOUBLE","DOUBLE","LONG", "LONG","DOUBLE[]","LONG[]","DOUBLE[]","LONG[]","DOUBLE[]","DOUBLE"] messageTable=table(1000:0,colName,colType)
逐笔+快照(宽表)行情数据表结构:
字段 | 类型 | 备注 |
---|---|---|
symbol | SYMBOL | 股票代码 上交所以".XSHG"结尾 深交所以".XSHE"结尾 |
symbolSource | INT | 0(上交所)或者1(深交所) |
timestamp | TIMESTAMP | 时间戳 |
sourceType | INT | 0 代表委托数据 entrust;1 代表成交数据 trade;2 代表快照数据snapshot |
orderType | INT | entrust:1 市价;2 限价;3 本方最优;10 撤单(仅上交所,即上交所撤单记录在 entrust
中) trade:0 成交;1 撤单(仅深交所,即深交所撤单记录在 trade中) |
price | DOUBLE | 订单价格 |
qty | LONG | 订单数量 |
buyNo | LONG | trade 对应其原始数据; entrust 中的委托单号填充 |
sellNo | LONG | trade 对应其原始数据; entrust 中的委托单号填充 |
direction | INT | 1(买 )或者 2(卖) |
channelNo | INT | 通道号 |
seqNum | LONG | 逐笔数据序号 |
lastPrice | DOUBLE | 最新成交价 |
upLimitPrice | DOUBLE | 涨停价 |
downLimitPrice | DOUBLE | 跌停价 |
totalBidQty | LONG | 区间买量 |
totalOfferQty | LONG | 区间卖量 |
bidPrice | DOUBLE[] | 委买价格列表 |
bidQty | LONG[] | 委买量列表 |
offerPrice | DOUBLE[] | 委卖价格列表 |
offerQty | LONG[] | 委卖量列表 |
prevClosePrice | DOUBLE | 前收盘价 |
reserve1 | DOUBLE | 预留字段1(宽表) |
reserve2 | DOUBLE | 预留字段2(宽表) |
回测行情回放结束时,发送一条 symbol 为 “END” 的消息:
messageTable=select top 1* from messageTable where msgTime=max(msgTime) update messageTable set msgType="END" update messageTable set msgTime=concatDateTime(msgTime.date(),16:00:00) Backtest::appendQuotationMsg(engine,messageTable)
行情回调函数说明
逐笔行情回调函数 onTick
:输入参数 msg
msg 为字典时,是以 symbol 为 key 的 tick 数据字典。其中 value 为这支股票对应的行情信息以及initialize 中定义的指标计算结果。每个 tick 对象包含字段如下:
字段 | 类型 | 备注 |
---|---|---|
symbol | SYMBOL | 股票代码 上交所以".XSHG"结尾 深交所以".XSHE"结尾 |
symbolSource | STRING | ".XSHG"(上交所)或者".XSHE"(深交所) |
timestamp | TIMESTAMP | 时间戳 |
sourceType | INT | 0代表委托数据entrust ;1代表成交表
trade,2代码snapshot |
orderType | INT | entrust :1 市价;2 限价;3 本方最优;10
撤单(仅上交所,即上交所撤单记录在entrust 中)trade:0 成交;1 撤单(仅深交所,即深交所撤单记录在 trade中) |
price | DOUBLE | 订单价格 |
qty | LONG | 订单数量 |
buyNo | LONG | trade 对应其原始数据;entrust 中的委托单号填充, |
sellNo | LONG | trade 对应其原始数据;entrust 中的委托单号填充, |
direction | INT | 1(买 )or 2(卖) |
channelNo | INT | 通道号 |
seqNum | LONG | 逐笔数据序号 |
lastPrice | DOUBLE | 最新成交价 |
upLimitPrice | DOUBLE | 涨停价 |
downLimitPrice | DOUBLE | 跌停价 |
totalBidQty | LONG | 区间买量 |
totalOfferQty | LONG | 区间卖量 |
bidPrice | DOUBLE[] | 委买价格列表 |
bidQty | LONG[] | 委买量列表 |
offerPrice | DOUBLE[] | 委卖价格列表 |
offerQty | LONG[] | 委卖量列表 |
prevClosePrice | DOUBLE | 前收盘价 |
reserve1 | DOUBLE | 预留字段 1(宽表) |
reserve2 | DOUBLE | 预留字段 2(宽表) |
快照行情回调函数 onSnapshot
:输入参数 msg
msg 为字典时,是以 symbol 为 key 的 snapShot 数据字典。其中 value 为这支股票对应的行情信息以及initialize 中定义的指标计算结果。每个 snapShot 对象包含字段如下:
字段 | 类型 | 备注 |
---|---|---|
symbol | SYMBOL | 股票代码 上交所以".XSHG"结尾 深交所以".XSHE"结尾 |
symbolSource | STRING | ".XSHG"(上交所)或者".XSHE"(深交所) |
timestamp | TIMESTAMP | 时间戳 |
sourceType | INT | 0代表委托数据entrust ;1代表成交表
trade,2代码snapshot |
orderType | INT | entrust :1 市价;2 限价;3 本方最优;10
撤单(仅上交所,即上交所撤单记录在entrust 中)trade:0 成交;1 撤单(仅深交所,即深交所撤单记录在 trade中) |
price | DOUBLE | 订单价格 |
qty | LONG | 订单数量 |
buyNo | LONG | trade 对应其原始数据;entrust 中的委托单号填充, |
sellNo | LONG | trade 对应其原始数据;entrust 中的委托单号填充, |
direction | INT | 1(买 )or 2(卖) |
channelNo | INT | 通道号 |
seqNum | LONG | 逐笔数据序号 |
lastPrice | DOUBLE | 最新成交价 |
upLimitPrice | DOUBLE | 涨停价 |
downLimitPrice | DOUBLE | 跌停价 |
totalBidQty | LONG | 区间买量 |
totalOfferQty | LONG | 区间卖量 |
bidPrice | DOUBLE[] | 委买价格列表 |
bidQty | LONG[] | 委买量列表 |
offerPrice | DOUBLE[] | 委卖价格列表 |
offerQty | LONG[] | 委卖量列表 |
prevClosePrice | DOUBLE | 前收盘价 |
reserve1 | DOUBLE | 预留字段 1(宽表) |
reserve2 | DOUBLE | 预留字段 2(宽表) |