createOrderReconstituteEngine
语法
createOrderReconstituteEngine(name, dummyTable,
outputTable, inputColMap)
参数
name 字符串标量,表示引擎的名称,作为其在一个数据节点/计算节点上的唯一标识。可包含字母,数字和下划线,但必须以字母开头。
dummyTable 一个表对象,和订阅的流数据表的 schema 一致,可以含有数据,亦可为空表。
outputTable 一个表对象,计算结果的输出表,可以是内存表或者分布式表。表结构比 dummyTable 多两列:
-
倒数第二列:INT 类型,标记该条逐笔数据的来源,不同标记值的含义如下:
标记值 | 逐笔委托 | 逐笔成交 |
---|---|---|
0 | 原始委托 | 原始成交 |
1 | 根据全部即时成交还原的委托 | 即时全部成交 |
2 | 根据部分即时成交还原的委托 | 即时部分成交 |
-
最后一列:LONG 类型,记录输出顺序,从 0 开始递增。
inputColMap 一个字典,用于将输入表中的列名映射到引擎计算所需的字段:
-
key 为 STRING 类型,表示引擎所需的字段,字段及其说明见下表。注意,字段名大小写敏感,顺序不限但必须全部指定。
-
value 为 STRING 类型,必须是 dummyTable 的列名。
key | 字段类型 | 字段说明 |
---|---|---|
"codeColumn" | SYMBOL | 证券代码 |
"typeColumn" | INT |
交易类型:
|
"priceColumn" | LONG | 价格 |
"qtyColumn" | LONG | 数量(股数) |
"buyOrderColumn" | LONG |
|
"sellOrderColumn" | LONG |
|
"sideColumn" | INT |
买卖方向:1 表示买单;2 表示卖单 说明:
|
"msgTypeColumn" | INT |
数据类型:
|
详情
定义一个订单还原引擎,基于上交所逐笔数据(一个包含逐笔成交与逐笔委托的数据表),实时还原缺失的原始委托信息。
例子
运行以下示例前,请先下载 demoData.tar.gz
// 定义引擎参数 dummyTable,即指定输入表的表结构
colNames = `SecurityID`Date`Time`SourceType`Type`Price`Qty`BSFlag`BuyNo`SellNo`ApplSeqNum`ChannelNo
colTypes = [SYMBOL, DATE, TIME, INT, INT, LONG, LONG, INT, LONG, LONG, LONG, INT]
dummyOrderTrans = table(1:0, colNames, colTypes)
// 定义引擎参数 colMap,即指定输入表各字段的含义
colMap = dict(`codeColumn`typeColumn`priceColumn`qtyColumn`buyOrderColumn`sellOrderColumn`sideColumn`msgTypeColumn, `SecurityID`Type`Price`Qty`BuyNo`SellNo`BSFlag`SourceType)
// 定义引擎参数 outputTable ,即输出表
outTable = table(1:0, colNames join ["mark","index"], colTypes join [INT,LONG])
// 定义引擎
engine1 = createOrderReconstituteEngine(name="demo", dummyTable=dummyOrderTrans, outputTable=outTable, inputColMap=colMap)
// 向引擎插入数据,注意修改filename
schemaTB = select name, typeString as type from dummyOrderTrans.schema().colDefs
tmp = select * from loadText(filename="/home/data/orderReconstituteDemoInput.csv",schema=schemaTB) order by ApplSeqNum
engine1.append!(tmp)