跳至内容

订单刷新容差

更新于 v0.28.0

此功能允许您指定一个“可容忍”的价差范围——在每次刷新周期中,处于该范围内的订单不会被取消,而是保留在订单簿中。它允许您设定允许的最小价差变化百分比,以决定何时调整订单。假设中间市场价格发生变动,您可以通过设置容差百分比,灵活控制订单取消/替换(刷新)的时机,从而捕捉额外利润(参见下方此参数有何帮助)。

order_refresh_tolerance_pct

用于延迟订单刷新至下一周期的价差(相对于中间价格)。

**提示:**

Enter the percent change in price needed to refresh orders at each cycle
>>> 1

工作原理

输入 config order_refresh_tolerance_pct 来设置此参数。默认情况下,该参数值为 0

这意味着 Hummingbot 将在每个 order_refresh_time 秒后取消所有活跃订单(不包括挂起订单)。但如果价格自上一周期以来未发生变化,Hummingbot 将保留这些订单不变。将该值设为 -1 将禁用此功能,意味着 Hummingbot 将始终在每个 order_refresh_time 秒后取消并重新创建订单。

例如,将 order_refresh_tolerance_pct 设置为 0.1,当到达刷新时间点时,若活跃订单的价差从 1.0% 变为 0.9%–1.1%,该订单将被保留在订单簿中(不被取消)。但如果价差超出 1.1% 或低于 0.9%,则订单将被取消。

请注意,您可以将 order_refresh_tolerance_pct 设置得高于买卖价差。若如此,价差可能变为负值,从而导致您处于亏损状态

示例

假设您在某交易所交易 ETH-USDT 资产对,初始中间市场价格为 200 USDT(\(t_0\))。

示例市场

Sample Market: ETH-USDT

配置

- bid_spread: 2
- ask_spread: 2
- order_refresh_time: 30.0
- order_refresh_tolerance_pct: 1

示例状态输出/日志

买卖价差均为 2%,因此您的机器人将在卖价 204 USDT 和买价 196 USDT 处挂单(\(t_1\))。此配置将创建如下订单。

Orders:
     Level  Type    Price Spread Amount (Orig)  Amount (Adj)       Age
         1  sell      204  2.00%         0.001         0.001  00:00:01
         1   buy      196  2.00%         0.001         0.001  00:00:01

每 30 秒,机器人仅在价差超出 1%–3% 范围时才会取消并替换订单。

30 秒后(\(t_2\)),中间市场价格上涨至 201 USDT;卖价差为 1.49%,买价差为 2.49%。订单状态如下:

Orders:
     Level  Type    Price Spread Amount (Orig)  Amount (Adj)       Age
         1  sell      204  1.49%         0.001         0.001  00:00:29
         1   buy      196  2.49%         0.001         0.001  00:00:29

买卖订单的价差未超过初始值的 1%。日志面板中将显示相应提示信息。

current order prices is within 1.00% order_refresh_tolerance_pct

假设一位市场套利者(即市场吃单者)看好即将达到 3 USDT 前的较小卖价差(在卖价差降至 0.99% 之前,约为 1%),并决定成交您的卖单,因为他们预期市场价格将上涨。在 \(t_3\) 时,机器人取消买单,并以 2% 的买卖价差重新创建两个新订单。

Orders:
     Level  Type    Price Spread Amount (Orig)  Amount (Adj)       Age
         1  sell   205.02  2.00%         0.001         0.001  00:00:01
         1   buy   196.98  2.00%         0.001         0.001  00:00:01

现在,假设在 \(t_4\) 时价格下跌至 199 USDT。买价差为 1.01%,卖价差为 3.02%。由于价差变化幅度超过了 1% 的容差范围,因此超出了订单刷新容差。

机器人取消这两个订单,并在 \(t_5\) 时以 2% 的价差重新挂单。

Orders:
     Level  Type    Price Spread Amount (Orig)  Amount (Adj)       Age
         1  sell   202.98  2.00%         0.001         0.001  00:00:01
         1   buy   195.02  2.00%         0.001         0.001  00:00:01

现在,在 \(t_6\) 时,买价差和卖价差分别为 1.5% 和 2.5%。

Orders:
     Level  Type    Price Spread Amount (Orig)  Amount (Adj)       Age
         1  sell   202.98  2.52%         0.001         0.001  00:00:29
         1   buy   195.02  1.51%         0.001         0.001  00:00:29

机器人将保留这些订单,因为它们仍在订单刷新容差范围内,并再次显示以下消息:

current order prices is within 1.00% order_refresh_tolerance_pct

注意

日志中不再显示:余额不足,无法执行买入(卖出)订单.... 订单数量已调整为 > 由于新订单价格与当前订单价格的差异在范围内,未取消活跃订单。

假设一名市场套利者认为市场价格将大幅下跌,并看好你的买入价差,他们便可以以 195.02 的价格成交你的买入订单。

此参数有何帮助

该参数的默认容差为 0%。因此,在每次刷新周期中,只要价差发生任何变化,机器人就会取消现有订单,并按配置的价差重新挂单。由于每次刷新都会重置价差,这提高了买卖价差更贴近原始买卖价差的可能性,从而降低了价差大幅偏离原始价差的风险,或许可避免损失。然而,正如我们上面所见,该策略能够利用买卖价差的灵活性(容差),因为价格接受者可能正在寻找你未知的某种价差范围。