Closed tiandian closed 6 years ago
rqalpha在StockCommission类的get_commission方法中计算股票手续费, 其代码如下:
commission = self.commission_map[order_id] cost_money = trade.last_price * trade.last_quantity * self.rate * self.multiplier if cost_money > commission: if commission == self.min_commission: self.commission_map[order_id] = 0 return cost_money else: self.commission_map[order_id] = 0 return cost_money - commission else: if commission == self.min_commission: self.commission_map[order_id] -= cost_money return commission else: self.commission_map[order_id] -= cost_money return 0
上述代码中使用了一个self.commission_map, 是考虑到一个Order可能会通过多次交易成交完成, 但导致如下问题:
建议将计算手续费功能与Order关联, 而不是与Trade关联, 与现实保持一致, 不但去掉了一个commission_map, 而且代码会简单的多,如下:
cost_money = order._avg_price * order._filled_quantity * self.rate if cost_money > self.min_commission: return cost_money else: return self.min_commission
的确会精简。之前的实现是基于 trade 发生,然后考虑到 order 有最小手续费的门槛,所以才在原来基础上进行的修改。我们会对此进行优化
rqalpha在StockCommission类的get_commission方法中计算股票手续费, 其代码如下:
上述代码中使用了一个self.commission_map, 是考虑到一个Order可能会通过多次交易成交完成, 但导致如下问题:
建议将计算手续费功能与Order关联, 而不是与Trade关联, 与现实保持一致, 不但去掉了一个commission_map, 而且代码会简单的多,如下: