会买的是徒弟,会卖的是师傅
你已经学会了如何用 Jito Bundle 在开盘第 0 秒买入。但这只是游戏的一半。 在 Solana 的土狗市场,代币价格波动极其剧烈。1 分钟内翻 10 倍,下一分钟归零是常态。
如果没有自动化的卖出策略,你很可能从浮盈 500% 变成 亏损 90%。本节将教你如何编写"卖出逻辑"。
1. 核心策略:你需要一个计划
机器人必须毫无感情地执行预设的数学逻辑。常见的策略有三种:
A. 硬止盈/止损 (Fixed TP/SL)
最简单的策略。
- 止盈 (Take Profit): 涨幅达到 +100% (翻倍) -> 卖出 50% 本金。
- 止损 (Stop Loss): 跌幅达到 -30% -> 全部卖出,认赔离场。
B. 移动止损 (Trailing Stop) —— 捕捉大牛股的神器
这是最推荐的策略。由于我们不知道它能涨多高,我们设置一个回撤阈值。
- 逻辑:如果当前价格从历史最高点 (ATH) 回撤了 X%,就卖出。
- 示例:设置回撤 20%。
- 价格从 1.0 涨到 2.0。触发价 = 1.6。
- 价格继续涨到 5.0。触发价 = 4.0。
- 价格跌回 4.0 -> 卖出!
- 优点:能吃完大部分涨幅,而不是过早下车。
C. 时间止损 (Time-based Stop)
有些盘子是不涨不跌的"僵尸盘"。
- 逻辑:如果买入后 10 分钟内,涨幅未超过 20%,就卖出。
- 目的:提高资金利用率,去寻找下一个机会。
2. 价格监控的实现
要执行策略,首先要知道当前价格。Solana 上有两种获取价格的方式:
方式一:监听池子储备 (最快)
对于 Raydium AMM,价格 = SOL_Reserve / Token_Reserve。
你可以监听 Pool Account 的变化:
typescript// 监听 Pool 账户变化 connection.onAccountChange(POOL_ADDRESS, (accountInfo) => { const data = LAYOUT.decode(accountInfo.data); const solReserve = data.baseReserve; const tokenReserve = data.quoteReserve; const price = solReserve / tokenReserve; checkStrategy(price); // 触发策略检查 });
方式二:模拟卖出 (最准)
有时候池子算法复杂,直接算可能有误差。 你可以每隔 1 秒构造一笔"卖出"交易,发给 RPC 进行 Simulate (模拟执行),查看模拟结果中的金额变化。这能算出包含滑点和手续费的真实到手价格。
3. 构建卖出交易
卖出本质上就是一笔 Swap:Token -> SOL。
与买入不同的是:
- 无需 Jito:卖出通常不需要防夹子(因为你已经是急着跑路了),直接发给 TPU 更快。如果为了稳妥,也可以用 Jito。
- 高滑点:当发生 Rug Pull 或崩盘时,价格是垂直下跌的。你的滑点设置必须非常大(例如 20%~50%),否则交易会因为
Slippage Exceeded失败,导致你被埋。 - 优先费:逃跑时人很多,记得拉高优先费。
typescriptasync function executeSell(percentage = 1.0) { const balance = await getTokenBalance(mint); const amount = Math.floor(balance * percentage); // 卖出比例 const sellIx = makeSwapInstruction({ amountIn: amount, minAmountOut: 0, // Degen 模式:滑点 100%,只求卖出 // ... }); const tx = new VersionedTransaction(...); // 疯狂发送,直到确认 spamTransaction(tx); }
4. 仓位管理
不要一次梭哈。
- 初始买入:1 SOL。
- 翻倍时:卖出 50% (收回本金)。剩下的就是"利润奔跑 (Moonbag)"。
- 归零时:只要触发止损,坚决全部卖出。不要有"它会涨回来"的幻想。
在右侧的模拟器中,尝试调整策略参数,看看在面对不同的 K 线走势时,哪种策略赚得最多?