策略与代码片段
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,
                )
