输入/搜索内容
内置函数
结构体
内置变量与常量
通用约定
交易所

查看池子在一段区间内的流动性分布,按bin或tick分段给出两种代币的数量。

exchange.IO(k, poolId)
exchange.IO(k, poolId, lower, upper)
exchange.IO(k, poolId, lower, upper, step)

示例

  • 找出Meteora池子现价附近流动性最厚的bin。

    javascript
    function main() { var pool = exchange.IO("lp.select", "SOL", 100, {quote: "USDC", protocol: "meteora"}) if (!pool) { Log("选池失败:", GetLastError()) return } var d = exchange.IO("lp.ticks", pool.id) if (!d) { Log("查询失败:", GetLastError()) return } var ranked = d.segments.map(function(s) { return {seg: s, value: s.amountX * d.price + s.amountY} }) ranked.sort(function(a, b) { return b.value - a.value }) var best = ranked[0] Log("active bin", d.activeId, "价格", d.price, "共", d.segments.length, "个bin") Log("最厚的bin", best.seg.binLower, "价格", best.seg.priceLower, "约", Math.round(best.value), d.symbolY) }
  • 把Raydium池子现价上下约10%按100个tick(约1%)一段汇总。

    javascript
    function main() { var pool = exchange.IO("lp.select", "SOL", 100, {quote: "USDC", protocol: "raydium"}) if (!pool) { Log("选池失败:", GetLastError()) return } var d = exchange.IO("lp.ticks", "raydium:" + pool.id, pool.tick - 1000, pool.tick + 1000, 100) if (!d) { Log("查询失败:", GetLastError()) return } d.segments.forEach(function(s) { Log(s.current ? "*" : " ", s.priceLower.toFixed(2), "-", s.priceUpper.toFixed(2), s.amountX.toFixed(2), d.symbolX, s.amountY.toFixed(2), d.symbolY) }) }

返回值

类型描述

object / 空值

DLMM池子为{pool, activeId, binStep, price, tokenX, tokenY, symbolX, symbolY, segments};Raydium为{pool, tick, tickSpacing, price, tokenX, tokenY, symbolX, symbolY, segments},Orca另有liquidity(现价处的流动性)。segments为各段,字段见备注。请求失败、区间超出上限时返回空值。

参数

名称类型必填描述

k

string

是

固定为lp.ticks,用于查看流动性分布。

poolId

string

是

池子地址,写法同lp.pool的poolId。

lower

number

否

区间下沿:DLMM为bin号,Raydium、Orca为tick。不传lower、upper时取现价附近的默认区间,见备注。

upper

number

否

区间上沿,单位同lower。

step

number

否

每段的宽度:DLMM为bin数(默认1),Raydium、Orca为tick数(默认一个tick间距)。

参考

备注

各协议的区间与分段
协议不给区间时上限segments的每一项
Meteora DLMMactive bin上下各35个bin一次1400个bin{binLower, binUpper, priceLower, priceUpper, amountX, amountY, current}
Raydium CLMM现价上下约10%连同现价一次读200个TickArray、2000段{tickLower, tickUpper, priceLower, priceUpper, liquidity, amountX, amountY, current}
Orca Whirlpools当前tick上下各35个tick间距一次2000个tick间距同Raydium

  • 价格为Y/X(池子自己的顺序,同lp.pool);amountX、amountY为可读单位;current为true的段含有现价。
  • DLMM:active bin里两种代币都有,往上的bin只有X,往下的只有Y;每段的数量是池子里这些bin的实际余额。
  • Raydium:区间两端向外对齐到tick间距,按TickArray里已初始化的tick从现价流动性推出每段的流动性与两种代币数量,liquidity为段内最大的流动性。tick间距为1的池子默认区间有近2000段,可以用step合并。
  • Orca:区间两端向外对齐到tick间距,step向上取整到tick间距;每段给出段首那一格的活跃流动性,以及这份流动性在整段上折算的两种代币数量。