关于 nansen-limit-orders
面向 nansen-cli 用户的限价单技能:在 Solana 上管理原生订单,并为其他链提供结算提醒方案。它区分价格触发与链上结算信号,涵盖订单创建、查询、修改和取消。
主要功能
- 01创建、查询、取消和修改 Solana 限价单
- 02按代币单位设置金额和触发条件
- 03设置有效期和滑点选项
- 04在其他链使用转账提醒作为结算信号
适用场景
- 01在 Solana 上设置达到目标价格时执行的订单
- 02查看或修改进行中及历史订单
- 03在交易链上结算后接收代币转账提醒
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ nansen-ai/ nansen-cli --skill nansen-limit-orders安装后在 Claude Code 中输入/nansen-limit-orders确认已加载。
详细介绍
身份验证
Nansen 账户 API 调用接受已选定的 nansen:api 浏览器会话,或具有相同权限的常规 API 密钥。NANSEN_API_KEY 优先;可选的 primaryEnv 可保留已配置密钥的注入方式。运行 nansen auth status 可离线选择。仅缓存的访问令牌过期时,可在获授权的任务期间自动续期。若选择匿名状态、状态无效、续期受阻或存在不确定性,或实际身份验证失败,则停止;切勿丢弃凭据或回退到匿名 x402 付款。浏览器登录不会授予钱包签名权限、特权服务身份或持久化 MCP 集成密钥。请保留下文所有确认、签名、制裁和地理位置检查。CLI 2.0.0 中提供浏览器登录,但仅限于 macOS arm64 预览范围。
限价单
当用户需要价格触发订单时,使用此技能。这里有两种不同的路径——请根据用户的链选择:
- Solana → 原生限价单。
nansen trade limit-order create|list|cancel|update通过 Nansen 交易 API 下达真实的挂单。Solana 上的所有订单都使用此方式。 - 其他链 → 基于警报的近似方案。
nansen-cli尚不能在 EVM 链上下达 原生限价单。请在支持限价单的场所(CEX、DEX 限价单产品)下达挂单,并在结算钱包上创建配套的common-token-transfer智能警报,尽可能将其用作成交信号。
前提条件
- 在
nansen-cli中配置 Solana 钱包:nansen wallet show <name>(若不存在,则运行nansen wallet create)。trade limit-order支持本地、Privy 和 WalletConnect 钱包。 - 钱包必须持有卖出代币,以及少量用于支付费用的 SOL。
- 对于警报备用方案:需要一个通知渠道(Telegram 聊天 ID、Slack 或 Discord webhook,或通用 webhook URL)。
- 使用智能警报时,需选定 nansen:api 浏览器会话或常规 API 密钥;现有端点限制仍然适用。
- 首次运行
trade limit-order create会自动注册交易金库,并将 JWT 缓存至~/.nansen/limit-order-auth.json,有效期约为 23 小时。
两种机制,而非一种。 限价单本身由价格触发——当市场价格越过目标价时执行。配套的智能 警报用于确认结算——交易在链上结算后触发(即买入的代币实际到账时)。两者相互独立:订单负责触发,警报会告知用户 成交已到账。
Solana:原生限价单
创建
# --amount is always in token units (e.g. 1 = 1 SOL, 80 = 80 USDC)
nansen trade limit-order create \
--from SOL --to USDC \
--amount 1 \
--trigger-mint SOL --trigger-condition below --trigger-price 80
# with explicit slippage and expiry
nansen trade limit-order create \
--from SOL --to USDC \
--amount 1.5 \
--trigger-mint SOL --trigger-condition above --trigger-price 200 \
--slippage-bps 300 \
--expires 7d
必需标志:--from、--to、--amount、--trigger-mint、
--trigger-condition(above 或 below)、--trigger-price(美元)。
关键选项:
--amount始终以代币单位(人类可读)表示。1.5表示 1.5 SOL,80表示 80 USDC。没有基本单位模式,也没有金额单位覆盖标志—— 请勿传入此类标志。--slippage-bps <bps>— 基点,整数 0–10000(300= 3%,100= 1%)。 省略则自动设置。--expires接受24h、7d、30d(默认值),或 epoch 毫秒时间戳。- 使用
--wallet <name>或--wallet walletconnect(别名wc)选择非默认 钱包。
限制(均由服务器端强制执行——请原样向用户展示错误):
- 订单最低金额(最近一次约为 $10)。低于此金额时,API 会拒绝订单。
--from和--to必须是有效的 Solana 铸币地址或受支持的符号 (SOL、USDC、USDT 等)。使用nansen research search查询未知代币。- 带有转账钩子扩展的代币(例如某些 pump.fun 代币)会在创建时被拒绝。
列表
nansen trade limit-order list # default
nansen trade limit-order list --state active # only open
nansen trade limit-order list --state past # filled or cancelled
nansen trade limit-order list --mint <mintAddr> # filter by token
nansen trade limit-order list --limit 50 --offset 0 --dir desc
选项:--state active|past、--mint <addr>、--limit <n>(默认值为 20)、
--offset <n>、--sort <field>、--dir asc|desc(默认值为 desc)、
--wallet <name>。
取消
nansen trade limit-order cancel --order <orderId>
取消操作会提交一笔撤回交易;请从 CLI 输出中显示交易签名,以便用户在 Solscan 上验证。
更新
nansen trade limit-order update --order <orderId> --trigger-price 85
nansen trade limit-order update --order <orderId> --slippage-bps 100
只有 --trigger-price 和 --slippage-bps 可以更新。若要更改数量或代币对,请先取消再重新创建。自动滑点只能在创建时设置(在 create 中省略 --slippage-bps);update 无法将固定滑点恢复为自动滑点。
非 Solana 链:基于告警的结算信号
nansen-cli 目前无法在 EVM 链上创建原生限价订单。可用的近似方案是:
- 在支持限价单的场所或产品上挂出限价单(CEX、DEX 限价单产品、聚合器)。价格触发由该场所处理。
- 使用同一个钱包作为结算钱包。
- 创建一个限定钱包 + 链 + 代币 + 方向的
common-token-transfer智能告警。交易结算后告警才会触发——也就是说,买入或卖出的代币实际在链上转移后,告警会发出成交检测信号。
两种机制的配合方式:
- 价格达到目标 → 场所执行限价单。 这是触发条件。
nansen-cli不参与其中。 - 代币到达钱包 → 智能告警发出通知。 这是结算确认。告警无法看到价格触发,只能看到由此产生的转账。
这是尽力而为的结算信号,并非权威的订单跟踪。它不会提供订单状态轮询、部分成交进度、triggeredAt、fillPercent、剩余数量或规范的成交/取消历史。
买入侧结算告警
nansen alerts create \
--name 'Settlement signal: buy PEPE on trading wallet' \
--type common-token-transfer \
--chains ethereum \
--events buy \
--subject address:0xYourWallet \
--token 0x6982508145454ce325ddbe47a25d4ec3d2311933:ethereum \
--telegram 5238612255
卖出侧结算告警
nansen alerts create \
--name 'Settlement signal: sell USDC on trading wallet' \
--type common-token-transfer \
--chains base \
--events sell \
--subject address:0xYourWallet \
--token 0x833589fcd6edb6e08f4c7c32d4f71b54bda02913:base \
--telegram 5238612255
告警加固
- 使用
--usd-min <amount>过滤微额成交。 - 使用
--description '<limit price / venue / notes>',让告警记录交易意图。 - 不要推荐不筛选代币、针对整个钱包的转账告警——这会触发过多。
- 不要将告警通知描述为“订单已成交”或“已触发”。告警只能证明钱包上观察到了符合条件的代币转账,无法精准检测成交。
- 如果场所的结算方式被告警后端归类为普通转账,而非
buy/sell,范围较窄的告警可能会漏报。只有在用户接受更宽泛的匹配范围及匹配到无关交易的风险时,才扩大为--events buy,receive或--events sell,send。
可选:Solana 上的额外保障
对于 Solana 原生限价单,可选但实用的做法是在结算钱包上配套设置 common-token-transfer 告警。这是结算确认,不是价格触发。 限价单本身负责处理价格触发;当买入的代币实际到达钱包时(卖出时则是卖出的代币离开钱包),告警便会触发——这证明链上成交已到账,并通过 Telegram/webhook 独立于 trade limit-order list 轮询进行通知。
有些场所会通过相关程序路由成交,而告警后端可能无法将其归类为 buy/sell,因此这仍是尽力而为的结算信号,并非权威的成交检测。请配合使用上文所示的同类 common-token-transfer 告警。
告知用户的内容
建议设置配套告警时,请明确说明这里涉及两种不同机制——用户经常会将二者混淆:
- 限价单负责价格触发。市场价格穿过目标价时,限价单便会执行。
- 智能告警负责结算确认。交易在链上结算后,告警会发出通知。
建议措辞:“订单成交、代币到达钱包后,你会收到 Telegram 通知。价格触发由限价单本身处理,告警只负责确认成交已到账。”
避免使用暗示告警会“触发”订单,或告警本身会监控价格的措辞。两者都不是告警的作用。
备注
- 告警的链别名:Hyperliquid =
hyperevm,BSC =bnb。 - 名称包含
$或特殊字符时,请使用单引号。 - 对于即时兑换(非价格触发),请使用
nansen-trading技能。 - 如需通过 webhook 投递告警,请与
nansen-alerts-webhook-listener搭配使用。