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

列出钱包的Meteora DLMM、Raydium CLMM与Orca Whirlpools仓位,给出区间、当前数量、价值与未领手续费。

exchange.IO(k)
exchange.IO(k, filter)
exchange.IO(k, filter, wallet)

示例

  • 列出本钱包的仓位,标出出了区间的。

    javascript
    function main() { var list = exchange.IO("lp.positions") if (!list) { Log("查询失败:", GetLastError()) return } if (list.length == 0) { Log("没有仓位") return } list.forEach(function(p) { Log(p.id, p.symbol, p.priceLower.toFixed(4), "-", p.priceUpper.toFixed(4), p.inRange ? "区间内" : "出区间", "价值", p.value.toFixed(2), "未领手续费", p.feesValue.toFixed(4)) }) }
  • 只读查看另一个钱包的SOL/USDC仓位。

    javascript
    var WALLET = "" // 填要查看的Solana钱包地址 function main() { if (!WALLET) { Log("请先把WALLET设为一个钱包地址") return } var list = exchange.IO("lp.positions", "SOL_USDC", WALLET) if (!list) { Log("查询失败:", GetLastError()) return } list.forEach(function(p) { Log(p.protocol, p.id, p.inRange ? "区间内" : "出区间", "价值", p.value, "租金", p.rentSol) }) }

返回值

类型描述

array / 空值

仓位数组,每项的通用字段为{id, pool, protocol, symbol, fee, priceLower, priceUpper, price, inRange, liquidity, amountBase, amountQuote, value, feesBase, feesQuote, feesValue, rewards, rentSol, closed},另有协议自己的字段,见备注。节点不支持所需的查询、请求失败时返回空值。

参数

名称类型必填描述

k

string

是

固定为lp.positions,用于查询仓位。

filter

string

否

交易对(如SOL_USDC,只列这个交易对的仓位,并按它的朝向给价格与数量),或代币(只列含它的仓位);*或不传为全部。

wallet

string

否

另一个钱包地址:只读查看那个钱包的仓位。不传为本交易所对象的钱包。

参考

备注

通用字段
  • id为仓位ID,可以直接传给lp.increase、lp.decrease、lp.collect、lp.remove:DLMM为meteora:仓位账户地址,Raydium、Orca为raydium:仓位NFT的mint、orca:仓位NFT的mint。
  • symbol、价格与数量的朝向:给了交易对按交易对;否则稳定币(其次SOL)作计价币。price为现价,priceLower、priceUpper为区间两端的价格,inRange为现价是否在区间内。
  • amountBase、amountQuote为仓位现在的两种代币数量,value为按现价折成计价币的价值;feesBase、feesQuote、feesValue为未领的手续费;rewards为未领的farm奖励[{mint, symbol, amount}]。
  • rentSol为仓位押的租金(关仓时退回);closed为true表示仓位已经没有流动性、手续费与奖励(只剩账户,可以用lp.remove关掉退租金)。

各协议的字段
协议另有的字段说明
Meteora DLMMlowerBinId、upperBinId、activeId、binStep、width、feeOwnerwidth为bin数;liquidity为各bin份额之和;feeOwner不为null的仓位手续费归另一个钱包,不支持操作
Raydium CLMMtickLower、tickUpper、tick、tickSpacing、nftMint、positionAccount、nftAccount未领手续费与奖励按区间内的增长算到当前(奖励按发放速率推到当前时间)
Orca WhirlpoolstickLower、tickUpper、tick、tickSpacing、nftMint、positionAccount、nftProgram数量按流动性在现价折算,未领手续费与奖励按链上增长估算;Position Bundle里的仓位带bundleMint、bundleIndex,id为orca:仓位账户地址

怎样找到仓位
  • DLMM仓位用节点的getProgramAccounts按主人查找;官方公共节点支持,有的节点不支持或限流,这时报错。频繁查询建议在「节点地址」里配置自己的节点。
  • Raydium、Orca的仓位是NFT:用getTokenAccountsByOwner找钱包里数量为1的NFT,再读它们的仓位账户(Orca另列出钱包持有的Position Bundle里的仓位)。NFT在谁的钱包里,仓位就归谁。
  • 本进程lp.add建的仓位与lp.track登记的仓位也一并查(每次按链上主人核对,转走的、已关掉的不列)。

监控与撤退由策略自己做:按inRange、value与feesValue决定调仓、领取或止损。