跳转至内容

perpetual_market_making

📁 策略信息

📝 摘要

此策略允许 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 中,策略会创建新的开仓订单并取消现有订单。如果未平仓订单被成交,策略随后必须管理头寸。

Figure 1: General strategy flow chart

订单放置

该策略会在从中位价格预定义距离处放置多单和空单以开立永续合约头寸。这些距离由参数bid_spreadask_spread给出。

在每个 tick 中,都会评估未平仓的开放订单。如果它们与建议订单相距太远,如order_refresh_tolerance_pct参数所定义,它们将被取消并由新订单替换。如果活动订单发现自己低于从中位价格的min_spread阈值,它也将被取消。

也可以根据参数order_levelsorder_level_amountorder_level_spread定义的价格层在每边放置多个订单。离中位价格最近的将始终是距离bid_spreadask_spread的订单。

该策略可以限制在特定价格区间内交易,该区间由 price_ceilingprice_floor 参数定义。如果中间价格超出此区间,则不会创建订单,只会取消订单。

Figure 2: Order creation and adjustment flow chart

头寸管理

如果现有的一个或多个开仓订单已被成交且策略持有头寸,则不会下新的开仓订单。在这种情况下,每次价格变动时都会评估头寸是否平仓,以及是止盈还是止损。这些决策由参数 long_profit_taking_spreadshort_profit_taking_spreadstop_loss_spread 控制。

Figure 3: Position management flow chart

ℹ️ 更多资源

永续做市策略演示 | Hummingbot Live:永续做市策略演示

查看Hummingbot 学院以获取与此策略及其他策略相关的更多资源!