如何在DolphinDB中将10个独立价格列合并为DOUBLE[]数组向量列?
问题:将多列档位价格合并为数组向量列
我正在导入Level-2行情数据,对应的CSV文件中订单簿价格分为10个独立列:
symbol,date,time,bidPrice1,bidPrice2,...,bidPrice10,bidQty1,...,bidQty10 000001,20251222,93000000,23.0,22.9,22.8,...,22.1,100,200,150,...,600
加载数据后,得到10个独立的bidPrice1~bidPrice10 DOUBLE类型列。但回测引擎要求bidPrice为DOUBLE[]类型(每行包含全部10个档位的数组向量),需要将这10列合并为单个数组向量列。
尝试过的无效方案
方案1:矩阵+转置
mBidPrice = matrix(bidPrice1, bidPrice2, ..., bidPrice10) transpose(mBidPrice)
报错:
transpose(mBidPrice) isn't an instance of a class
方案2:each+join
each(join, bidPrice1, bidPrice2, ..., bidPrice10)
报错:
Parameter index out of bound
注:DolphinDB的join仅接受2个参数。
方案3:自定义函数+each
def row10(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10) { return [x1,x2,x3,x4,x5,x6,x7,x8,x9,x10] } each(row10, bidPrice1, ..., bidPrice10)
该方案执行无效。
有效解决方案
在DolphinDB中,推荐以下两种方法实现需求:
方法1:矩阵转数组向量
先通过matrix将多列组合成矩阵,再通过行迭代器转为数组列:
bidPrice = matrix(bidPrice1, bidPrice2, bidPrice3, bidPrice4, bidPrice5, bidPrice6, bidPrice7, bidPrice8, bidPrice9, bidPrice10).rowIterator().toArray()
方法2:使用row函数批量打包
利用row函数将每行的多列值打包为数组,配合each逐行处理:
bidPrice = each(row, bidPrice1, bidPrice2, bidPrice3, bidPrice4, bidPrice5, bidPrice6, bidPrice7, bidPrice8, bidPrice9, bidPrice10)
row函数会自动将传入的多个参数打包成数组,each会遍历每一行的对应元素,最终生成DOUBLE[]类型的列。
内容的提问来源于stack exchange,提问作者Kent
相关产品推荐
相关产品推荐

