perpetual_market_making¶
📁 策略信息¶
📝 概述¶
该策略允许 Hummingbot 用户在永续合约(perp)订单簿交易所的单一交易对上运行做市策略。
与 pure_market_making_strategy 类似,perpetual_market_making 策略会在订单簿上持续挂出限价买单和卖单,并等待其他参与者(吃单方)成交。但与现货市场做市不同——现货市场仅交换资产,永续合约做市会创建和关闭仓位。由于永续合约仓位在成交后才建立,因此该策略包含多个参数,用于决定何时平仓以实现盈利并防止亏损。
🏦 支持的交易所¶
- PERP CLOB CEX
🛠️ 策略配置¶
| 参数 | 类型 | 默认值 | 是否提示新建? | 提示 | 
|---|---|---|---|---|
| 衍生品 | 字符串 | 是 | 请输入你的做市衍生品连接器 | |
| market | 字符串 | 是 | 请输入你希望提供流动性的交易对 [交易所] | |
| 杠杆 | 整数 | 是 | 你希望使用多少倍杠杆? | |
| 仓位模式 | 字符串 | 单向 | 是 | 你希望使用哪种仓位模式?(单向/对冲) | 
| bid_spread | 小数 | 是 | 你希望将首个买盘订单设置在中间价格下方多远的位置? | |
| ask_spread | 小数 | 是 | 你希望将首个卖盘订单设置在中间价格上方多远的位置? | |
| minimum_spread | 小数 | -100 | False | 当价差低于多少时,机器人应自动取消订单? | 
| order_refresh_time | 浮点数 | 是 | 你希望多久取消并替换一次买盘和卖盘订单(单位:秒)? | |
| order_refresh_tolerance_pct | 小数 | 0 | False | 请输入每个周期中,价格变动多少百分比时才刷新订单? | 
| order_amount | 小数 | 是 | 每笔订单的 [base_asset] 数量是多少? | |
| 多头止盈价差 | 小数 | 0 | 是 | 你希望在入场价基础上多大价差处挂空单以减仓? | 
| 空头止盈价差 | 字符串 | 0 | 是 | 你希望在入场价基础上多大价差处挂多单以减仓? | 
| 止损价差 | 字符串 | 0 | 是 | 你希望在仓位入场价基础上多大价差处设置止损单? | 
| 止损单刷新间隔 | 小数 | 60 | 是 | 未成交的止损单应间隔多久刷新一次?(单位:秒) | 
| 止损滑点缓冲 | 小数 | 0.5 | 是 | 为应对滑点,应在止损单价格上增加多少缓冲?(输入 1 表示 1%) | 
| price_ceiling | 小数 | -1 | False | 请输入高于此价格时仅放置卖出订单的价格点? | 
| price_floor | 小数 | -1 | False | 请输入低于此价格时仅放置买入订单的价格? | 
| order_levels | 整数 | 1 | False | 您希望在买卖双方各放置多少个订单? | 
| order_level_amount | 小数 | 0 | False | 每增加一个订单,你希望订单数量增加或减少多少?(减少 < 0 > 增加) | 
| order_level_spread | 小数 | 1 | False | 后续订单的价格增量是多少?(以百分比形式输入,输入 1 表示 1%) | 
| filled_order_delay | 浮点数 | 60 | False | 若您的订单被成交,您希望等待多久再放置下一个订单?(单位:秒) | 
| order_optimization_enabled | 布尔值 | False | False | 是否启用最佳买卖价跳转?(是/否) | 
| ask_order_optimization_depth | 小数 | 0 | False | 计算最高卖价时,忽略顶部的零星订单,您希望深入订单簿多深?(以基础资产数量表示) | 
| bid_order_optimization_depth | 小数 | 0 | False | 计算最高买价时,忽略顶部的零星订单,您希望深入订单簿多深?(以基础资产数量表示) | 
| price_source | 字符串 | current_market | False | 使用哪个价格源?(current_market/external_market/custom_api) | 
| price_type | 字符串 | mid_price | False | 使用哪种价格类型?(中间价/最新价/最近自有成交价/最佳买价/最佳卖价) | 
| 衍生品价格源 | 字符串 | False | 请输入外部价格源连接器名称或衍生品名称 | |
| price_source_market | 字符串 | False | 请输入 [外部市场] 上的交易对 | |
| price_source_custom_api | 字符串 | False | 请输入价格 API 的 URL | |
| custom_api_update_interval | 浮点数 | 5 | False | 请输入自定义 API 更新间隔(单位:秒,默认:5.0,最小:0.5) | 
| order_override | json | False | 
📓 描述¶
仅为近似值
以下描述是对该策略的一般性近似说明。请查阅上方交易逻辑中的策略代码,以准确理解其工作原理。
架构¶
perpetual_market_making 策略的工作方式与 pure_market_making_strategy 类似,但已适配永续合约交易。交易永续合约会创建仓位,而不仅仅是像现货市场那样交换资产。
每个 Tick 周期,策略都会生成新的开仓订单,并取消现有订单。若已有订单被成交,策略将开始管理相应仓位。
订单下达¶
该策略会在中间价的预设距离处挂出多单和空单以开立永续合约仓位,这些距离由参数 bid_spread 和 ask_spread 定义。
每个 Tick 周期,系统都会评估未成交的挂单。若这些挂单与新提议订单的偏离程度超过 order_refresh_tolerance_pct 参数所设定的阈值,则会被取消并替换为新订单。若活跃订单的价格低于中间价的 min_spread 阈值,也会被取消。
此外,还可通过参数 order_levels、order_level_amount 和 order_level_spread 在每侧设置多层价格的订单。最靠近中间价的订单始终位于 bid_spread 和 ask_spread 的距离处。
该策略可限制在由 price_ceiling 和 price_floor 参数定义的特定价格区间内交易。如果中间价格超出该区间,则不会创建任何订单,仅会取消现有订单。
仓位管理¶
若已有开仓订单被成交且策略已持有仓位,则不再放置新的开仓订单。此时,系统会在每个 tick 上评估当前仓位是否应平仓,以及是实现盈利还是止损。这些决策由参数 long_profit_taking_spread、short_profit_taking_spread 和 stop_loss_spread 控制。
ℹ️ 更多资源¶
永续合约做市演示 | Hummingbot Live: 永续合约做市策略的演示
了解更多与此策略及其他策略相关的资源,请访问 Hummingbot 学院!
