跳转至内容

订单刷新容差

更新于 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,当根据 order_refresh_time 到达刷新时间时,一个活动订单的价差从 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 和买价 196(\(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;卖价差为 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 之前,卖价差接近 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

现在考虑在 $4 时价格跌至 199。买价差为 1.01%,卖价差为 3.02%。这超出了订单刷新容差范围,因为价差变化超过了 1%。

机器人取消两个订单并替换为 2% 的价差,我们说在 \(t_5\) 时。

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

注意

Not enough balance for buy (sell) order .... order_amount is adjusted to > Not canceling active orders since the difference between new order prices and current order prices is within 不再在日志中显示。

假设一个市场吃单者认为市场价格将大幅下跌,并且喜欢你的买盘价差。他们随后可以以 195.02 的价格成交你的买单。

这个参数有何帮助

此参数的默认值为 0%的容差。因此,在每个刷新周期中,如果价差发生任何变化,机器人将取消订单并在配置的价差处重新下单。由于价差在每个刷新周期都会重置,这增加了买卖价差更接近原始买卖价差的可能性。这降低了价差大幅偏离原始价差的风险,或许能够防止亏损。然而,如上所述,该策略可以利用买卖价差的灵活性(容差),因为吃单者可能在寻找你并不知晓的某些价差范围。