策略与代码片段
Gateway 通过 Hummingbot 实现去中心化交易所上的复杂交易策略。本页面列出了可用的 Gateway 兼容策略/脚本以及常用代码片段。
可用的脚本和策略¶
下表列出了 Hummingbot 仓库中可用的 Gateway 兼容脚本和策略。所有链接均指向开发分支,其中维护着最新版本。
| 名称 | 类型 | 描述 | 支持的模式 |
|---|---|---|---|
| AMM 数据源示例 | 脚本 | 从 AMM 资金池获取实时价格数据并监控资金池储备 | 路由器、AMM、CLMM |
| AMM 交易示例 | 脚本 | 在 AMM 和 CLMM 资金池上执行代币兑换,支持配置参数 | 路由器、AMM、CLMM |
| LP 管理仓位 | 脚本 | 管理流动性头寸,包括添加、移除和收取费用 | AMM、CLMM |
| AMM 套利 | V1 策略 | 在中心化交易所和去中心化交易所之间进行套利 | 路由器、AMM、CLMMuter |
| 跨交易所做市 | V1 策略 | 使用 Gateway 连接器作为吃单市场的做市策略 | 路由器、AMM、CLMM |
| 套利控制器 | V2 控制器 | 在两个市场之间创建套利执行器(ArbitrageExecutors) | 路由器、AMM、CLMM |
| XEMM 控制器 | V2 控制器 | 在两个市场之间创建跨市场做市执行器(XEMMExecutors) | 路由器、AMM、CLMM |
代码片段¶
以下代码片段展示了在 Hummingbot 脚本和策略中常见的网关操作。
数据源¶
amm_data_feed = AmmGatewayDataFeed(
connector="jupiter/router",
trading_pairs={"SOL-USDC","JUP-USDC"}
order_amount_in_base=Decimal("1.0")
)
连接市场¶
@classmethod
def init_markets(cls):
cls.markets = {"jupiter/router": {"SOL-USDC"}}
def __init__(self, connectors: Dict[str, ConnectorBase]):
super().__init__(connectors)
获取价格¶
current_price = await self.connectors["jupiter/router"].get_quote_price(
trading_pair="SOL-USDC",
is_buy=True,
amount=Decimal("1.0"),
)
获取余额¶
connector = self.connectors["jupiter/router"]
await connector.update_balances(on_interval=False)
balance = connector.get_balance("SOL")
下单¶
connector = self.connectors["jupiter/router"]
order_id = connector.place_order(
is_buy=True,
trading_pair="SOL-USDC",
amount=Decimal("1.0"),
price=current_price,
)
获取做市商仓位信息¶
position_info = await self.connectors["jupiter/router"].get_position_info(
trading_pair="SOL-USDC",
position_address="<position-address>"
)
添加流动性¶
order_id = self.connectors["meteora/clmm"].add_liquidity(
trading_pair="SOL-USDC",
price=current_price,
upper_width_pct=10.0,
lower_width_pct=10.0,
base_token_amount=0.1,
quote_token_amount=20,
)