跳至内容

外部价格来源配置

更新于 v0.36.0

默认情况下,Hummingbot 使用您交易的订单簿来生成中间价(最高买价与最高卖价之间的价格),作为计算挂单价格的起始参考。

通过此功能,用户可以选择不同的价格参考来生成订单,例如最新成交价本人最新成交价最佳买价最佳卖价库存成本。用户还可以使用其他订单簿,例如 Hummingbot 支持的外部交易所或自定义的API

工作原理

当从外部来源计算挂单价格时,若该价格会导致订单与订单簿中现有订单匹配,则该订单将被忽略,除非启用了 take_if_crossed 参数。

价格来源:当前市场

默认情况下,price_source 被设置为 current_market

               exchange: binance
                 market: BTC-USDC
             bid_spread: 1
             ask_spread: 1
           price_source: current_market
             price_type: mid_price
  price_source_exchange: None
    price_source_market: None
        take_if_crossed: None
price_source_custom_api: None

价格来源:外部市场

用户在创建订单时,也可以使用 Hummingbot 支持的其他交易所的外部市场作为价格参考。

在以下示例中,我们在 Binance 上交易 BTC-USDC 对,但使用 Crypto.com 交易所上 BTC-USDT 对的中间价作为价格参考。

               exchange: binance
                 market: BTC-USDC
             bid_spread: 1
             ask_spread: 1
           price_source: external_market
             price_type: mid_price
  price_source_exchange: crypto_com
    price_source_market: BTC-USDT
        take_if_crossed: True
price_source_custom_api: None

运行 config price_type 命令可将价格参考更改为 last_pricelast_own_trade_pricebest_bidbest_ask。参数 take_if_crossed 为可选,仅在存在匹配订单时允许您执行订单簿中的现有订单。

注意

目前,外部价格来源不能与挂单交易所相同(即:若机器人在 Binance 上交易,则 price_source_exchange 不能是 Binance)。

价格来源:自定义 API

自定义 API 主要供高级用户或开发者使用,以采用不同的价格参考。请注意,必须将 price_source 设置为 custom_api,并在 price_source_custom_api 中指定 API 地址。

           price_source: custom_api
             price_type: mid_price
  price_source_exchange: None
    price_source_market: None
        take_if_crossed: None
price_source_custom_api: https://www.your-custom-api-url.com/

自定义 API 输出所需参数

API 的 GET 请求应返回一个十进制数值,对应您交易的资产对的市场价格。

示例 API 输出:

207.8

何时使用外部价格来源

当您的机器人在流动性较低的交易对上做市,但同一底层资产在其他交易所存在流动性更高的交易对时,外部价格来源非常有用。

假设我们正在为 ETH-USDT 交易对做市。我们所交易的交易所(称为交易所 A)的最高买价为 $198,最高卖价为 $202,因此中间价为 $200。

假设存在另一个交易所 B,其交易对为 ETH-USD。该交易对的最高买价为 $200,最高卖价为 $202,因此中间价为 $201。由于市场条件变化,不同交易所之间常出现此类差异。某些交易所可能因交易对、流动性或地理位置的不同,对市场变化的反应速度更快或更慢。

如果你认为交易所 B 上的 ETH-USD 比交易所 A 上的 ETH-USDT 流动性更好、对市场信息的反应更迅速,你可能希望在交易所 A 上进行做市,但以交易所 B 上的 ETH-USD 作为价格参考。这有助于你根据市场未来可能的走向来布置订单。

处理交叉订单

当使用外部价格源时,订单可能导致交叉市场。这意味着当前交易所的订单价格与订单簿中已有的订单价格一致。启用 take_if_crossed 参数后,策略将执行匹配的_maker_ 订单。

在某些情况下,即使手续费较高,这种行为也可能值得采用,因为其有助于抵消未来价格波动的风险。此功能仅在使用外部价格源时可用。启用后,Hummingbot 将使用 LIMIT 订单而非 LIMIT_MAKER 订单类型。

相关参数

price_source

确定在创建订单时用作价格参考的市场。

**提示:**

Which price source to use? (current_market/external_market/custom_api)
>>> current_market

price_type

创建订单时用作价格参考的价格类型。

**提示:**

Which price type to use? (mid_price/last_price/last_own_trade_price/best_bid/best_ask/inventory_cost)
>>> mid_price

mid_price

Hummingbot 使用当前交易所订单簿的中间价作为参考,例如,若你的买卖价差设置为 1%,则订单将位于中间价上下 1% 的位置。中间价计算公式为:(市场最佳卖价 + 市场最佳买价)/ 2。

           price_source: current_market
             price_type: mid_price

last_price

最新价格是指该资产最近一次成交的价格。

           price_source: current_market
             price_type: last_price

last_own_trade_price

机器人在创建订单时,使用你最近一次自身交易的价格作为价格参考。

           price_source: current_market
             price_type: last_own_trade_price

best_bid

price_type 设置为 best_bid 时,价格将基于订单簿中的最佳买价。

           price_source: current_market
             price_type: best_bid

best_ask

price_type 设置为 best_ask 时,价格将基于订单簿中的最佳卖价。

           price_source: current_market
             price_type: best_ask

inventory_cost

每当买入订单成交时,机器人将重新计算你的持仓平均成本,所有卖出订单将基于 inventory_cost + ask_spread 创建。使用 inventory_cost 时,你需要在启动 Hummingbot 前使用命令 config inventory_price 设置持仓成本价。

           price_source: current_market
             price_type: inventory_cost

price_source_exchange

用于外部价格源的交易所名称。

**提示:**

Enter external price source exchange name
>>>

price_source_market

价格源交易所的交易对。

**提示:**

Enter the token pair on [price_source_exchange]
>>>

take_if_crossed

启用外部价格源时,若订单与订单簿交叉则执行吃单。

**提示:**

Do you want to take the best order if orders cross the orderbook? (Yes/No)
>>> Yes

price_source_custom_api

返回价格的外部 API。

**提示:**

Enter pricing API URL
>>>