问题描述
/
解决方案
在 ptrade 量化交易平台中,股票委托买入数量自动取整为 100 股,主要是为了遵循中国 A 股市场的实际交易规则,同时也是 ptrade 平台底层 API 的一种保护机制。
以下是详细的原因解析及相关注意事项:
1. A 股市场的基本交易规则
根据沪深交易所的规定,A 股股票的买入申报数量必须是 100 股(即 1 手)的整数倍。为了让回测环境尽可能逼近真实的实盘交易环境,ptrade 引擎在处理股票买入委托时,会自动将计算出的数量向下取整到 100 的整数倍。
2. ptrade API 的底层处理机制
在 ptrade 中,使用 order 系列函数(如 order、order_target、order_value、order_target_value)进行股票委托时,系统会自动进行数量规整:
- 股票交易:每次交易股票时,系统会自动将委托数量取整为 100 股。
- 可转债交易:每次交易可转债时,系统会自动将委托数量取整为 10 张。
举个例子:
如果您使用 order_value('600570.SS', 10000) 尝试买入价值 10000 元的股票,假设当前股价为 33 元,理论上可以买入 303.03 股。但由于取整机制,ptrade 会自动将委托数量调整为 300 股,实际消耗资金约为 9900 元。
3. 特例:卖出所有股票时不受限制(零股卖出)
虽然买入必须是 100 股的整数倍,但在 A 股市场中,由于分红送转等原因,账户中可能会产生不足 100 股的“零股”。
ptrade 同样兼容了这一规则:当您卖出所有股票时,不受 100 股取整的限制。例如,当您调用 order_target(security, 0) 尝试清仓某只股票时,即使账户中持有 150 股,系统也会将这 150 股全部卖出,而不会只卖出 100 股。
4. 开发者注意事项
由于这种自动取整机制的存在,您在编写策略时需要注意:
- 资金预留:使用
order_value或order_target_value时,实际成交金额通常会略小于您设定的目标金额,因为多余的资金不足以买入完整的 100 股。 - 日志警告:在回测中,如果实际买入/卖出的股票数量与委托设置的不一致(例如因为取整、资金不足或停牌等原因),ptrade 系统会在日志中输出警告信息,提示您订单数量已被调整。