我已经开始学习Q/KDB一段时间了,因此我提前原谅了我的一些小问题,但是我面临着以下问题,我不知道如何解决。如何在Q/KDB的表格中处理F型表格
我有一个表列举了一些simbols的“资源”显示,侧,订单的总和并average_price
sym side | sum_order avg_price
----------| -------------------
ALPHA B | 95109 9849.73
ALPHA S | 91662 9849.964
BETA B | 47 9851.638
BETA S | 60 9853.383
与这些类型
c | t f a
---------| -----
sym | s p
side | s
sum_order| f
avg_price| f
我想计算关闭和开启位置,平仓点,平仓,平仓价格。
我已经使用这个查询,我认为这是很奇怪的(我相信会有更专业的方式来做到这一点),但它按预期工作
position_summary:select
close_position:?[prev[sum_order]>sum_order;sum_order;prev[sum_order]],
average_price:avg_price-prev[avg_price],
open_pos:prev[sum_order]-sum_order,
open_wavgprice:?[sum_order>next[sum_order];avg_price;next[avg_price]][0]
by sym from res
给我下表
sym | close_position average_price open_pos open_wavgprice
----------| ----------------------------------------------------
ALPHA | 91662 0.2342456 3447 9849.73
BETA | 47 1.745035 -13 9853.38
和类型
c | t f a
--------------| -----
sym | s s
close_position| F
average_price | F
open_pos | F
open_wavgprice| f
现在我的问题就在这里开始,可以想象我加入PO sition_summary表格与另一个表格附加另一个字段“current_price”的类型f
我想要做的是确定开放职位的点数。
我已经试过这样:
select
?[open_pos>0;open_price-open_wavgprice;open_wavgprice-open]
from position_summary
,但我得到了“错误类型,
当然是因为sum_order是F型和open_wavgprice和CURRENT_PRICE是F。我在互联网上搜索,我没有找到太多F型。
第一:我该如何处理?我尝试过“投”或使用“raze”,但没有效果,而且我不确定他们在这个特定的场合是否正确。
第二:有没有更好的方法在查询表中使用“if-then”(例如,用简单的英语:如果该列的这一行然后取另一列的前一个/后一个或第二个或第三个一首/下一列)
谢谢你的帮助
实际上,您的第一个查询确实将列转换为键入f但奇怪的行为,它只显示空列。 – Max