exchange.IO("lp.select", ...)
按规则自动选择一个LP池子:在流动性充足的池子中选择24小时成交额最大的,或选择指定费率的池子。
exchange.IO(k, token, budget)
exchange.IO(k, token, budget, options)示例
选择一个ETH/USDC池子,再单独在V4池子中选择一个。
javascript
function main() {
var p = exchange.IO("lp.select", "ETH", 1000, {quote: "USDC"})
if (!p) {
Log("选池失败:", GetLastError())
return
}
Log("选中:", p.protocol, p.id, "费率:", p.feeRate, "理由:", p.reason)
// 只在V4池子中选择(PancakeSwap填infinity,Aerodrome、Velodrome填slipstream等)
var v4 = exchange.IO("lp.select", "ETH", 1000, {quote: "USDC", protocol: "v4"})
Log("V4池子:", v4 ? v4.id : GetLastError())
}返回值
| 类型 | 描述 |
object / 空值 | 选中的池子: |
参数
| 名称 | 类型 | 必填 | 描述 |
k | string | 是 | 固定为 |
token | string | 是 | 代币名称或合约地址,例如 |
budget | number | 是 | 预算,以计价币计,用于确定流动性门槛:池子的TVL至少为5000美元与预算二者中的较大值。 |
options | object | 否 | 选池条件 |
参考
Uniswap / PancakeSwap Aerodrome / Velodrome exchange.IO exchange.IO("lp.pools") exchange.IO("lp.plan") exchange.IO("lp.pool")
备注
options的各项:
| 键 | 说明 |
|---|---|
quote | 计价币,例如USDC;省略时,代币与本链包装币、USDC、USDT组成的池子都参与比较 |
fee | 优先使用的费率,以百万分之一为单位,例如500 |
exact | 为true时只使用fee指定的费率 |
protocol | 池子类型,字符串或数组:Uniswap为v3、v4,PancakeSwap为v3、infinity,Aerodrome、Velodrome为slipstream、slipstream2、volatile、stable |
tickSpacing | 只选择该tick间距的池子(主要用于Slipstream,其池子按tick间距区分) |
选池规则:先排除空池子以及不符合protocol、tickSpacing的池子;指定了fee时,若该费率的池子满足流动性门槛则选择它(reason为fee tier 500 requested),exact为true时即使不满足门槛也选择它,若不存在该费率的池子则报错;否则在TVL不低于5000美元与预算二者较大值的池子中选择24小时成交额最大的(largest 24h volume among pools with enough liquidity),没有成交数据时选择TVL最大的;所有池子都不满足门槛时选择TVL最大的,并在reason中说明。
候选池子即lp.pools列出的池子(Uniswap V4池子的来源及可能遗漏的情况,见lp.pools页面);如需使用清单之外的池子,可直接将其PoolId作为lp.plan的pool。
exchange.IO("lp.plan", ...)未指定pool时,按相同规则选池(fee、tickSpacing取自计划参数;对于Aerodrome、Velodrome,指定了range时只在Slipstream池子中选择)。Uniswap、PancakeSwap如需使用V4/Infinity CL池子建仓,应先用protocol选出池子,再将其id作为计划的pool。