交易机器人用市价单还是限价单?更低手续费真的能提高收益吗?
让相同的五个交易决策分别采用市价和被动限价入场,核对手续费、排队假设、部分成交、错失的盈利与避开的亏损。
更低的挂单手续费可以降低某一笔成交的成本,却不能证明被动下单政策改善了整个策略。它可能成交更少、错过盈利信号,或恰好在市场转向不利之前成交。对五个刻意设计的BTC/USDT情形进行实际计算后,被动入场亏损16.48590 USDT,即时市价入场亏损22.98900。6.50310的差额由匹配入场量的手续费节省2.00060、匹配价格改善1.00000,以及未建立持仓的贡献3.50250组成。两种政策都亏钱。这是基于明确披露的假设事件流计算的模型结果,不是历史交易所成交,也不是实盘盈利证据。
这项比较说明什么
- 限价单也可能以吃单方式成交;只挂单指令增加的是另一种订单接受条件。
- 比较同一组符合条件的决策与资本,并纳入未成交订单,而不是只比较已完成交易。
- 价格触及限价,不代表排在已有队列后面的订单一定成交。
- 区分匹配数量上的手续费节省,与敞口变化和未参与机会的影响。
- 实际结果确认前,撤单只是请求;延迟确认的成交仍然构成真实持仓。
限价并不保证挂单成交
可立即成交的买入限价单,可以马上吃掉现有卖单;留在订单簿上的限价单,则可能之后提供流动性。同一订单也可能包含这两类成交,因此费率应对应每笔执行,而不只是提交时的订单名称。Coinbase明确说明了这种拆分。Binance的LIMIT_MAKER指令则会拒绝立即以吃单方式交易的订单。拒单避免了那次执行,却不会免费提供想要的成交价。[1] [2]
限价约束允许的执行价格,不约束入场后的收益,也不保证成交概率。市价单同样无法在所有交易所状态下保证特定价格或全部成交。我们的问题是,哪种完整执行政策适合交易规则,而不是哪个订单名称听起来更便宜。Cont和Kukanov的订单投放研究把费率、队列、订单流与执行风险放在一起分析,其结果不为本BTC例子提供通用规则。[7]
比较入场前,先固定信号和退出政策
我们在计算结果之前规定了两种政策与五个互不重叠的合成BTC/USDT现货情形。案例是为展示机制而设计,不是用于估计发生频率的随机样本。两种政策收到相同的五次买入决策,间隔60,000毫秒,各以10,000 USDT开始,每个情形目标为0.02 BTC。订单到达时买价49,990、卖价50,010。市价政策按卖价买入完整目标量;被动政策停留在买价,不补足也不追价。
| 项目 | 固定假设 |
|---|---|
| 时钟 | 0 ms决策;10 ms到达;60,000 ms后开始下一情形 |
| 入场目标 | 0.02 BTC;市价购买在手续费前花费1,000.20 USDT;留足现金 |
| 被动入场 | 49,990只挂单;基准队列前方0.03 BTC;不改价、不用市价补足 |
| 撤单 | 500 ms请求;650 ms生效;700 ms前全部成交与最终状态已知 |
| 退出 | 在共同10,000-ms买价卖出已确认库存;不存在剩余入场挂单 |
| 手续费 | 假设maker 0.02%、taker 0.10%,均以USDT收费;所有退出为taker |
| 选择边界 | 五个设计案例与四个队列假设;无市场数据评估,也未选出盈利参数 |
两者都在情形的10,000毫秒时,以预定买价卖出自己实际持有的数量。未成交的入场保留现金。账户承接此前所有结果;没有入金、借贷、资金费,也不让固定目标量随收益复利变化。假设数量与价格符合虚构过滤规则,每次模拟市价执行都有足够的可见流动性。事件流是外生的:两种政策都不影响后续价格、订单流和他人的行为。因此不能用它主张真实市场冲击或容量。
计算队列,而不是看到K线最低价就赋予成交
模型在一个价位采用简单的先到先得队列。符合条件的主动卖出量先消耗前方数量,再到达我们的订单。不因前方其他订单撤单而给予队列改善,并假设不存在隐藏量。这些是模型选择,不是从真实交易所推断的事实。Coinbase公布的撮合规则说明时间与可见性优先级为何重要,同时也包含本简化模型省略的冰山单优先级等细节。[3]
| 情形 | 卖出流与时点 | 被动成交数量 | 共同退出买价USDT |
|---|---|---|---|
| A:错失盈利 | 200 ms时0.015 BTC | 0.000 BTC | 50,500 |
| B:成交后亏损 | 100 ms时0.060 BTC | 0.020 BTC | 49,500 |
| C:部分盈利 | 200 ms时0.040 BTC | 0.010 BTC | 50,200 |
| D:撤单竞态 | 550 ms时0.050 BTC | 0.020 BTC | 49,700 |
| E:避开亏损 | 650 ms前没有符合条件流量 | 0.000 BTC | 49,500 |
在情形C中,200 ms时有0.040 BTC可执行卖出流。消耗前方0.030 BTC后,0.020目标量中只有0.010 BTC成交,剩余0.010被撤销。K线最低价49,990无法揭示这个数量。聚合成交数据本身,也不能精确说明哪些撤单位于我们之前。可信的历史重建需要事件顺序与有依据的排队假设。
情形E在撤单前没有符合条件的卖出流,价格只在撤单生效后才下降。情形D中,卖出流在550 ms到达,晚于撤单请求,却早于撤单生效。完整的0.020 BTC成交,并在共同退出之前得到确认。因此,发出撤单请求的时间不能等同于订单不再存在的时间。
手续费低,被动政策仍然可能亏损
实际执行的十进制计算对每笔成交只收费一次,并在各情形间承接现金与库存。市价入场在五次决策中共买入0.100 BTC,被动入场买入0.050 BTC。被动订单参与率为3/5,即60%,因为两笔全部成交、一笔部分成交;数量成交率则为0.050/0.100,即50%。只报告三笔成交订单,就会把错失的机会移出比较。
| 情形 | 市价净值 | 被动净值 | 被动减市价 |
|---|---|---|---|
| A | +7.78980 | 0.00000 | −7.78980 |
| B | −12.19020 | −10.98996 | +1.20024 |
| C | +1.79580 | +1.49802 | −0.29778 |
| D | −8.19420 | −6.99396 | +1.20024 |
| E | −12.19020 | 0.00000 | +12.19020 |
| 合计 | −22.98900 | −16.48590 | +6.50310 |
市价的毛价格盈亏为−13.00000 USDT,手续费9.98900,净结果−22.98900。被动毛盈亏为−13.50000,手续费2.98590,净结果−16.48590。期末权益分别为9,977.01100和9,983.51410,对共同初始资本的收益率为−0.229890%与−0.164859%。被动只交易一半数量,手续费更低,但毛结果略差。这些设计案例不能建立预期收益、回撤分布或统计优势。不交易的现金基准在本无利息练习中收益为零,因此高于两者;这是会计比较,不是对底层市场策略的发现。
差额中只有一部分来自手续费节省
先把被动实际买入的0.050 BTC,与同一情形中市价政策的相同数量匹配,并采用相同退出。按49,990而不是50,010买入,使匹配数量的毛价格结果改善1.00000 USDT。入场手续费节省为0.050 × (50,010 × 0.001 − 49,990 × 0.0002) = 2.00060。数量、退出价和吃单费率相同,因此匹配比较中的退出手续费相抵。
剩余差额来自没有建立的敞口。市价政策中对应缺失数量,在A本会赚+7.78980,在C未成交的一半本会赚+0.89790,在E则会亏12.19020。合计净结果为−3.50250,因此不建立这些持仓给被动相对结果贡献+3.50250。我们没有事先识别该跳过哪些信号;这是计算后的会计拆分,不是建议的盈利过滤器。
| 组成 | 贡献 |
|---|---|
| 匹配数量的入场手续费节省 | +2.00060 |
| 匹配数量的入场价格改善 | +1.00000 |
| 错失的盈利A | −7.78980 |
| 错失C盈利的一半 | −0.89790 |
| 避开的亏损E | +12.19020 |
| 合计 | +6.50310 |
总手续费减少7.00310,比匹配入场节省更大,是因为被动交易更少、退出手续费也更少。将全部下降称为更优执行,会把较少交易与更低成本执行同样敞口混为一谈。实际成交价已包含买卖价差,不要再扣一次价差估计。真实手续费资产、折扣与额外收费必须与账户核对。Binance的佣金文档解释了为什么有效收费并不总是一个公布的maker/taker费率。[4]
更好的入场价可能伴随不利信息
B和D显示被动买方先获得库存,随后以更低价格退出。较低入场价和费用相对即时市价入场有帮助,却没有让持仓盈利。这说明逆向选择风险:能够触及被动买单的事件,可能与之后较差的价格有关。五个刻意选择的情形不估计这种关系或其因果强度。在真实数据上,应将成交后的价格变化与成交概率一起研究,并保留未成交信号。
在D中,若系统将500-ms撤单请求视为成功,就会记为没有入场,实际0.020 BTC却在550 ms成交。正确账户必须包含−6.99396 USDT结果。Binance说明撤单传输期间仍可成交,用户数据报告也提供执行数量和订单状态。[5] [6] 应使用持久化决策记录,核对订单与持仓,并在状态未知时阻止盲目重试。客户端订单标识有助于识别订单,但它本身不是完整的应用级防重复设计。
队列假设的影响,比取消maker费更大
我们保持价格、流量、政策和费率不变,把前方数量分别设为0、0.01、0.03和0.05 BTC,重算同样五个情形。被动结果不随队列长度单调变化。短队列抓住更多设计中的盈利机会,但部分成交也属于亏损情形。最长队列只有0.010 BTC成交,因此较小亏损部分来自不交易;这不证明排在更差位置反而有优势。
| 前方BTC | 被动入场BTC | 被动净盈亏USDT |
|---|---|---|
| 0.00 | 0.075 | −8.24535 |
| 0.01 | 0.065 | −12.74037 |
| 0.03 | 0.050 | −16.48590 |
| 0.05 | 0.010 | −5.49498 |
在基准0.03-BTC队列下,将maker费降至零,被动净盈亏也仅从−16.48590改善至−15.98600。取消该费用节省0.49990,结果仍亏损。这项敏感性固定成交;真实费率或订单大小变化,可能改变行为与流动性。我们报告全部预定队列情形,而不是把表现最好的一个选作优化政策。
尚未结束的持仓仍属于账户权益
在E的9,000 ms,距计划的10,000-ms退出还有时间,假设可用买价已为49,500。市价账户持有0.020 BTC与8,988.00100 USDT现金。库存市值990.00000,因此权益9,978.00100。此时被动账户空仓,现金9,983.51410。删除市价账户的未平仓持仓会低估权益;只展示已平仓利润,则会漏掉当前价格亏损。
计划中的市价卖出再收取0.99000费用,将此前市值权益衔接至最终9,977.01100。退出前的估值不是已执行清算结果。我们提供离散成交与终点记录,没有完整的情形内估值序列,因此不报告最大回撤或时间加权敞口。总成交周转名义金额,市价为9,989.00000 USDT,被动为4,985.50000。前瞻测试指南详细说明现金与库存审计。
真实比较需要记录什么
评估前固定符合条件的信号集、到达时刻约定、价格、订单存续时间、部分成交处理、后备动作及退出规则。先等待再跨价差成交,是第三种候选政策,不是这里测试的被动政策;应另外规定规则和成本记录。入场执行也应与紧急降低风险分开:未成交退出的机会成本,可能与可选入场大不相同。
历史研究需要足够深度、带时间戳的订单簿与成交事件,检查序列缺口,并论证队列、延迟、撤单效应与冲击假设。采样报价或K线本身无法确定反事实成交。前瞻试运行应保留每个符合条件的意图、提交、拒单、部分成交、撤单与最终持仓。声明费率及收费资产,再以适合依赖结构的不确定性方法比较全账户净结果。优势还是运气研究解释为什么许多相关成交不等于许多独立检验。
ChatGPT或Claude可以辅助明确这些问题;Codex或Claude Code可以辅助审计事件逻辑与算术。本研究使用AI协助和对构造事件流实际执行的十进制计算,没有比较不同模型产品,也没有连接真实资金账户。应要求协作者保留未解决事件,而不是编造有利成交。
明确:固定信号资格、到达时刻、价格、存续时间、部分成交处理、撤单、后备动作及退出规则。指出缺少的决策。
实现:保留获批政策与完整事件顺序;不要仅因K线触及限价就赋予成交。
核对:跟踪现金、库存、手续费和未解决订单。区分撤单请求与已确认的生效。
报告:保留全部符合条件信号,将匹配成交的价格/费用效应与错失或避开的持仓分开。区分观测成交和模拟的反事实结果。选择执行政策,而不是费率表里最低的一行
在这条构造事件流上,被动政策亏得更少,但6.50310 USDT相对改善中,只有2.00060是匹配入场手续费节省。错过盈利有代价,避开亏损有帮助;队列和撤单假设决定最终持有什么库存。低手续费解决不了这些问题。
对真实机器人,合理的下一步,是在自己的符合条件决策上进行带版本记录的执行比较,以有依据的成交与账户核对支撑。有效政策必须同时满足执行紧迫性、资本、风险约束和成本后经济性。本结果说明如何核算差异,而不是哪种订单类型会让未来系统盈利。
声称被动订单改善机器人之前
- 使用相同的符合条件决策、初始资本和退出政策。
- 明确只挂单行为、到达时刻、存续时间、后备动作与部分成交处理。
- 披露队列假设,保留未成交和拒绝订单。
- 采用真实收费资产,区分maker/taker成交与订单名称。
- 计算业绩前核对现金、库存及撤单竞态。
- 将匹配数量的价格和费用效应与未建立敞口分开。
- 报告全部预定敏感性,不挑选最优队列假设。
- 区分构造模型输出、历史重建和真实前瞻执行。
关于市价单与限价单的直接回答
限价单一定收maker手续费吗?
不一定。可立即成交的限价单可以吃单,同一订单也可能包含不同执行类型。只挂单改变的是接受条件:会吃掉流动性的订单可能被拒绝。应核实交易所与账户规则,而不是按订单名称指定收费。
K线碰到我的限价,回测就应该成交吗?
不能自动成交。前方队列可能在订单获得任何数量前消耗掉符合条件的流量。K线不提供推断成交所需的事件顺序、排队位置或撤单历史。
为什么不只比较已成交订单的平均利润?
这会删除政策错失的机会。本例中,被动入场错失一个盈利信号,避开一个亏损信号,又只成交另一个盈利的一部分。采用全部符合条件决策的全账户结果,才能保留这些差异。
发出撤单请求后,订单仍可能成交吗?
会,在撤单实际生效前仍可能成交。构造竞态中,500-ms请求之后、650-ms撤单生效之前,550 ms发生了成交。发出替代订单或退出前,应核实最终订单状态和真实库存。
maker费为零,会让被动政策盈利吗?
基准构造流上不会。保持成交不变,取消maker费用让净结果从−16.48590改善为−15.98600 USDT。这是条件敏感性,不是真实费率变化的预测。
本文证明限价单优于市价单了吗?
它显示一个明确建模的被动政策在五个设计情形上亏得更少,不估计这些情形的频率、真实交易所成交、统计优势或未来盈利。被展示的是会计拆分及其对执行假设的敏感性。
方法与一手参考资料
这项AI辅助确定性研究采用五个设计的BTC/USDT现货情形,于2026年10月26日执行十进制计算。上文披露两种入场政策、共同退出、合成队列流量和费用假设,并报告全部四种预定队列情形。内部记录核对现金、库存、费用、机会效应和撤单竞态。没有使用历史订单簿、观测到的交易所成交、校准成交概率或实盘收益。官方文档和原创研究支持所引机制,不支持本例价格、费率或盈利主张。
- Binance现货REST API:市价、限价及LIMIT_MAKER订单
- Coinbase:订单类型与限价成交的maker/taker处理
- Coinbase Markets交易规则:撮合与价格、可见性、时间优先
- Binance现货API:佣金费率与收费资产
- Binance现货API:用户数据成交报告
- Binance:订单状态与撤单期间成交
- Cont与Kukanov:Optimal order placement in limit order markets
基于构造事件流的教育性比较。模型成交依赖声明的队列、时序、流动性和冲击假设。低费率与限价不能证明执行盈利,也不能确定账户最大损失。