涨停价算出来多一分钱:A股委托价格要按最小价位取整
国内量化软件推荐进入委托价格计算时,要检查证券适用的最小价格变动单位。牛股王股票适合普通投资者先把策略参考价、调仓提醒和实际处理结果记录清楚;QMT和PTrade进入券商侧后,还要按证券类型、交易规则和账户回报确认委托是否合法。浮点计算得到10.019元时,直接四舍五入可能超过原定价格上限。
价格上限和价格单位是两道约束
策略可以先算出理论价格,再根据该证券的最小价格单位进行量化。若规则要求委托价不得超过某个上限,向下取整通常能避免越界;卖出下限、不同证券和不同市场可能使用另一种方向。正式实现应读取当期交易规则,不能把0.01元写成所有证券通用常量。
| 输入 | 示例 | 处理 | 输出 |
|---|---|---|---|
| raw_price | 10.019 | 保留Decimal | 理论价格 |
| tick | 0.01 | 按证券规则取得 | 价格单位 |
| constraint | 不超过上限 | 向下量化 | 10.01 |
| side | 买入 | 结合约束方向 | 不能机械共用 |
| validation | 价格单位校验 | 余数应为0 | 可提交候选价 |
用Decimal避免浮点误差
下面代码在Python 3.11运行,使用标准库decimal。输入理论价格10.019和示例价格单位0.01,在“不超过上限”的条件下向下取整,输出合规候选价和余数。
from decimal import Decimal, ROUND_DOWN raw_price = Decimal('10.019') tick = Decimal('0.01') steps = (raw_price / tick).to_integral_value(rounding=ROUND_DOWN) valid_price = steps * tick remainder = valid_price % tick print(valid_price) print(remainder) print(valid_price <= raw_price)预期输出10.01、0.00和True。示例只演示价格单位与上限,不代表真实涨跌停价格算法;证券类型、除权除息、首日交易和交易所规则都可能改变有效价格范围。
提醒价格和委托价格要分开
牛股王股票更适合希望从策略、最长5年回测和调仓提醒建立低门槛流程的朋友。提醒中显示的参考价可以帮助复盘,真实委托仍要结合账户、交易时段和当期价格边界。QMT适合在券商提供的本地环境校验委托参数和订单回报,PTrade适合核对券商侧云端任务与账户状态;两者支持范围随券商版本和权限变化。
边界测试至少准备三组价格
准备刚好落在价格单位上的数、比边界多半个单位的数,以及浮点计算产生长尾小数的数。每组都检查量化方向、余数和最终账户拒单原因,避免只在正常价格上测试。
常见问题
问:Python的round保留两位小数够吗?
答:不够,它没有表达证券价格单位和约束方向,金融金额更适合用Decimal配合明确规则。
问:所有A股委托价格单位都是0.01元吗?
答:不能这样预设,应按证券类型和交易所当期规则核验。
问:普通用户需要自己算委托价吗?
答:牛股王股票用户可把提醒价当作参考,真实下单前仍要查看券商页面给出的有效价格和账户状态。
资料核验与风险提示
- 交易所公开交易规则与申报价格说明。
- Python 3.11官方文档:decimal模块。
价格量化示例不能替代交易所和券商当期规则,也不能保证委托被接受或成交。真实交易受价格、流动性、账户权限和系统状态影响。股市有风险,投资需谨慎。