DEX 卖币提示价格影响太高:池子多深、这一单能换回多少怎么估
Price Impact 提醒你:这一单本身会把成交价格推差。v2 恒定乘积池可以用储备量估算到手数量;集中流动性池不能直接套这个算法。调高滑点容忍度,也不会让池子变深。

在自动做市商(AMM)型 DEX 上卖一个小币,如果确认页的 Price Impact 已经是两位数,先别急着调高滑点。这表示你这一单对可用流动性的冲击很大,即使报价原样成交,也可能比卖出前的池价吃亏不少。
我建议先分清池子类型:v2 这类恒定乘积池,拿两种币的储备就能估算;v3、v4 这类集中流动性池,要看当前价格区间的流动性和实际交易路线。下面用前一种池子算出到手数量,再判断拆单和调滑点各能改变什么。
价格影响是什么意思:这一单自己把价格砸下去多少
Uniswap 帮助中心的 What is price impact? 一页给的定义很短:价格影响是你自己的交易直接造成的代币价格变化。同一页接着说,它取决于流动性池的大小,池子流动性高,影响可能小;流动性低,影响可能大;影响越大,你可能承受的损失越大。
它常和滑点混着说,其实是两件事。帮助中心的 Price Impact vs Price Slippage 把两者分开:
- 价格影响:你这一单本身造成的价格变化。
- 滑点:你预期拿到的价格,和兑换完成后实际拿到的价格之间的差。
换成大白话:价格影响估的是你这一单自己的作用;滑点是报价到成交之间发生的变化,比如别人的单抢在你前面成交。固定卖出数量时,滑点容忍度限制实际到手能比报价少多少;低于订单设定的最低接收数量,交易通常会回滚。报价期间池子还在变,先前显示的价格影响也不是成交保证。
交易所现货是另一套机制:你的卖单去吃订单簿上一档一档的买单。本文讲的 AMM 池子按公式定价,不按订单簿逐档撮合买卖单。所以在交易所看深度的办法,搬到池子上不完全适用,订单簿那边的读法见成交量大,为什么现货卖单仍不成交。
池子越浅,砸得越狠:一组能复算的数字
开发者文档的 How Uniswap Works 写了池子怎么定价:用恒定乘积公式,x 和 y 是池中两种代币的储备余额,k 是每笔交易后必须保持不变(或变大)的乘积。同页还有一句,相对池子深度越大的交易,价格移动越多,小额交易则更接近当前价。
以下只计算单个 v2 式恒定乘积池,假定没有代币税、其他交易或增减流动性,先不计兑换手续费。x 是待卖代币储备,y 是另一种币的储备;卖出 Δx 个代币:
换回数量 = y × Δx ÷ (x + Δx)
到手均价比卖之前的池价低多少 = Δx ÷ (x + Δx)
第二行的意思是:你卖出的数量,占「池里这个币原有储备加上你卖进去的量」多大比例,你的均价就比现价低多少。这个比例跟币价无关,只看你这一单相对池子有多大。
下面是一组假设:池里有 10 万枚某代币和 1 万 USDT,池价 y ÷ x = 0.1 USDT。卖完后池价 = (y − 换回数量) ÷ (x + Δx):
| 卖出数量 | 能换回的 USDT | 均价 | 均价比池价低 | 卖完后池价 |
|---|---|---|---|---|
| 1,000 | 99.01 | 0.0990 | 约 0.99% | 0.0980(约低 2%) |
| 5,000 | 476.19 | 0.0952 | 约 4.76% | 0.0907(约低 9.3%) |
| 20,000 | 1,666.67 | 0.0833 | 约 16.67% | 0.0694(约低 30.6%) |
| 50,000 | 3,333.33 | 0.0667 | 约 33.33% | 0.0444(约低 55.6%) |
拿第二行复算一遍:10,000 × 5,000 ÷ 105,000 = 476.19;5,000 ÷ 105,000 ≈ 4.76%。账面上 5,000 枚按 0.1 算值 500 USDT,实际只拿回 476 左右,差的那 24 块就是你自己砸出来的。
注意最后一列。你这一单是从卖前价格一路砸到卖后价格,均价落在中间,所以卖完后池价掉得比你的均价吃亏得多:单子小的时候接近两倍,单子越大倍数越低。下一个想卖的人,面对的就是你留下的那个价。
手续费再叠在上面。v2 的 Pools 页说明了 0.3% 兑换费。本文引用的官方说明查阅于 2026 年 10 月;实际交易先看所选池子当时的费率和最低接收数量。按这一费率计算,有效输入 = Δx × 0.997,到手 = y × 有效输入 ÷ (x + 有效输入)。卖 5,000 枚约拿回 474.83 USDT,比不算费少 1 块多;手续费留在池内,更新下一笔储备时,x 仍增加完整的 5,000 枚。其他版本和其他 DEX 要按各自的池子规则算。
不能只看“全价格区间”几个字就套公式,还要确认采用恒定乘积定价。前面的 How Uniswap Works 文档说明,v3、v4 的公式在各价格区间内应用。集中流动性的资金可能只在窄区间内生效,区间外的余额不能当作当前可用深度;把全池余额直接塞进上表,连量级也可能估错。这类池子应查看界面的路线、预期到手和价格影响,不能用这里的储备简算替代报价。
卖之前自己估:找到池子储备,算你这一单占多大
估之前,先确认代币合约地址、网络、池子版本,以及报价路线是否只经过这一个池子。找到池子地址与资产余额的步骤,流动性池锁仓怎么查那篇有分步写法,这里不重复。
确认是单个 v2 式池子后,在区块浏览器的 Read Contract 中读 getReserves,并用 token0、token1 确认顺序、按各币 decimals 换算。直接转进合约但尚未同步的币,可能让代币余额不同于定价储备;拿不准时不要把余额当储备。然后按这个顺序估:
- 记下待卖代币的储备 x 和另一种币的储备 y,单位都用完整币数。
- 用你打算卖的数量除以(x 加上这个数量),得到的百分比,就是不算手续费时均价大约要低的幅度。
- 把这个比例和确认页显示的价格影响对一下。数值相近只能说明估算大致相符,不能证明选对池子;还要核对路线里的地址。差得大时,重新检查储备单位、手续费、代币税,以及是否经过多个池子。
这里算的是成交均价相对卖前池价的折让,界面也可能采用不同的参考价或把费用计入显示值。比较之前先看字段说明,不能仅凭两个百分比不同就断定报价有错。
有几种情况估出来的数会偏:代币自带买卖税时,到手还要再少一截,查法见带税代币怎么查;聚合器可能把一单拆到好几个池子;你看余额和你真正提交之间,别人的交易也在改池子。因此偏差可能变大,也可能偶然缩小,估算不能代替确认页的实际报价。
价格影响警告和 Price Impact too High,拦的是什么
前面那篇价格影响帮助页展示了一种警告:价格影响高到可能造成明显损失时,界面会发出价格影响警告,你仍然可以自担风险点「Swap Anyway」继续换。也就是说,这个警告拦你一下,不替你做决定。
PancakeSwap 的 Troubleshooting Errors 页把「Price Impact too High」列成一条报错,给的原因只有一句:流动性低造成的;办法是少换一点,或者在设置里调高滑点容忍度再试。

这两个办法要分开看。少换一点,是真的让你这一单相对池子变小,价格影响跟着降。调高滑点,池子一点没变深,变的只是你愿意接受的最差结果。在一个本来就浅的池子里把滑点拉高,等于告诉合约:比现在更差的价我也认。
所以碰到这条报错,先看路线和预期到手;只有符合上一节条件的池子才做储备简算。两位数的折让意味着这笔交易代价很大,能否提交还取决于界面与合约限制,别把“能成交”当作“价格合适”。
拆成几笔卖,能少亏吗
拆单本身不省钱。还是那个 10 万枚对 1 万 USDT 的池子,一次卖 20,000 枚和连着卖四笔 5,000 枚,中间没有其他交易或增减流动性的话,按公式不算手续费时到手完全一样,都是 1,666.67 USDT;算上 0.3% 手续费,四笔合计约 1,662.21,一次卖约 1,662.50,拆开反而少一点,链上每笔还要多付一次网络费。
拆单后的下一笔能否拿到更好报价,要看两笔之间池子有没有变化:有人买入抬价、有人增加流动性,或下一笔改走更深的池子,都可能改善结果。v2 的 Pools 页提到过,池子价格和外部价格偏离时,会出现套利机会,外部的人很可能去做。一个在别处也有交易的币,你砸低池价后可能有人过来搬砖,下一笔面对的价格就回来一些。一个只在这一个池子里交易的陌生小币,没有别的市场可以对价,你砸下去的价可能就停在那里。
所以真正要判断的是:这个币除了这个池子,还有没有别的地方在交易、有没有人在买。两位数的价格影响加上没有别的市场,硬点 Swap Anyway 就是拿自己的币去填池子的坑,不如先承认这一单当下卖不出账面价。
池子会不会更深或更浅,也不全由你等不等决定。流动性提供者可以把钱撤走,LP 凭证在谁手里、有没有锁,会影响流动性何时、由谁能够撤走,这一项回到前面那篇锁仓文去查。
卖完之后,用成交记录对一遍实际到手
成交以后,在区块浏览器打开这笔交易,先认出自己的钱包,再沿代币转账记录确认卖出币的净支出和收款币的净到账。多跳兑换可能经过路由器或中间池,不能随便挑一条“池子转出”记录当成自己收到的金额。两边数量都能对应清楚时,用净到账除以卖出币净支出,得到实际均价;网络费另算。
把实际净到账和提交前保存的预期到手比较,可以看到报价与成交的差别;滑点也可能向有利方向变化。再用路线、手续费和代币税解释差额,不能只拿卖前池价就把几项损失精确拆开。钱包转出与某个池子收到的量不一致时,还要排除中间转账、聚合路线和日志缺失,才能判断是不是代币扣税。
这份成交记录只能说明这笔交易发生了什么。下次卖出仍要重新读报价和池子状态,尤其别把今天的深度当作一直存在。
买入和卖出,三个容易算混的地方
买入的时候也有价格影响吗?
有,但买入均价上涨的百分比不能直接照搬卖出的折让公式。在同一个无手续费、无代币税的恒定乘积池中,投入 Δy 个稳定币,买入均价比原价高的比例是 Δy ÷ y。沿用 10 万枚代币、1 万 USDT 的池子,投入 1,000 USDT 可买到约 9,090.91 枚,均价为 0.11 USDT,比原价 0.1 高 10%。
确认页上的价格影响和滑点容忍度,要加起来算吗?
不用这样相加。预期到手已经反映报价路线和该笔交易的价格影响;固定卖出数量时,滑点容忍度限制实际到手还能比报价少多少。下单时看最低接收数量,低于该限额的兑换通常会回滚。
价格影响显示很低,是不是就说明这个币好卖?
只能说明按当前报价的计算方式,这个数量的交易影响较小。它不能保证流动性不会被撤走,也不能排除代币税或卖出限制;不同界面对费用的呈现方式不同,仍要另查流动性控制权和代币合约。