genOutputColumnsForOBSnapshotEngine

语法

genOutputColumnsForOBSnapshotEngine([basic=true], [time=true], [depth], [tradeDetail=true], [orderDetail=true], [withdrawDetail=true], [orderBookDetailDepth=0], [prevDetail=true])

详情

该函数用于配合订单簿引擎,简化订单簿引擎的创建过程。它返回一个元组,包含2个元素。

  • 第一个元素是字符串向量,表示订单簿需要包含的字段,可用于createOrderBookSnapshotEngineoutputColMap 参数。

  • 第二个元素是空的内存表,表示订单簿需要具备的表结构,可用于createOrderBookSnapshotEngineoutputTable 参数。

参数

以下参数都用于指定订单簿需要包含的字段,每个参数名都表示一个字段类别,每个类别中包含多个字段。通过 createOrderBookSnapshotEngine 函数页的附录,查看字段类别及其包含的字段。

basic 布尔值。表示是否输出类别 basic 中的字段。默认为 true。

time 布尔值。表示是否输出类别 time 中的字段。默认为 true。

depth 元组。长度为 2,默认为 (10, true)。

  • 第一个元素为整型标量,范围是[0, 100],表示报价/询价的价格和数量的档位。若为 0 则不输出 depth 中的字段;

  • 第二个元素为布尔值,决定多档报价/询价的价格和数量的输出形式。若为 false,表示以多列的形式输出;若为 true,以数组向量的形式输出。

tradeDetail 布尔值,表示是否输出 tradeDetail 中的字段。默认为 true。

orderDetail 布尔值,表示是否输出 orderDetail 中的字段。默认为 true。

withdrawDetail 布尔值,表示是否输出 withdrawDetail 中的字段。默认为 true。

orderbookDetailDepth 整型标量,用于指定输出订单簿明细的档位(orderbookDetail 类别) 默认值为0,表示不输出。该参数的值必须和 createOrderBookSnapshotEngineorderbookDetailDepth 参数的值保持一致。

prevDetail 布尔值,表示是否输出 prevDetail 中的字段。默认为 true。

例子

创建订单簿引擎时,需要通过 outputColMap 参数指定需要输出的字段;通过 outputTable 参数指定输出表。genOutputColumnsForOBSnapshotEngine 可以简化这两个参数的定义流程。在创建订单簿引擎前,先进行如下操作:

首先,通过 genOutputColumnsForOBSnapshotEngine 函数设置需要输出的字段;

然后,指定 outputColMapgenOutputColumnsForOBSnapshotEngine 函数返回值的第一个元素;指定 outputTable 为返回值的第二个元素。

运行代码前,先下载 ../data/orderbookDemoInput.zip 文件。

try { dropStreamEngine("demo") } catch(ex) { print(ex) }

filePath = "./orderbookDemoInput.csv"

// 创建引擎参数 dummyTable,即指定输入表的表结构
colNames = `SecurityID`Date`Time`SecurityIDSource`SecurityType`Index`SourceType`Type`Price`Qty`BSFlag`BuyNo`SellNo`ApplSeqNum`ChannelNo
colTypes = [SYMBOL, DATE, TIME, SYMBOL, SYMBOL, LONG, INT, INT, LONG, LONG, INT, LONG, LONG, LONG, INT]
dummyOrderStream = table(1:0, colNames, colTypes)

// 创建引擎参数 inputColMap,即指定输入表各字段的含义
inputColMap = dict(`codeColumn`timeColumn`typeColumn`priceColumn`qtyColumn`buyOrderColumn`sellOrderColumn`sideColumn`msgTypeColumn`seqColumn, `SecurityID`Time`Type`Price`Qty`BuyNo`SellNo`BSFlag`SourceType`ApplSeqNum)

// 创建引擎参数 prevClose,即昨日收盘价,prevClose 不影响最终的输出结果中除昨日收盘价以外的其他字段
prevClose = dict(`000587.SZ`002694.SZ`002822.SZ`000683.SZ`301063.SZ`300459.SZ`300057.SZ`300593.SZ`301035.SZ`300765.SZ, [1.66, 6.56, 6.10, 8.47, 38.10, 5.34, 9.14, 48.81, 60.04, 16.52])

//创建使用 outputColMap 和 outputTableSch 接收 genOutputColumnsForOBSnapshotEngine 的返回值。它们分别用于确定 outputColMap 和 outputTable
outputColMap, outputTableSch = genOutputColumnsForOBSnapshotEngine(basic=true, time=false, depth=(10, true), tradeDetail=true, orderDetail=false, withdrawDetail=false, orderBookDetailDepth=0, prevDetail=false)

engine = createOrderBookSnapshotEngine(name="demo", exchange="XSHE", orderbookDepth=10, intervalInMilli = 1000, date=2022.01.10, startTime=09:15:00.000, prevClose=prevClose, dummyTable=dummyOrderStream, outputTable=outputTableSch, inputColMap=inputColMap, outputColMap=outputColMap, orderBookAsArray=true)

// 10支股票的逐笔数据批量注入快照合成引擎
engine.append!(select * from loadText(filePath) order by Time)
select top 10 * from outputTableSch where code="300593.SZ", timestamp between 2022.01.10T13:15:01.000 and 2022.01.10T13:15:10.000

部分结果展示如下: