期货

回测平台支持的期货资产行情数据类型包括:快照,分钟频率,日频。

引擎配置说明:

接口 createBacktester 的参数 config 和接口 createBacktestEngine 的参数 userConfig 的配置可参考下表:userConfig 参数的配置:
userConfig = dict(STRING, ANY)
key 说明 备注
"startDate" 开始日期 必须配置,DATE 类型

例如 “2020.01.01”

"endDate" 结束日期 必须配置,DATE 类型

例如 “2020.01.01”

"strategyGroup" 策略类型 必须配置,“futures”
"cash" 初始资金 必须配置,DOUBLE 类型
"commission" 手续费 必须配置,DOUBLE 类型
"dataType" 行情类型 必须配置,INT 类型,可选值为:

1:快照

3:分钟频

4:日频

“frequency” 快照数据以指定频率合成 bar dataType = 1 仅有。

INT 类型, 默认为 0

  • 当 frequency = 0 时,该参数无效。

  • 当 dataType=1 且 frequency > 0 时,引擎内部合成 frequency 频率的 bar 行情触发 onBar 回调函数

"msgAsTable" 行情的数据格式 BOOL 类型,默认为 false

false:字典

true:表(只能通过接口createBacktestEngine 创建引擎)

“matchingMode“ 订单撮合模式 INT 类型,根据行情类型模式不同,可选值为:

1:

  • 日频:以收盘价撮合订单

  • 分钟频:行情时间大于订单时间时撮合订单

2:

  • 日频:以开盘价撮合订单

  • 分钟频:行情时间等于订单时间时以当前行情的收盘价撮合订单,后续未完成订单撮合订单同 1

3:以委托价格成交

当 dataType=1 时,该参数设置为 1 或 2 时无效,默认按模拟撮合引擎撮合订单

“benchmark” 基准标的 STRING 或 SYMBOL 类型

例如 ”A2305“ ,在接口getReturnSummary 中使用

"latency" 订单延时 INT 类型,单位为毫秒,用来模拟用户订单从发出到被处理的时延。
“maintenanceMargin” 维保比例 DOUBLE 类型,默认 1.0,取值0~1.0 之间
”enableAlgoOrder” 是否开启算法订单 BOOL 类型,目前只支持期货

true:开启

false:不开启

”futuresType“ 期货品种类型,如股指期货,商品期货等 STRING 或 SYMBOL 类型

目前只支持期货

“enableIndicatorOptimize” 是否开启指标优化 BOOL 类型,默认为 false

true:开启

false:不开启

“isBacktestMode“ 是否为回测模式 BOOL 类型,默认为 true

true:回测模式

false:模拟交易模式

”dataRetentionWindow“ 开始指标优化时数据保留的窗口 STRING 类型或 INT 类型。 当 enableIndicatorOptimize = true 时,该参数生效。
  • isBacktestMode = true 时,默认 “ALL ,可设置为:

    • “ALL“:全部数据保留

    • “20d”:支持按天保留数据,即交易日天数,如 “20d” 代表 20 个交易日

    • “None”:不保留数据

    • 20:支持按条数保留数据,如 20 代表每个 symbol 保留最新的 20 条

  • isBacktestMode = false 时,无需设置

”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:表示只触发 onSnapshot

1 :表示既触发 onSnpshot 又触发 onBar

2 :表示只触发 onBar

默认为 0,当 frequency > 0 时,必须触发 onBar 回调函数,即 callbackForSnapshot = 1 或者 2

“orderBookMatchingRatio” 与行情订单薄的成交百分比 dataType = 1 仅有。

DOUBLE 类型,默认 1.0,取值 0~1.0 之间

“matchingRatio” 区间撮合比例 dataType = 1 仅有。

DOUBLE 类型,默认 1.0,取值0~1.0 之间。默认和成交百分比 orderBookMatchingRatio 相等

注: 不同的期货行情类型(dataType)的引擎配置参数有所差异:

快照行情触发回调模式“callbackForSnapshot” 、与行情订单薄的成交百分比 “orderBookMatchingRatio” 以及区间撮合比例 “matchingRatio” 只有在快照的行情类型中可以设置,即 dataType = 1。

基本信息表说明

接口 createBacktester 的参数 securityReference 和接口 createBacktestEngine 的参数 securityReference 的基本信息表字段可参考下表:

字段 类型 名称
symbol SYMBOL或STRING 期货合约代码
multiplier DOUBLE 合约乘数
marginRatio DOUBLE 保证金比率
tradeUnit DOUBLE 合约单位
priceUnit DOUBLE 报价单位
priceTick DOUBLE 价格最小变动单位
commission DOUBLE 费用
deliveryCommissionMode INT 计费方式:

1:费用*手数

2:费用*金额

快照

行情数据结构说明

通过接口 appendQuotationMsg 向引擎中插入数据时,msg 结构:

执行回测时输入表 messageTable 结构: Backtest::appendQuotationMsg(engine,messamessageTable)

(1)快照行情(frequency = 0,callbackForSnapshot = 0)时的表结构:

colName=["symbol","symbolSource","timestamp","tradingDay",lastPrice","upLimitPrice",
        "downLimitPrice","totalBidQty","totalOfferQty","bidPrice","bidQty","offerPrice",
        "offerQty","highPrice","lowPrice","signal","prevClosePrice","settlementPrice",
        "prevSettlementPrice"]
colType= ["STRING","STRING","TIMESTAMP","DATE",DOUBLE","DOUBLE","DOUBLE","LONG","LONG",
        "DOUBLE[]","LONG[]","DOUBLE[]","LONG[]","DOUBLE[]","DOUBLE","DOUBLE","DOUBLE",
        "DOUBLE","DOUBLE"]
messageTable=table(10000000:0, colName, colType)
注: 上述为快照行情(callbackForSnapshot = 0),即非快照合成 bar 行情的输入表结构。

具体数据字段如下:

字段 类型 备注
symbol SYMBOL 期货代码
symbolSource STRING 交易所
timestamp TIMESTAMP 时间戳
tradingDay DATE 交易日/结算日期
lastPrice DOUBLE 最新成交价
upLimitPrice DOUBLE 涨停价
downLimitPrice DOUBLE 跌停价
totalBidQty LONG 区间成交买数量
totalOfferQty LONG 区间成交卖数量
bidPrice DOUBLE[] 委托买价
bidQty LONG[] 委托买量
offerPrice DOUBLE[] 委托卖价
offerQty LONG[] 委托卖价
highPrice DOUBLE 最高价
lowPrice DOUBLE 最低价
signal DOUBLE[] 其他字段列表
prevClosePrice DOUBLE 前收盘价
settlementPrice DOUBLE 结算价
prevSettlementPrice DOUBLE 前结算价

(2) 快照行情(frequency > 0,callbackForSnapshot = 1 或者 2)时的表结构:

colName=["symbol","symbolSource","timestamp","tradingDay",lastPrice","upLimitPrice",
        "downLimitPrice","totalBidQty","totalOfferQty","bidPrice","bidQty","offerPrice",
        "offerQty","highPrice","lowPrice","signal","prevClosePrice","settlementPrice",
        "prevSettlementPrice","open", "close","low","high","volume"]
colType= ["STRING","STRING","TIMESTAMP","DATE",DOUBLE","DOUBLE","DOUBLE","LONG","LONG",
        "DOUBLE[]","LONG[]","DOUBLE[]","LONG[]","DOUBLE[]","DOUBLE","DOUBLE","DOUBLE",
        "DOUBLE","DOUBLE","DOUBLE","DOUBLE",
        "DOUBLE","DOUBLE","LONG"]
messageTable=table(10000000:0, colName, colType)
注: 快照合成 bar 行情时(callbackForSnapshot = 1 或者 2),还需要增加五个字段:"open", "close","low","high","volume"。

快照行情数据表结构:

字段 类型 备注
symbol SYMBOL 期货代码
symbolSource STRING 交易所
timestamp TIMESTAMP 时间戳
tradingDay DATE 交易日/结算日期
lastPrice DOUBLE 最新成交价
upLimitPrice DOUBLE 涨停价
downLimitPrice DOUBLE 跌停价
totalBidQty LONG 区间成交买数量
totalOfferQty LONG 区间成交卖数量
bidPrice DOUBLE[] 委托买价
bidQty LONG[] 委托买量
offerPrice DOUBLE[] 委托卖价
offerQty LONG[] 委托卖价
highPrice DOUBLE 最高价
lowPrice DOUBLE 最低价
signal DOUBLE[] 其他字段列表
prevClosePrice DOUBLE 前收盘价
settlementPrice DOUBLE 结算价
prevSettlementPrice 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 数据字典,每个 snapShot 对象包含字段如下:

字段 类型 备注
symbol SYMBOL 期货代码
symbolSource STRING 交易所
timestamp TIMESTAMP 时间戳
tradingDay DATE 交易日/结算日期
lastPrice DOUBLE 最新成交价
upLimitPrice DOUBLE 涨停价
downLimitPrice DOUBLE 跌停价
totalBidQty LONG 区间成交买数量
totalOfferQty LONG 区间成交卖数量
bidPrice DOUBLE[] 委托买价
bidQty LONG[] 委托买量
offerPrice DOUBLE[] 委托卖价
offerQty LONG[] 委托卖价
highPrice DOUBLE 最高价
lowPrice DOUBLE 最低价
signal DOUBLE[] 其他字段列表
prevClosePrice DOUBLE 前收盘价
settlementPrice DOUBLE 结算价
prevSettlementPrice 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 时,还需回调 onBar 函数,输入参数 msg 的数据结构如下。

k 线行情回调函数 onBar:输入参数 msg

msg 是字典时,是 以 symbol 为 key 值的分钟频率的 K 线数据字典,每个 K 线包含字段如下:

字段 类型 备注
symbol SYMBOL 期货代码
symbolSource STRING 交易所
timestamp TIMESTAMP 时间戳
tradingDay DATE 交易日/结算日期
lastPrice DOUBLE 最新成交价
upLimitPrice DOUBLE 涨停价
downLimitPrice DOUBLE 跌停价
totalBidQty LONG 区间成交买数量
totalOfferQty LONG 区间成交卖数量
bidPrice DOUBLE[] 委托买价
bidQty LONG[] 委托买量
offerPrice DOUBLE[] 委托卖价
offerQty LONG[] 委托卖价
highPrice DOUBLE 最高价
lowPrice DOUBLE 最低价
signal DOUBLE[] 其他字段列表
prevClosePrice DOUBLE 前收盘价
settlementPrice DOUBLE 结算价
prevSettlementPrice DOUBLE 前结算价

分钟频或日频

行情数据结构说明

通过接口 appendQuotationMsg 向引擎中插入数据时,msg 结构:

执行回测时输入表 messageTable 结构: Backtest::appendQuotationMsg(engine,messamessageTable)

colName=["symbol","symbolSource","tradeTime","tradingDay","open","low","high","close",
"volume","amount","upLimitPrice","downLimitPrice","signal","prevClosePrice",
"settlementPrice","prevSettlementPrice"]
colType=[SYMBOL,SYMBOL,TIMESTAMP,DATE,DOUBLE,DOUBLE,DOUBLE,DOUBLE,LONG,DOUBLE,
DOUBLE,DOUBLE,DOUBLE[],DOUBLE,DOUBLE,DOUBLE]
messageTable=table(10000000:0, colName, colType)

分钟频行情数据表结构:

字段 类型 备注
symbol SYMBOL 期货代码
symbolSource STRING 交易所
tradeTime TIMESTAMP 时间戳
tradingDay DATE 交易日/结算日期
open DOUBLE 开盘价
low DOUBLE 最低价
high DOUBLE 最高价
close DOUBLE 收盘价
volume LONG 成交量
amount DOUBLE 成交金额
upLimitPrice DOUBLE 涨停价
downLimitPrice DOUBLE 跌停价
signal DOUBLE[] 其他字段列表
prevClosePrice DOUBLE 前收盘价
settlementPrice DOUBLE 结算价
prevSettlementPrice 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 期货代码
symbolSource STRING 交易所
timestamp TIMESTAMP 时间戳
tradingDay DATE 交易日/结算日期
lastPrice DOUBLE 最新成交价
upLimitPrice DOUBLE 涨停价
downLimitPrice DOUBLE 跌停价
totalBidQty LONG 区间成交买数量
totalOfferQty LONG 区间成交卖数量
bidPrice DOUBLE[] 委托买价
bidQty LONG[] 委托买量
offerPrice DOUBLE[] 委托卖价
offerQty LONG[] 委托卖价
highPrice DOUBLE 最高价
lowPrice DOUBLE 最低价
signal DOUBLE[] 其他字段列表
prevClosePrice DOUBLE 前收盘价
settlementPrice DOUBLE 结算价
prevSettlementPrice DOUBLE 前结算价