← 返回文章库

部分成交后再报剩余量,怎样避免把原委托量重复买一遍

2026-10-24 · L5

部分成交后再报单,应该报母单目标减已成交再减仍在途的可用量,而不是再发送原始母单数量。还要识别回报是累计成交还是本次增量,重复累计回报不能再扣一次。本例一千股母单先发六百股,最终旧单成交二百五十股并撤销余量,新单只补七百五十股,数量恰好闭合。

先声明母子单和回报的教学语义

构造观察日为2026年10月24日,母单M的买入目标固定一千股,初始零持仓。子单A申请六百股;所有成交回报的数值字段均代表该子单截至此刻的累计成交量,不是本次成交。撤单请求与撤单确认是两个不同事件,只有确认后才认为剩余量不再可能成交。价格、费用与现金不参与这张状态账,数量单位统一为股。

本例使用顺序处理的构造事件流,不宣称任何券商协议保证回报顺序。A先回报累计二百,随后相同累计二百重复到达;撤单请求发出后,另有累计二百五十的迟到成交确认,最后才收到撤单确认。之后子单B申请七百五十,依次回报累计三百和累计七百五十。额外插入一笔X申请八百,用于检验撤单中能否错误放大数量。

事件子单ID回报或申请值处理本次成交增量股子单累计股母单已成股母单在途股可再报股
newA600接受000600400
cumA200接受200200200400400
cumA200忽略重复累计0200200400400
cancel_requestA0接受0200200400400
newX800拒绝超量00200400400
cumA250接受50250250350400
cancel_ackA0接受02502500750
newB750接受002507500
cumB300接受3003005504500
cumB750接受450750100000

表中“累计”是当前子单的累计已成交,不是母单累计;“本次增量”是新累计减此前已登记的该子单累计。母单已成交则汇总所有子单。母单、子单与回报版本三个层级分清,才能让重放得到同一结果;仅按证券代码聚合会把本来不同的任务混在一起。

重复二百为何不能再加二百

A第一次累计二百到达,本次增量二百,母单已成交二百、A在途四百,仍可另报四百。第二次还是累计二百,新旧差为零,因此忽略重复,三个母单字段完全不变。若把累计字段当作增量,系统会认为母单已买四百,虽未必立刻超买,却会错误少报,最终持仓和回报对不上。

更危险的是重复回报被用来减少在途。若第一次减二百、第二次再减二百,在途会从四百被错减到二百,系统又认为有六百股可报。已成交字段若只计一次、在途却减两次,就直接释放了虚假的二百股额度。去重需要保证一组相关字段原子更新,不能只在最后持仓表上删除一行重复记录。

本例累计回报单调递增,因此同值可视为重复,递减被标为非法累计。真实协议可能有成交撤销、更正或重置序列,这些是另一类有明确语义的事件,不能直接被本例简化规则吞掉。要处理它们,应增加更正ID、原成交关联和授权状态迁移;本文没有提供通用券商适配器。

撤单中仍有四百股占用,不是已释放

发出撤单请求后,A仍有四百股可能继续成交,所以母单可再报量保持四百。此时X想报八百被拒绝,不自动改为四百,也没有生成有效子单。拒绝行保留原因,表里的X累计零仅表示没有已接受的成交,不代表X在市场上真实存在。

随后A累计从二百升到二百五十,新增五十股被正常记入,已成交变二百五十、在途变三百五十,二者和仍为六百,因此可再报量仍是四百。这个现象很关键:在既有有效订单内部,成交只是把数量从在途移到已成交,不应突然制造额外可用额度。把每一笔成交都当成释放预算,会让已经买到的量再次进入可买空间。

收到撤单确认后,A三百五十股余量释放,在途归零,可再报量从四百升到七百五十。于是B七百五十全部接受。B累计三百时,母单已成交五百五十,在途四百五十、可用零;B累计七百五十时新增四百五十,母单完成一千股,不能再报任何买单。这条路径没有依赖某个价格高低,属于数量状态正确性。

每个事件都检查一千股守恒

守恒式为目标等于母单已成交加有效在途加可再报。A未撤前始终占用六百,A撤完后只留下已成交二百五十,B接受后填满其余七百五十。三个分量均应非负。如果输出出现负可用量,应该保留异常并停止新报,而不是把负数简单改零后继续撮合,因为负值意味着过去已经承诺过量。

条件改变成A没有迟到的五十股回报、撤单确认明确最终累计仍二百,那么确认后应补八百股。反过来,若确认消息自身带最终累计二百五十,即使此前只收到二百,也应在确认时补登五十再释放三百五十,仍只补七百五十。决定补量的是最终可核实累计,而不是用户点击撤单那一刻屏幕显示的数字。

如果A从六百改成一千申请,在第一次累计二百后,已成交二百加在途八百已占满目标,可再报零。不能因为“还有八百没买到”就新发八百;那八百仍在A里。只有收到明确撤销或失效证据,才能释放相应量。这个对照说明母单未成交量与当前可以新下的数量是不同字段,名字相似并不等价。

现实适配还需补哪些证据

核对顺序应是先识别回报所指子单,再核对消息语义与版本,然后计算累计差,最后更新母单汇总及在途余量。真实多通道环境还要约束同时读取旧余额的并发报单,可通过单一顺序账本或可靠预约机制实现;本文的串行示例不能证明分布式实现已经安全。无子单ID、无最终撤单累计或回报更正规则不明时,不应签完整数量核对通过。

本页与旧文交易成本假设的区别是交付事件状态与拒绝记录。母单共享市场量的额度还见累计参与率预算,只有K线而缺队列证据的成交范围见限价队列成交上下界。滑点与手续费敏感度可估成本参数,不能接收回报、去重或替本页维护撤单状态。

来源核对:Cvxportfolio 1.5.0约束文档,实读ParticipationRateLimit,作为数量受限的背景。本文母子单累计回报、重复判定和撤单状态均为自行定义的教学协议,来源不保证真实券商消息语义。

道积君编辑组,AI辅助编写与核算。全部算例为构造教学输入,非真实交易、交易所撮合或券商收费证明;数值在完整精度计算后显示至小数点后六位,不用于预测收益。

复算资料

本篇编号DJ4-071。下载Python复算脚本(文本)与构造输入输出JSON,按编号核对本篇。脚本改存为.py后可用Python标准库运行,数据不是实际用户记录。

这个页面有问题?

提交时会附带当前页面地址和浏览器信息,帮助我们定位问题。不填联系方式即为匿名。