股票交易正负初始持仓下平仓股份数量计算的无分支实现方法
平仓股份数量无分支实现方案
你当前的需求本质是取正初始持仓量和卖出量两者的较小值,不需要用分支判断,直接调用PHP内置的min()函数就能实现,逻辑完全匹配你的要求。
针对多头平仓场景(初始持仓为正、交易类型为卖出),原有的多分支逻辑可以直接简化为:
$num_squaredoff = 0; if ($transaction_type == 'SELL' && $previous_net_qty > 0) { $num_squaredoff = min($previous_net_qty, $order_filled_quantity); }
如果你的代码已经限定在交易类型为SELL的独立分支内,可以进一步简化为一行:
$num_squaredoff = $previous_net_qty > 0 ? min($previous_net_qty, $order_filled_quantity) : 0;
用你给出的示例验证:
- 初始持仓10股,卖出5股:
min(10,5) = 5,平仓量正确 - 初始持仓10股,卖出15股:
min(10,15) = 10,平仓量正确
你提到的模运算并不适合这个场景,模运算用于计算整除后的余数,和你要取两数下限的需求不匹配,用min()是可读性和性能最优的方案。后续如果要处理空头平仓场景(初始持仓为负、买入平仓),也可以用同样的思路,取初始持仓的绝对值和买入量的较小值即可。
内容的提问来源于stack exchange,提问作者firasd
相关产品推荐
相关产品推荐

