perpetual_market_making
¶
📁 策略信息¶
- 文件夹: /hummingbot/strategy/perpetual_market_making
- 配置: perpetual_market_making_config_map.py
- 维护者: None
📝 摘要¶
此策略允许 Hummingbot 用户在永续合约(perp
)订单簿交易所的单个交易对上运行做市策略。
与pure_market_making_strategy
类似,perpetual_market_making
策略会持续在订单簿上放置限价买卖订单,并等待其他参与者(吃单者)来成交其订单。但与现货市场的做市不同,现货市场是进行资产交换,而永续市场的做市则会创建和关闭头寸。由于成交后会产生未平仓的永续合约头寸,该策略有一些参数用于确定何时平仓以获利和防止损失。
🏦 支持的交易所¶
- PERP CLOB CEX
🛠️ 策略配置¶
参数 | 类型 | 默认 | 提示新配置? | 提示 |
---|---|---|---|---|
derivative |
string | True | 输入您的做市衍生品连接器 | |
market |
string | True | 输入您希望在[exchange]上提供流动性的交易对 | |
leverage |
int | True | 您希望使用多少杠杆? | |
position_mode |
string | 单向 | True | 您希望使用哪种头寸模式?(单向/对冲) |
bid_spread |
decimal | True | 您希望在距离中间价格多远的位置放置第一个买入订单? | |
ask_spread |
decimal | True | 您希望在距离中间价格多远的位置放置第一个卖出订单? | |
minimum_spread |
decimal | -100 | False | 机器人应在最小价差多少时自动取消订单? |
order_refresh_time |
float | True | 您希望多久取消和替换一次买入和卖出订单(以秒为单位)? | |
order_refresh_tolerance_pct |
decimal | 0 | False | 输入在每个周期刷新订单所需的百分比价格变动 |
order_amount |
decimal | True | 每张订单的 [base_asset] 数量是多少? | |
long_profit_taking_spread |
decimal | 0 | True | 从入场价格多少点差处放置空单来减少头寸? |
short_profit_taking_spread |
string | 0 | True | 从头寸入场价格多少点差处放置多单来减少头寸? |
stop_loss_spread |
string | 0 | True | 从头寸入场价格多少点差处放置止损订单? |
time_between_stop_loss_orders |
decimal | 60 | True | 对于未成交的止损订单,应间隔多长时间刷新一次?(以秒为单位) |
stop_loss_slippage_buffer |
decimal | 0.5 | True | 为了应对滑点,应在止损订单价格中增加多少缓冲(输入 1 表示 1%)? |
price_ceiling |
decimal | -1 | False | 输入只放置卖出订单的价格点 |
price_floor |
decimal | -1 | False | 输入只放置买入订单的价格点 |
order_levels |
int | 1 | False | 您希望在两侧放置多少张订单? |
order_level_amount |
decimal | 0 | False | 您希望为每个额外订单增加或减少多少订单规模?(减少< 0 >增加) |
order_level_spread |
decimal | 1 | False | 输入后续订单的价格增量(百分比)?(输入 1 表示 1%) |
filled_order_delay |
float | 60 | False | 如果您的订单成交,您希望等待多长时间再放置下一个订单(以秒为单位)? |
order_optimization_enabled |
bool | False | False | 您是否要启用最佳买卖跳价?(是/否) |
ask_order_optimization_depth |
decimal | 0 | False | 为了计算最高卖出价,您希望深入订单簿多深,忽略顶部的零散订单(以基础资产数量表示)? |
bid_order_optimization_depth |
decimal | 0 | False | 为了计算最高买入价,您希望深入订单簿多深,忽略顶部的零散订单(以基础资产数量表示)? |
price_source |
string | current_market | False | 使用哪个价格来源?(current_market/external_market/custom_api) |
price_type |
string | mid_price | False | 使用哪种价格类型?(mid_price/last_price/last_own_trade_price/best_bid/best_ask) |
price_source_derivative |
string | False | 输入外部价格源连接器名称或衍生品名称 | |
price_source_market |
string | False | 在[external_market]上输入代币交易对 | |
price_source_custom_api |
string | False | 输入定价 API URL | |
custom_api_update_interval |
float | 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
参数定义。如果中间价格超出此区间,则不会创建订单,只会取消订单。
头寸管理¶
如果现有的一个或多个开仓订单已被成交且策略持有头寸,则不会下新的开仓订单。在这种情况下,每次价格变动时都会评估头寸是否平仓,以及是止盈还是止损。这些决策由参数 long_profit_taking_spread
、short_profit_taking_spread
和 stop_loss_spread
控制。
ℹ️ 更多资源¶
永续做市策略演示 | Hummingbot Live:永续做市策略演示
查看Hummingbot 学院以获取与此策略及其他策略相关的更多资源!