为什么需要它
两个原因,都重要。 对敲刷量。 和自己交易会制造成交量和成交记录,却不转移任何风险。这是一种伪造活跃度的手段,在撮合层就阻止它,意味着场所公布的成交量反映的是不同参与方之间的真实交易。 意外自成交。 更常见,也没那么险恶。做市商双边报价,或者同一账户下跑着好几个策略,很容易和自己的报价撞上。没有防护,两条腿都要付吃单费率,成交完了仓位却毫无变化。会发生什么
撮合器一旦发现新进订单要吃的是同一账户挂着的流动性,挂着的那笔订单就被撤销,新进订单继续与订单簿的其余部分撮合。新进订单
会吃到自己挂着的订单?
正常撮合
撤销挂着的那笔订单
你的订单继续吃向订单簿其余部分
单个账户之内始终拦截。没有开关,也没有参数可设。
子账户之间不拦截——它们按设计就是彼此独立的账户。
被撤销的是挂单方,不是吃单方——并带一个专门的状态,好让自动化系统把它和普通撤单区分开。
作用范围
防护作用在单个账户之内。子账户被视为彼此独立的账户,相互之间不受保护。 这条边界是有意划的,不是疏漏。子账户存在的意义就是隔离策略——风险独立、保证金独立、账目独立。真正相互独立的策略,完全可能合理地站在同一笔交易的两侧;禁止这一点,等于让一个子账户的报价悄悄卡住另一个子账户的成交。如果你运行的多个策略绝不能相互成交,请把它们放在同一账户下,这样防护才会生效。如果你的策略之间可能合理地站在对立面,子账户才是正确的结构。这个决定应当主动去做,而不是事后才发现。
它不做什么
它不保证你的订单成交。 如果那个价位上唯一的流动性正是你自己挂的订单,撤掉它并不会凭空变出一个对手方——你的订单会继续吃向订单簿,而那边可能已经没人接了。 它不能阻止账户之间的协同交易。 防护是撮合层的机制,只管单个账户之内。两个不同账户互相成交,撮合器区分不出它和普通交易。 撤销不会减少你的仓位。 被撤销的挂单是订单,不是仓位。你的敞口毫无变化。后续阅读
撮合
这项检查在区块执行的哪个位置运行。
订单类型
只挂单订单,以及它们与你自己挂单之间的互动。
修改订单
在不与自己交叉的前提下管理报价。
手续费
一次自成交本来会付出的吃单费率。