mcpField
N
nansen-limit-orders

nansen-limit-orders

github.com/nansen-ai其他144129 次安装今天更新
代码仓库

关于 nansen-limit-orders

面向 nansen-cli 用户的限价单技能:在 Solana 上管理原生订单,并为其他链提供结算提醒方案。它区分价格触发与链上结算信号,涵盖订单创建、查询、修改和取消。

主要功能

  1. 01创建、查询、取消和修改 Solana 限价单
  2. 02按代币单位设置金额和触发条件
  3. 03设置有效期和滑点选项
  4. 04在其他链使用转账提醒作为结算信号

适用场景

  1. 01在 Solana 上设置达到目标价格时执行的订单
  2. 02查看或修改进行中及历史订单
  3. 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 链上创建原生限价订单。可用的近似方案是:

  1. 在支持限价单的场所或产品上挂出限价单(CEX、DEX 限价单产品、聚合器)。价格触发由该场所处理。
  2. 使用同一个钱包作为结算钱包。
  3. 创建一个限定钱包 + 链 + 代币 + 方向的 common-token-transfer 智能告警。交易结算后告警才会触发——也就是说,买入或卖出的代币实际在链上转移后,告警会发出成交检测信号。

两种机制的配合方式:

  1. 价格达到目标 → 场所执行限价单。 这是触发条件。nansen-cli 不参与其中。
  2. 代币到达钱包 → 智能告警发出通知。 这是结算确认。告警无法看到价格触发,只能看到由此产生的转账。

这是尽力而为的结算信号,并非权威的订单跟踪。它不会提供订单状态轮询、部分成交进度、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 搭配使用。

来源

评论

支持 Markdown