kdb 计算行之间的百分比变化
kdb calculate percent change between rows
我通过这种方式计算 24 小时内的百分比变化,您可以在下面看到。
有什么方法可以通过查询直接从 kdb 获取计算百分比吗?
df
应该 return 百分比作为最终值。
df = q.sendSync('{[x;y]value select by x xbar DateTime.minute from trades where DateTime > .z.p-0D01, symbol=y }',30,np.string_(symbol))
start = df.iloc[0].price
end = df.iloc[-1].price
return ((end-start)/start) * 100 ##### return -0.01152
kdb查询结果:
DateTime side symbol amount price
0 2022-04-15 14:59:59.975 b'buy' b'ETH-USDT' 0.0033 3035.75
1 2022-04-15 15:29:58.889 b'buy' b'ETH-USDT' 0.079 3035.2100
2 2022-04-15 15:32:09.050 b'buy' b'ETH-USDT' 0.0165 3034.1599
first exec 100*(last[price]-price[0])%price[0] from trades where DateTime > .z.p-0D01, symbol=y
update PctDiff:-[price%first price;1] from trades
此查询创建了“从开始到现在的百分比变化”的附加列,当然您需要先按时间对 table 进行排序。
如果您在 table 中有多个交易品种并且想要为每个交易品种计算:
,此查询也可以提供帮助
update PctDiff:-[price%first price;1] by sym from trades
我通过这种方式计算 24 小时内的百分比变化,您可以在下面看到。
有什么方法可以通过查询直接从 kdb 获取计算百分比吗?
df
应该 return 百分比作为最终值。
df = q.sendSync('{[x;y]value select by x xbar DateTime.minute from trades where DateTime > .z.p-0D01, symbol=y }',30,np.string_(symbol))
start = df.iloc[0].price
end = df.iloc[-1].price
return ((end-start)/start) * 100 ##### return -0.01152
kdb查询结果:
DateTime side symbol amount price
0 2022-04-15 14:59:59.975 b'buy' b'ETH-USDT' 0.0033 3035.75
1 2022-04-15 15:29:58.889 b'buy' b'ETH-USDT' 0.079 3035.2100
2 2022-04-15 15:32:09.050 b'buy' b'ETH-USDT' 0.0165 3034.1599
first exec 100*(last[price]-price[0])%price[0] from trades where DateTime > .z.p-0D01, symbol=y
update PctDiff:-[price%first price;1] from trades
此查询创建了“从开始到现在的百分比变化”的附加列,当然您需要先按时间对 table 进行排序。
如果您在 table 中有多个交易品种并且想要为每个交易品种计算:
,此查询也可以提供帮助update PctDiff:-[price%first price;1] by sym from trades