跳到主要内容

策略

反复出现的模式,每一个都是可以装到狙击机器人或跟单机器人上的小部件。示例里全部通过 Lightspeed 交易;Local Trade API 可以为你自己的密钥构建同样的交易。

退出​

每个仓位在开仓之前都需要三种退出:目标价、止损和时钟。价格来自池子的实时交易:

socket.emit("subscribe_trades", { pool });
socket.on("trade", (t) => {
const x = t.price / entry;
if (x >= 2.0) sell("take profit");
if (x <= 0.6) sell("stop loss");
if (Date.now() - since > 120_000) sell("timer");
});

两个值得做的改进:移动止损,当价格从入场后的最高点回落 25% 时卖出,而不是固定止损;以及分批退出,2 倍时 amount: "50%",剩下的交给移动止损,这样一只会跑的币不会在第一个目标价就被整个卖掉。

仓位大小​

按你能承受的亏损定仓位,而不是按你希望赚到的。一个简单的规则:每个仓位冒钱包 1% 的风险,那么在 40% 止损下仓位就是钱包的 2.5%。限制同时持有的仓位数量,连续三次止损后把仓位减半。在启动时和每笔交易落地后用 GET /api/lightspeed/account 读取钱包,而不是自己记账。

发射筛选​

发射事件告诉你的不只是名字。mintAuthority 或 freezeAuthority 被设置时跳过,pump.fun 代币的 tokenExtensions 不为空时跳过,initialBuy 缺失或很小时跳过,创建者在过去一小时内发射过别的东西时跳过(维护一张创建者映射)。要求 uri 能响应并且带有图片。这些都不是万无一失的;合在一起,它们能剔除大部分没有后续的发射。

定投建仓​

不是一次买入,而是隔几秒的几次小额买入,这样一次糟糕的成交不会决定入场价:

for (let i = 0; i < 4; i++) {
await lightspeed({ action: "buy", mint, amount: 0.025, slippage: 10 });
await new Promise((r) => setTimeout(r, 3000));
}

同样的循环换成 sell 和一个百分比,就能随时间分批退出一个仓位。

在 K 线上抄底​

subscribe_ohlcv 提供 1 秒 K 线。一只涨了很多的币打出一根超过 15% 的阴线而成交量仍然很高,那是上升趋势中的回调;成交量崩掉的那只则是顶部。保留最近 60 根 K 线,计算最高点,当收盘价比最高点低 20% 以上且最近三根 K 线的成交量高于平均值时买入,在前高卖出。

迁移玩法​

完成曲线的 pump.fun 代币会迁移到 PumpSwap;数据流的 migrate 和 createPool 操作以及 subscribe_migrations 会告诉你何时发生。新池子上的最初几分钟波动很大:一种做法是在迁移事件上买入,在第一波拉升中卖出;另一种是等池子上第一次 20% 的回调。如果缓存慢了一拍,在买入时传 pool: "pumpswap"。

跟的是量,不是名字​

数据流的 breakdown 展示一笔交易里的每个交易者。在一个不到一分钟的币上超过 5 SOL 的买入本身就是信号,不管是谁发的。按 mint 在 10 秒窗口内计数;来自不同钱包的三笔大额买入比一笔更有分量。

不要做什么​

  • 不要用滑点去追。需要 40% 滑点才能落地的买入就是不该做的买入。
  • 不要因为“它会涨回来”就留着没有退出的仓位。
  • 不要在 100 毫秒之外的区域运行还指望排第一;选最近的那个,见区域。
  • 不要轮询 REST 获取价格;数据流的存在就是为了让你永远不必这样做。