我有一张交易表
trades:flip `ts`buyer`seller`price`qty!(`t1`t2`t3`t4`t5;`a`b`a`x`x;`x`x`x`z`z;10 10 9 10 11;200 500 100 300 500)
ts buyer seller price qty
t1 a x 10 200
t2 b x 10 500
t3 a x 9 100
t4 x z 10 300
t5 x z 11 500
我想以某种方式将z交易与a和b交易相匹配
flip `ts`buyer`seller`price`qty`price_z!(`t1`t2`t3`t4`t5;`a`b`a`x`x;`x`x`x`z`z;10 10 9 10 11;200 500 100 300 500;10 10.8 11 0 0)
ts buyer seller price qty price_z
t1 a x 10 200 10.0 <-- allocating 200 shares from the first trade of 300 @ 10
t2 b x 10 500 10.8 <-- allocating the remaining 100 shares of the first trade @ 10 and 400 from the second trade @ 11
t3 a x 9 100 11.0 <-- allocating the remaining 100 shares @ 11
t4 x z 10 300 0.0
t5 x z 11 500 0.0
除了遍历行,保留交易信息和更新表之外,我无法看到任何方法,但是在qpython中执行此操作对于大型表来说会非常缓慢,所以我想知道神仙是否有一些Q魔法这使得这成为可能。这里一个棘手的部分是记住t2中的值的计算,即t4中300股中的200股已经被采用。
非常感谢任何有关如何处理此问题的建议