exchange.IO("lp.increase", ...)
给已有仓位加仓:预算按仓位区间与现价的配比拆成两种代币,缺的那种先换,然后加到同一个仓位里。
exchange.IO(k, positionId, budget)
exchange.IO(k, positionId, budget, options)示例
给价值最大的在区间内仓位加仓100 USDC。
javascript
function main() {
var ps = exchange.IO("lp.positions", "ETH_USDC").filter(function (p) {
return p.inRange && !p.closed
})
if (ps.length == 0) {
Log("没有在区间内的仓位")
return
}
ps.sort(function (a, b) { return b.value - a.value })
var r = exchange.IO("lp.increase", ps[0].id, 100, {symbol: "ETH_USDC"})
Log(r ? ["加仓", r.id, r.amountBase, "ETH +", r.amountQuote, "USDC"] : GetLastError())
}返回值
| 类型 | 描述 |
object / 空值 |
|
参数
| 名称 | 类型 | 必填 | 描述 |
k | string | 是 | 固定为 |
positionId | string / number | 是 | 仓位ID,取自 |
budget | number | 是 | 加仓预算,按计价币计。 |
options | object | 否 |
|
参考
Uniswap / PancakeSwap Aerodrome / Velodrome exchange.IO exchange.IO("lp.add") exchange.IO("lp.decrease") exchange.IO("lp.positions")
备注
加仓按仓位当前的区间(tick)重新做一个单一区间的计划再执行,资金、换币、授权与lp.add相同:缺的代币先用市价单换,交易对写原生币(如options.symbol为ETH_USDC)时原生币那一侧的付法同lp.add;钱包不够时报计划的shortfall说明。
Aerodrome、Velodrome:质押着的仓位要先用exchange.IO("lp.unstake")取回再加仓;基础池子(positionId为池子地址)加仓就是对这个池子再做一次lp.add,options.stake为true时加完质押。