订单类型详解:限价单、市价单、止损单、冰山订单、TWAP/VWAP算法单
做市商的核心工作,说白了就是跟订单打交道。你每天面对的不是K线,而是一堆堆的订单流。我做了这么多年,发现很多新手对订单类型的理解停留在「限价单就是挂单,市价单就是直接干」这种层面。其实这里面的门道深着呢。
今天咱们就把五种核心订单类型掰开揉碎了讲。每种订单我都见过被用错的场景,也踩过不少坑。你想想看,如果连订单的底层逻辑都没吃透,怎么跟那些量化巨头抢流动性?
一、限价单:做市商的命根子
限价单(Limit Order)是啥?就是你指定一个价格,到了这个价才成交。没到就挂着。做市商靠这个吃饭——我们在买一卖一挂单,赚的就是买卖价差。
我个人习惯把限价单分成两类:
- 被动限价单:挂在盘口上等别人来吃。提供流动性,交易所通常给返佣。
- 主动限价单:虽然挂了限价,但价格设得很激进,比如买一价挂卖单,这其实是在吃单。
这里有个坑。我曾经在某个波动剧烈的币对上挂限价单,结果市场瞬间跳水,我的买单全成交了,但价格还在往下砸。嗯,这就是所谓的「接飞刀」。所以我现在挂限价单一定会配合止损。
核心要点:限价单的成交概率取决于你出的价格。价格越接近对手盘,成交越快,但滑点风险也越大。做市商要在这两者之间找平衡。
二、市价单:流动性杀手
市价单(Market Order)就是「不管什么价,给我干进去」。你想想看,这玩意儿对做市商来说意味着什么?意味着我们挂的单子被瞬间吃掉。
市价单有几个特点:
- 成交确定性高:只要盘口有单,必成交
- 价格不确定性高:滑点可能很大,尤其在流动性差的时候
- 吃单方:消耗流动性,通常要付手续费
我记得有一次,某个小币种突然拉盘,一个市价买单直接把我挂在卖五的单子全吃了。那笔单子我本来挂在那当钓鱼单的,结果真被钓走了。所以我现在做市,一定会在每个价位只挂有限的数量,防止被一口吞。
注意:市价单在极端行情下可能产生巨额滑点。2010年美股闪崩时,很多市价单成交在了离谱的价格。做市商要时刻警惕对手盘用市价单来「扫货」。
三、止损单:你的安全带
止损单(Stop Order)很多人理解成「亏钱就跑」。其实不止这么简单。止损单触发后变成市价单或限价单,这个细节很关键。
止损单有两种变体:
| 类型 | 触发后行为 | 适用场景 |
|---|---|---|
| 止损市价单 | 变成市价单,保证成交 | 快速离场,不在乎滑点 |
| 止损限价单 | 变成限价单,保证价格 | 控制最大亏损,但可能不成交 |
我曾经犯过一个低级错误。在某个交易所设了止损限价单,结果行情暴跌,价格直接穿过了我的止损价,单子根本没成交。那笔亏损让我记住了:止损限价单在快速行情下可能失效。
所以我现在做市,止损单一律用止损市价单。虽然可能多亏一点滑点,但至少能跑掉。你想想看,如果仓位被套住,那损失可就不是滑点能比的了。
小技巧:止损单的触发价和委托价之间留点缓冲。比如你想在100元止损,触发价设100,委托价设99.8。这样即使有短暂的价格毛刺,也不容易被误触发。
四、冰山订单:藏住你的底牌
冰山订单(Iceberg Order)说白了就是「大单拆小单」。你挂一个1000BTC的卖单,但盘口只显示100BTC。成交完100,再露100出来。像冰山一样,只露一角。
为什么要用冰山订单?
- 隐藏真实意图:不让市场知道你要大量买入或卖出
- 减少市场冲击:大单直接砸盘,价格会剧烈波动
- 防止被狙击:如果对手知道你挂了巨量买单,会故意拉高价格等你接盘
我见过最夸张的一次,某个大户用冰山订单在三天内吃掉了交易所5%的流通量。盘口上永远只有几百个币挂着,但实际成交了几万个。这种手法,说白了就是「闷声发大财」。
做市商自己也会用冰山订单。比如我要在某个价位积累大量仓位,肯定不会一次性挂出来。我会拆成几十个小单,分散在不同时间点挂出去。嗯,这里要注意,冰山订单的参数设置很讲究——每次露多少、间隔多久、价格偏移多少,都需要根据市场流动性来调。
实战经验:冰山订单的「露出量」一般设为总订单量的5%-10%。太小了成交太慢,太大了又暴露意图。我习惯根据该币种的平均单笔成交量来定。
五、TWAP/VWAP算法单:时间换空间
这两种算法单,是做市商和机构投资者的标配。它们解决的是同一个问题:如何在不影响市场的情况下完成大额交易。
TWAP(时间加权平均价格)
TWAP的逻辑很简单:把订单拆成N份,每隔固定时间执行一份。比如你要在1小时内买入1000BTC,那就每36秒买入10BTC。
TWAP的优点是执行简单,缺点是它不管市场行情。如果市场在下跌,你还在傻傻地买,那就亏大了。
VWAP(成交量加权平均价格)
VWAP比TWAP聪明一点。它根据历史成交量分布来分配订单。比如某个时间段成交量占全天的20%,那就在这个时间段执行20%的订单。
VWAP的目标是让自己的成交价接近市场均价。做市商经常用VWAP来评估自己的执行质量——如果你的成交价比VWAP好,说明你执行得不错。
我参与过的一个项目,需要每天执行价值500万美元的订单。我们用的是VWAP算法,配合冰山订单。具体做法是:
// 伪代码示例
class VWAPExecutor:
def __init__(self, total_qty, start_time, end_time):
self.remaining = total_qty
self.volume_profile = load_historical_volume() // 加载历史成交量分布
def on_tick(self, current_time):
expected_volume = self.volume_profile.get_expected(current_time)
total_expected = self.volume_profile.get_total_expected()
// 根据成交量比例分配订单
slice_qty = self.remaining * (expected_volume / total_expected)
// 用冰山订单执行
iceberg_order(slice_qty, price_offset=0.01)
self.remaining -= slice_qty
这个逻辑看着简单,但实际跑起来坑很多。比如历史成交量分布跟当天实际分布不一致怎么办?市场突然出现大单怎么办?
避坑指南:我曾经在某个流动性极差的币对上跑VWAP,结果因为实际成交量远低于历史数据,算法一直在等「该有的成交量」,导致订单执行严重滞后。后来我加了一个超时机制——如果某个时间段成交量达不到预期,就提前执行剩余订单。
六、五种订单的对比与选择
说了这么多,到底什么时候用哪种订单?我整理了一张表:
| 订单类型 | 适用场景 | 风险点 |
|---|---|---|
| 限价单 | 做市、挂单赚价差 | 不成交风险、被扫货 |
| 市价单 | 快速建仓/平仓 | 滑点大、流动性不足时吃大亏 |
| 止损单 | 风控、止盈止损 | 止损限价单可能不成交 |
| 冰山订单 | 大额交易、隐藏意图 | 参数设置不当导致暴露 |
| TWAP/VWAP | 大额订单分批执行 | 模型失效、市场突变 |
我个人习惯是:做市用限价单+冰山订单,风控用止损市价单,大额交易用VWAP+冰山组合。市价单我基本不用,除非是紧急情况需要立刻离场。
你想想看,这些订单类型就像工具箱里的不同工具。螺丝刀不能当锤子用,市价单也不能当限价单用。理解每种订单的底层逻辑,才能在合适的场景用合适的工具。
最后说一句:订单类型的选择没有绝对的对错,关键看你的交易策略和风险承受能力。我见过有人用限价单做高频,也有人用市价单做套利。多测试、多复盘,慢慢就会形成自己的风格。
公众号:蓝海资料掘金营,微信deep3321