订单簿深度参数:挂单层数、每层数量、撤单率控制
做市策略里,订单簿深度这块参数,说实话,是很多新手容易忽略的坑。我刚开始做高频的时候,也天真地以为只要把价格算准了,挂上去等着成交就行。结果呢?被市场狠狠教育了一顿。
今天咱们就聊聊这三个核心参数:挂单层数、每层数量、撤单率控制。它们三个是联动的,一个调不好,整个策略可能就崩了。
一、挂单层数:你打算铺几层?
挂单层数,说白了就是你在买一、买二、买三……卖一、卖二、卖三……这些价位上,各放多少单子。
我个人习惯,在流动性好的品种上,比如BTC永续合约,挂3到5层就够了。为什么?因为太深了也没用,市场波动快,你挂到第8层,可能一天都成交不了几笔。
但在一些冷门币种或者流动性差的合约上,我建议挂深一点,比如7到10层。我在项目中遇到过,一个冷门币种突然被拉盘,我的单子全在浅层,瞬间被吃光,然后价格飞了,我完全踏空。后来我加了深度,虽然成交慢,但至少能吃到一部分波动。
这里有个经验值,我一般这样设置:
| 市场类型 | 推荐挂单层数 | 说明 |
|---|---|---|
| 高流动性(BTC/ETH) | 3-5层 | 成交快,深度太深反而占用资金 |
| 中等流动性 | 5-7层 | 平衡成交速度和资金利用率 |
| 低流动性/冷门 | 7-10层 | 防止被瞬间击穿,吃不到单 |
二、每层数量:放多少合适?
每层数量,就是你在每个价位上挂多少张合约。这个参数直接决定了你的资金占用和风险敞口。
你想想看,如果每层都挂一样多,比如100张,那买一到买五全是100张。这有什么问题?
嗯,问题大了。市场如果快速下跌,你的买一被吃掉,买二也被吃掉……你所有的单子都在同一个风险敞口下。我曾经吃过这个亏,一次闪崩,我的5层单子全被扫光,亏损直接拉满。
我现在的做法是:金字塔式分布。离当前价格越近的层,挂得越少;离得越远的层,挂得越多。
举个例子:
# 金字塔式挂单示例
layers = {
'buy_1': 50, # 最近的一层,挂最少
'buy_2': 80,
'buy_3': 120,
'buy_4': 180,
'buy_5': 250, # 最远的一层,挂最多
}
# 这样做的逻辑是:
# 价格越远,说明市场越极端,你越应该接住它
# 但风险也越大,所以用数量来对冲
三、撤单率控制:别让交易所把你当机器人
撤单率,这个参数很多人不重视。我告诉你,它可能是你策略的隐形杀手。
高频做市,说白了就是不停地挂单、撤单、再挂单。但交易所不是傻子,你撤单太频繁,会被标记为「垃圾订单」,轻则降低你的交易优先级,重则直接封你的API。
我记得有一次,我的策略在1秒内撤了200多次单,结果交易所直接给我限流了,所有订单延迟了3秒才处理。那3秒里,市场波动了0.5%,我的策略直接亏了6位数。
所以,撤单率控制,核心就是:别让交易所觉得你在刷单。
我一般这样控制:
- 单笔订单存活时间:至少保持0.5秒以上。如果市场变化太快,可以缩短到0.3秒,但不能再低了。
- 每分钟撤单次数:控制在60次以内。超过这个数,交易所大概率会盯上你。
- 撤单率阈值:如果某只合约的撤单率超过70%,我会主动降低该合约的挂单频率。
四、三个参数的联动关系
这三个参数不是孤立的。我画了一张图,帮你理清它们的关系:
你看,这三个参数是互相制约的:
- 层数越多,每层数量就要适当减少,否则资金占用太大
- 层数越多,撤单频率自然就高,所以撤单率控制要更严格
- 每层数量越大,撤单的成本(手续费、滑点)就越高
我一般会先确定挂单层数,然后根据资金量反推每层数量,最后用撤单率控制来兜底。这个顺序不能乱。
五、实战中的避坑指南
最后,分享几个我踩过的坑:
好了,订单簿深度这块,核心就是这三个参数。调好了,你的策略就像一张网,稳稳地接住市场的每一波波动。调不好,那就是一张破网,漏得干干净净。
记住,做市不是赌博,是精细的工程活。每一个参数背后,都是真金白银的教训。