策略与代码片段
网关通过 Hummingbot 在去中心化交易所上实现复杂的交易策略。本页面列出了可用的网关兼容策略/脚本以及常用的代码片段。
可用脚本和策略¶
下表列出了 Hummingbot 存储库中可用的网关兼容脚本和策略。所有链接都指向开发分支,其中维护最新版本。
名称 | 类型 | 描述 | 支持的模式 |
---|---|---|---|
AMM 数据源示例 | 脚本 | 从 AMM 池获取实时价格数据和监控池储备 | Router, AMM, CLMM |
AMM 交易示例 | 脚本 | 在 AMM 和 CLMM 池上执行代币交换,具有可配置参数 | Router, AMM, CLMM |
流动性位置管理 | 脚本 | 管理流动性位置,包括添加、移除和收取费用 | AMM, CLMM |
AMM 套利 | V1 策略 | CEX 和 DEX 市场之间的套利 | Router, AMM, CLMMuter |
跨交易所做市 | V1 策略 | 以网关连接器作为吃单市场进行做市 | Router, AMM, CLMM |
套利控制器 | V2 控制器 | 在两个市场之间创建套利执行器 | Router, AMM, CLMM |
XEMM 控制器 | V2 控制器 | 在两个市场之间创建 XEMM 执行器 | Router, 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,
)