exchange.IO("lp.decrease", ...)
按比例减仓,同时领取仓位的全部手续费;仓位保留(比例为1时流动性清零但不销毁NFT)。
exchange.IO(k, positionId, ratio)
exchange.IO(k, positionId, ratio, options)示例
减掉一半流动性并把拿回的ETH卖成USDC。
javascript
function main() {
var id = "1381183" // 仓位ID,取自lp.add或lp.positions
var r = exchange.IO("lp.decrease", id, 0.5, {sell: true})
if (!r) {
Log("减仓失败:", GetLastError())
return
}
var p = r.positions[0]
Log("本金:", p.principalBase, "ETH +", p.principalQuote, "USDC")
Log("手续费:", p.feesBase, "ETH +", p.feesQuote, "USDC")
Log("卖出:", r.sells)
}返回值
| 类型 | 描述 |
object / 空值 |
|
参数
| 名称 | 类型 | 必填 | 描述 |
k | string | 是 | 固定为 |
positionId | string / number | 是 | 仓位ID。 |
ratio | number | 是 | 减掉的比例,大于0且不超过1。 |
options | object | 否 |
|
参考
Uniswap / PancakeSwap Aerodrome / Velodrome exchange.IO exchange.IO("lp.remove") exchange.IO("lp.collect") exchange.IO("lp.increase") exchange.IO("lp.positions")
备注
返回字段:txHash为交易哈希;positions逐个仓位给出撤出的本金principalBase、principalQuote,领到的手续费feesBase、feesQuote,以及实际到账receivedBase、receivedQuote(本金加手续费);sells为卖回计价币的市价单[{symbol, qty, txHash}],某笔卖出失败时该项为{symbol, qty, error},不影响其它;不卖时为空数组。数量都是可读单位,朝向按仓位的交易对(默认稳定币为计价币)。
与exchange.IO("lp.remove", ...)的区别:lp.decrease一次一个仓位、可以带价格保护,仓位NFT一直保留;lp.remove可以一次撤多个仓位,全部撤出时销毁NFT。只领手续费不动本金用lp.collect。
V3、Slipstream池子里原生币以包装币参与,拿回来的是包装币(如WETH),需要原生币时用exchange.IO("unwrap", ...)。Aerodrome、Velodrome:质押着的仓位要先用exchange.IO("lp.unstake")取回(基础池子只要钱包里未质押的LP代币够就可以);基础池子按比例取回LP代币对应的两种代币。