mcpField
R
revx-trading

revx-trading

github.com/revolut-engineering其他7496 次安装1 周前更新
代码仓库

关于 revx-trading

revx-trading 是通过 `revx` 命令行在 Revolut X 下单、替换和取消订单的技能,支持市价、限价、条件单及止盈止损单;涉及资金的操作须先获用户确认。

主要功能

  1. 01提交市价单和限价单
  2. 02创建条件止损单
  3. 03设置止盈和止损触发价
  4. 04修改未完成订单
  5. 05取消未完成订单

适用场景

  1. 01提交市价或限价交易
  2. 02设置价格触发订单
  3. 03为持仓设置退出触发条件
  4. 04调整或取消现有订单

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/revolut-engineering/revolut-x-api --skill revx-trading

安装后在 Claude Code 中输入/revx-trading确认已加载。

详细介绍

交易(revx order place / revx order replace / revx order cancel)

下达市价单、限价单、条件单(止损单)和止盈/止损单,替换(修改)未成交订单,取消未成交订单。

需要身份验证。 运行这些命令前,请确保已安装并配置 revx。如果任何命令因身份验证问题而失败,例如出现 Auth not configured、No private key found、Authentication failed (401)、Invalid signature、insecure permissions,或在 ~/.config/revolut-x/ 下缺少密钥/配置文件,请立即调用 revx-auth 技能并自行修复问题。 不要中断用户并要求他们运行设置。只有在需要用户亲自完成的步骤(粘贴 API 密钥、在 Revolut X 个人资料中注册公钥)时,才请用户协助。修复后,重试原始命令。

交易对使用带连字符的 BASE-QUOTE 格式:BTC-USD、ETH-EUR、SOL-USD。使用 revx market pairs 检查交易对限制(参见 revx-market 技能)。

order place 和 order replace 支持使用 --json 或 --output json 输出机器可读格式。


Claude 的行为说明

必须获得用户确认

没有用户明确确认,绝不执行 revx order place、revx order replace 或 revx order cancel。 这些命令会动用真实资金。

运行任何订单命令前,先向用户提供确认摘要:

待下达订单:

  • 交易对:BTC-USD
  • 方向:买入
  • 类型:限价单 @ $95,000
  • 数量:0.001 BTC

是否继续?

对于条件单和止盈/止损单,在摘要中包含触发详情:

待下达订单:

  • 交易对:BTC-USD
  • 方向:卖出
  • 类型:条件单 — 价格达到 $100,000 时触发,随后以市价卖出 0.001 BTC

是否继续?

只有在用户明确同意后(例如“是”“继续”“执行”),才能执行。

对于 revx order cancel --all,请提醒用户这会取消所有未成交订单,并征得确认。

缺少参数时——务必询问,绝不猜测

所有必需参数都必须由用户提供。如果缺少任何参数,请先询问,再构建命令。

每种订单都需要以下参数:

  1. 交易对 — 哪个交易对?(例如,BTC-USD)
  2. 方向 — 买入还是卖出?
  3. 数量 — 下单多少?(基础货币使用 --qty,计价货币使用 --quote;止盈/止损单仅接受 --qty)
  4. 订单类型 — 市价单(--market)、限价单(--limit <price>)、条件单(--conditional)还是止盈/止损单(--tp/--sl)?

不同订单类型的额外要求:

  • 条件单还需要触发价格。也可以指定触发限价。
  • 止盈/止损单至少需要 --tp <price> / --sl <price> 其中之一。触发方向会根据买卖方向自动确定——绝不要传入触发方向。

绝不要擅自假定这些参数的默认值。 如果用户说“买点 BTC”,请询问:

  • 买多少?(以 BTC 数量或美元金额计)
  • 下市价单还是限价单?(如果是限价单,价格是多少?)

除非用户提出要求,否则可以省略可选标志(--post-only)。


下单

# Market order (buy 0.001 BTC at best price)
revx order place BTC-USD buy --qty 0.001 --market

# Limit order (buy 0.001 BTC at $95,000 or better)
revx order place BTC-USD buy --qty 0.001 --limit 95000

# Post-only limit (maker only, cancelled if would take)
revx order place BTC-USD buy --qty 0.001 --limit 95000 --post-only

# Limit order with time in force (immediate-or-cancel)
revx order place BTC-USD buy --qty 0.001 --limit 95000 --time-in-force ioc

# Quote-sized order (buy $500 worth of BTC at market)
revx order place BTC-USD buy --quote 500 --market

参数: <symbol> <side>

  • symbol:采用 BASE-QUOTE 格式(例如,BTC-USD、ETH-EUR)
  • side:buy 或 sell(不区分大小写)

标志:

标志说明
--qty <amount>基础货币的数量(例如,BTC 为 0.001)
--quote <amount>报价货币的数量(例如,USD 为 500)
--market市价单(除非选择其他订单类型,否则必填)
--limit <price>限价(除非选择其他订单类型,否则必填)
--time-in-force <value>gtc(默认值)或 ioc。仅限价单适用——下单时不接受 fok。
--post-only仅挂单执行(仅限价单适用)
--client-order-id <uuid>为订单指定自定义 ID,避免重试时重复下单(若未指定则自动生成)

必须指定 --qty 或 --quote 其中之一(不能同时指定)。

**读取结果:**交易所会返回订单状态,退出代码与该状态对应。使用 --json 时,对于交易所已响应的订单,会输出交易所返回的数据文档,并返回相同的退出代码;失败原因会输出到 stderr。若交易所直接拒绝请求,则仅将错误输出到 stderr。新订单需要几秒钟才会显示,因此请等待后再运行 revx order get 或 revx order fills。

状态含义退出代码
pending_new、new、partially_filled、filled已下单0
cancelled,市价单或 IOC 订单立即关闭。使用 revx order fills <id> 查看成交情况0
cancelled,任何其他订单交易所立即取消了订单。订单可能已部分成交,因此请先运行 revx order get <id> 检查,再重新下单1
rejected未下单。使用 --post-only 时,通常是因为价格会立即成交1
任何其他状态已发送。使用 revx order get <id> 检查0

**如果未收到回复:**每笔订单都会携带客户端订单 ID;除非通过 --client-order-id 指定,否则该 ID 会自动生成。如果订单可能已到达交易所后连接中断,或者交易所返回服务器错误,命令会以退出代码 1 退出,提示订单可能已下单,并将客户端订单 ID 输出到 stderr。stdout 会保持为空,即使使用 --json 也是如此,因此脚本应自行指定 --client-order-id(UUID)。在执行其他操作前,请先在 revx order open --json 中查找该 ID;如果订单已成交,则在 revx order history --json 中查找。市价单可能需要几分钟才会显示。若要重试,请使用 --client-order-id <that ID> 运行相同的命令:如果第一次下单已成功,交易所会以订单已下单为由拒绝重试,随后 CLI 会提示该 ID 对应的订单已存在,且未创建第二笔订单。切勿不带该 ID 重试,否则可能会创建第二笔订单。如果连接在发送前失败(例如连接被拒绝或 DNS 查询失败),命令会说明原因,且不会下单。对于订单替换,请使用 revx order get <original id> 查看是否已替换:如果原订单仍处于未平仓状态,则说明替换未成功。

价格步长:--limit 或 --price 的值必须是交易对价格步长的倍数(可通过 revx market pairs 查看)。否则 CLI 会在发送前拒绝该值,并给出最接近的有效价格。--qty、--quote、--limit 和 --price 必须为正数,且最多保留 18 位小数。


条件单(止损单)

等待市场价格穿越触发价,然后下达市价单(默认)或限价单(使用 --trigger-limit-price)。每条命令只能指定一种订单类型。

# Stop-market: sell 0.001 BTC when the $100,000 trigger fires
revx order place BTC-USD sell --qty 0.001 --conditional --trigger-price 100000

# Stop-limit: buy 0.001 BTC when the $90,000 trigger fires, then place a limit buy at $89,900
revx order place BTC-USD buy --qty 0.001 --conditional --trigger-price 90000 --trigger-limit-price 89900

# Quote-sized conditional (buy $500 worth of BTC at the $95,000 trigger)
revx order place BTC-USD buy --quote 500 --conditional --trigger-price 95000

标志:

标志说明
--conditional条件单(止损单)类型
--trigger-price <price>激活订单的价格(必填)
--trigger-limit-price <price>触发后下达的订单限价;省略时按市价执行
--qty <amount> / --quote <amount>数量 — 必须且只能指定其中一项

行为:

  • --time-in-force 和 --post-only 是限价单标志,不能用于条件单。
  • 触发后,市价单部分会立即执行(ioc);限价单部分则以 gtc 限价单挂单。
  • 触发或取消前,订单会以 conditional 类型显示在 revx order open 中,条件为 Trig ≥/≤ <price>。
  • 按常规方式使用 revx order cancel <order-id> 取消。

止盈 / 止损单

下达挂单,在市场价格达到止盈和/或止损触发价时平仓。必须至少指定 --tp 或 --sl;两者可以同时指定。触发方向根据交易方向自动确定 — 无需传入:

  • 卖出止盈/止损(平多仓):价格上涨至或高于 --tp 时触发止盈;价格下跌至或低于 --sl 时触发止损。
  • 买入止盈/止损(平空仓):价格下跌至或低于 --tp 时触发止盈;价格上涨至或高于 --sl 时触发止损。
# Sell 0.001 BTC: take profit at $110,000, stop loss at $90,000 (both market on trigger)
revx order place BTC-USD sell --qty 0.001 --tp 110000 --sl 90000

# Take profit only, with a limit price for the triggered leg
revx order place BTC-USD sell --qty 0.001 --tp 110000 --tp-limit 109900

# Stop loss only
revx order place BTC-USD sell --qty 0.001 --sl 90000

# Both legs with limit prices
revx order place BTC-USD sell --qty 0.001 --tp 110000 --tp-limit 109900 --sl 90000 --sl-limit 89900

标志:

标志说明
--tp <price>止盈触发价(必须至少指定 --tp 或 --sl)
--sl <price>止损触发价
--tp-limit <price>止盈部分的限价;省略时在触发后按市价执行
--sl-limit <price>止损部分的限价;省略时在触发后按市价执行
--qty <amount>基础货币数量 — 必填;TP/SL 订单不接受 --quote

行为:

  • TP/SL 订单不接受 --time-in-force 和 --post-only。
  • 订单会以 tpsl 类型显示在 revx order open 中;Conditions 列会显示 TP <price> / SL <price>。
  • 如果设置了两部分,则先触发的一方生效,另一方会被丢弃。
  • 按常规方式使用 revx order cancel <order-id> 取消。

替换(修改)订单

就地更新现有的未结订单。URL 与取消订单相同,但使用 PUT。适用于限价单、条件单(止损单)以及止盈/止损单。

# Change limit price
revx order replace <order-id> --price 96000

# Change quantity (amount is recalculated server-side)
revx order replace <order-id> --qty 0.002

# Change quote amount (qty is recalculated server-side)
revx order replace <order-id> --quote 150

# Explicitly allow taker execution (must be set explicitly)
revx order replace <order-id> --allow-taker

# Switch to post-only
revx order replace <order-id> --post-only

# Change time in force
revx order replace <order-id> --time-in-force ioc

# Combine — re-price and re-size
revx order replace <order-id> --price 96000 --qty 0.002

# Replace a conditional (stop) trigger — the whole trigger is replaced
revx order replace <order-id> --trigger-price 100000 --trigger-limit-price 99500

# Change only the trigger limit price → re-pass the whole trigger
revx order replace <order-id> --trigger-price 100000 --trigger-limit-price 99000

# Replace take-profit/stop-loss triggers, or re-size the order only
revx order replace <order-id> --tp 115000 --tp-limit 114900 --sl 90000
revx order replace <order-id> --qty 0.002

# Remove a trigger leg — pass `none` explicitly
revx order replace <order-id> --sl none

行为:

  • 只有你传入的字段会更改;其他内容保持不变。
  • 只更改 --price 时,buy 会保留报价金额(其数量会变化),而 sell 会保留数量。若要保留 buy 的数量,也要传入 --qty <current qty>。如果更改数量,金额会重新计算(反之亦然)。
  • 必须显式设置 --allow-taker,不会自动推断。
  • 如果替换被拒绝,将不会留下任何订单。 交易所会先取消原订单,因此当替换结果为 rejected,或未使用 --time-in-force ioc 的替换结果为 cancelled 时,两个订单都不会处于未结状态,命令将以 1 退出。
  • 触发条件会整体替换。 若要更改触发条件中的单个字段(例如仅更改限价),请再次传入整个触发条件。省略限价会将该触发分支切换为市价执行。
  • 若要移除触发条件,必须显式传入 none,例如 --tp none、--sl none 或 --trigger-price none。省略该标志则会保持触发条件不变。
  • --price/--time-in-force/--post-only/--allow-taker 适用于限价单,--trigger-price 适用于条件单,--tp/--sl 适用于止盈/止损单——这些标志组不能混用。
  • 订单 ID 会更改。 替换后,原订单会关闭,并创建一个具有新 venue_order_id 的新订单(响应中会返回该 ID)。原 ID 会作为 previous_order_id 保留在新订单中。后续取消、替换或查询操作请使用新 ID——旧 ID 将不再有效。

标志:

标志说明
--price <price>新的限价
--qty <amount>新的基础货币数量
--quote <amount>新的计价货币数量
--client-order-id <uuid>替换订单使用的自定义 UUID(若省略则自动生成)
--time-in-force <value>gtc 或 ioc。替换时不接受 fok。
--post-only将执行方式设为 [post_only]
--allow-taker显式将执行方式设为 [allow_taker]
--trigger-price <price>新的条件触发价(none 会移除触发条件)
--trigger-limit-price <price>条件触发的限价(仅与 --trigger-price 一起使用)
--tp <price>新的止盈触发价(none 会移除该分支)
--tp-limit <price>止盈触发的限价(仅与 --tp 一起使用)
--sl <price>新的止损触发价(none 会移除该分支)
--sl-limit <price>止损触发的限价(仅与 --sl 一起使用)

必须至少指定以下一项:--price、--qty、--quote、--time-in-force、--post-only、--allow-taker、--trigger-price、--tp、--sl。


手续费

Revolut X 会从你收到的资产中扣除手续费,因此手续费所用的货币取决于订单方向:

订单你支付你收到扣除手续费所用货币影响
买入计价货币(例如 USD)基础货币(例如 BTC)基础货币你按买入数量支付(以计价货币计价的订单会支付全部金额),但实际到账的币会略少。
卖出基础货币计价货币计价货币全部币都会转出,实际到账的计价货币会略少。
  • **费率:**挂单的 maker 费率为 0%;立即成交的 taker 费率为 0.09%(包括市价单和价格优于市场价的限价单)。手续费会向上舍入到该货币的最小单位。
  • **真实示例,买入(2026 年 10 月 7 日):**以 10 USDC 市价买入 BTC,成交量为 0.00011904 BTC。手续费为 0.00000011 BTC,因此实际到账 0.00011893 BTC,且 10 USDC 全部花出。
  • **真实示例,卖出:**卖出 BTC,价值 9.957938 USDC,支付了 0.008963 USDC 手续费,因此实际到账 9.948975 USDC。
  • **查看位置:**每笔已成交订单都会报告 total_fee 和 fee_currency(revx order get <id> --json)。请使用这些值,而不要估算,因为费率可能会变化。

取消订单

revx order cancel <order-id>           # Cancel a single order (market, limit, conditional, tpsl)
revx order cancel --all                # Cancel all open orders
revx order cancel <order-id> --json    # {"cancelled": "<order-id>"}, or {"cancelled": "all"} with --all

错误参考

错误原因修复方法
无效的订单参数,或无效的替换订单参数CLI 自身的检查在发送前发现了错误值,下方各行列出了每个字段修正列出的字段,例如交易对格式 BTC-USD
请求错误(400),附带交易所的消息交易所拒绝了订单,例如订单数量超出交易对的限制使用 revx market pairs 检查数量和步长
不是价格步长的倍数--limit 或 --price 的精度高于交易对的价格步长使用消息建议的两个价格之一
余额不足(422)资金不足,无法下单检查 revx account balances
状态为 rejected 或 cancelled,退出码为 1交易所拒绝或关闭了订单几秒后运行 revx order get <id>
未找到(404)订单 ID 无效使用 revx order open 验证(参见 revx-account 技能)
速率限制(429)请求过多等待 retryAfter 指定的时长

相关技能

技能用途
revx-account交易后检查余额、查看订单状态和成交记录
revx-market交易前检查价格和交易对限制
revx-authAPI 密钥设置和通行密钥配置
revx-strategy自动化网格交易机器人

评论

支持 Markdown