mcpField
D
derivatives-trading-portfolio-margin

derivatives-trading-portfolio-margin

github.com/binance其他1.1k1.1k 次安装3 天前更新
代码仓库

关于 derivatives-trading-portfolio-margin

用于处理 Binance Portfolio Margin API 任务的 Skill,涵盖账户数据、转账、杠杆设置、订单和历史记录,面向使用需认证组合保证金接口的 Agent,并返回 JSON。

主要功能

  1. 01查询账户与持仓
  2. 02操作保证金和期货订单
  3. 03设置杠杆与持仓模式
  4. 04转账、借款和还款
  5. 05查询交易与收入记录

适用场景

  1. 01检查组合保证金持仓
  2. 02提交或撤销期货及保证金订单
  3. 03查看账户交易和收入记录

安装

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

$npx skills add https://github.com/binance/binance-skills-hub --skill derivatives-trading-portfolio-margin

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

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

CHANGELOG.md
LICENSE.md
references/
authentication.md

详细介绍

Binance 衍生品交易组合保证金 Skill

使用经过身份验证的 API 端点在 Binance 上提交衍生品交易组合保证金请求。某些端点需要 API key 和 secret key。以 JSON 格式返回结果。

快速参考

端点描述必需可选身份验证
/papi/v1/balance (GET)账户余额(USER_DATA)无asset, recvWindow是
/papi/v1/account (GET)账户信息(USER_DATA)无recvWindow是
/papi/v1/bnb-transfer (POST)BNB 转账(TRADE)amount, transferSiderecvWindow是
/papi/v1/cm/leverageBracket (GET)CM 名义价值和杠杆档位(USER_DATA)无symbol, recvWindow是
/papi/v1/repay-futures-switch (POST)更改自动偿还期货状态(TRADE)autoRepayrecvWindow是
/papi/v1/repay-futures-switch (GET)获取自动偿还期货状态(USER_DATA)无recvWindow是
/papi/v1/cm/leverage (POST)更改 CM 初始杠杆(TRADE)symbol, leveragerecvWindow是
/papi/v1/cm/positionSide/dual (POST)更改 CM 持仓模式(TRADE)dualSidePositionrecvWindow是
/papi/v1/cm/positionSide/dual (GET)获取 CM 当前持仓模式(USER_DATA)无recvWindow是
/papi/v1/um/leverage (POST)更改 UM 初始杠杆(TRADE)symbol, leveragerecvWindow是
/papi/v1/um/positionSide/dual (POST)更改 UM 持仓模式(TRADE)dualSidePositionrecvWindow是
/papi/v1/um/positionSide/dual (GET)获取 UM 当前持仓模式(USER_DATA)无recvWindow是
/papi/v1/auto-collection (POST)资金自动归集(TRADE)无recvWindow是
/papi/v1/asset-collection (POST)按资产归集资金(TRADE)assetrecvWindow是
/papi/v1/cm/account (GET)获取 CM 账户详情(USER_DATA)无recvWindow是
/papi/v1/cm/income (GET)获取 CM 收入历史(USER_DATA)无symbol, incomeType, startTime, endTime, page, limit, recvWindow是
/papi/v1/um/order/asyn (GET)获取 UM 期货订单历史的下载 ID(USER_DATA)startTime, endTimerecvWindow是
/papi/v1/um/trade/asyn (GET)获取 UM 期货交易历史的下载 ID(USER_DATA)startTime, endTimerecvWindow是
/papi/v1/um/income/asyn (GET)获取 UM 期货交易记录历史的下载 ID(USER_DATA)startTime, endTimerecvWindow是
/papi/v1/margin/marginInterestHistory (GET)获取保证金借款/贷款利息历史(USER_DATA)无asset, startTime, endTime, current, size, archived, recvWindow是
/papi/v2/um/account (GET)获取 UM 账户详情 V2(USER_DATA)无recvWindow是
/papi/v1/um/account (GET)获取 UM 账户详情(USER_DATA)无recvWindow是
/papi/v1/um/accountConfig (GET)UM 期货账户配置(USER_DATA)无recvWindow是
/papi/v1/um/order/asyn/id (GET)根据 ID 获取 UM 期货订单下载链接(USER_DATA)downloadIdrecvWindow是
/papi/v1/um/symbolConfig (GET)UM 期货交易对配置(USER_DATA)无symbol, recvWindow是
/papi/v1/um/trade/asyn/id (GET)根据 ID 获取 UM 期货交易下载链接(USER_DATA)downloadIdrecvWindow是
/papi/v1/um/income/asyn/id (GET)根据 ID 获取 UM 期货交易记录下载链接(USER_DATA)downloadIdrecvWindow是
/papi/v1/um/income (GET)获取 UM 收入历史(USER_DATA)无symbol, incomeType, startTime, endTime, page, limit, recvWindow是
/papi/v1/cm/commissionRate (GET)获取用户 CM 佣金费率(USER_DATA)symbolrecvWindow是
/papi/v1/um/commissionRate (GET)获取用户 UM 佣金费率(USER_DATA)symbolrecvWindow是
/papi/v1/margin/maxBorrowable (GET)保证金最大可借额度(USER_DATA)assetrecvWindow是
/papi/v1/um/apiTradingStatus (GET)Portfolio Margin UM 交易量化规则指标(USER_DATA)无symbol, recvWindow是
/papi/v1/cm/positionRisk (GET)查询 CM 持仓信息(USER_DATA)无marginAsset, pair, recvWindow是
/papi/v1/margin/marginLoan (GET)查询保证金借款记录(USER_DATA)assettxId, startTime, endTime, current, size, archived, recvWindow是
/papi/v1/margin/maxWithdraw (GET)查询保证金最大可提取额度(USER_DATA)assetrecvWindow是
/papi/v1/margin/repayLoan (GET)查询保证金还款记录(USER_DATA)assettxId, startTime, endTime, current, size, archived, recvWindow是
/papi/v1/portfolio/interest-history (GET)查询 Portfolio Margin 负余额利息历史(USER_DATA)无asset, startTime, endTime, size, recvWindow是
/papi/v1/um/positionRisk (GET)查询 UM 持仓信息(USER_DATA)无symbol, recvWindow是
/papi/v1/portfolio/negative-balance-exchange-record (GET)查询用户负余额自动兑换记录(USER_DATA)startTime, endTimerecvWindow是
/papi/v1/rateLimit/order (GET)查询用户速率限制(USER_DATA)无recvWindow是
/papi/v1/repay-futures-negative-balance (POST)偿还期货负余额(USER_DATA)无recvWindow是
/papi/v1/um/leverageBracket (GET)UM 名义价值和杠杆档位(USER_DATA)无symbol, recvWindow是
/papi/v1/ping (GET)测试连通性无无否
/papi/v1/cm/userTrades (GET)CM 账户交易列表(USER_DATA)无symbol, pair, startTime, endTime, fromId, limit, recvWindow是
/papi/v1/cm/adlQuantile (GET)CM 持仓 ADL 分位数估算(USER_DATA)无symbol, recvWindow是
/papi/v1/cm/conditional/allOpenOrders (DELETE)取消所有 CM 未平仓条件订单(TRADE)symbolrecvWindow是
/papi/v1/cm/allOpenOrders (DELETE)取消所有 CM 未平仓订单(TRADE)symbolrecvWindow是
/papi/v1/um/conditional/allOpenOrders (DELETE)取消所有 UM 未平仓条件订单(TRADE)symbolrecvWindow是
/papi/v1/um/allOpenOrders (DELETE)取消所有 UM 未平仓订单(TRADE)symbolrecvWindow是
/papi/v1/cm/conditional/order (DELETE)取消 CM 条件订单(TRADE)symbolstrategyId, newClientStrategyId, recvWindow是
/papi/v1/cm/conditional/order (POST)新建 CM 条件订单(TRADE)symbol, side, strategyTypepositionSide, timeInForce, quantity, reduceOnly, price, workingType, priceProtect, newClientStrategyId, stopPrice, activationPrice, callbackRate, recvWindow是
/papi/v1/cm/order (DELETE)取消 CM 订单(TRADE)symbolorderId, origClientOrderId, recvWindow是
/papi/v1/cm/order (PUT)修改 CM 订单(TRADE)symbol, side, quantity, priceorderId, origClientOrderId, priceMatch, recvWindow是
/papi/v1/cm/order (POST)新建 CM 订单(TRADE)symbol, side, typepositionSide, timeInForce, quantity, reduceOnly, price, priceMatch, newClientOrderId, newOrderRespType, recvWindow是
/papi/v1/cm/order (GET)查询 CM 订单(USER_DATA)symbolorderId, origClientOrderId, recvWindow是
/papi/v1/margin/allOpenOrders (DELETE)取消保证金账户某交易对的所有未平仓订单(TRADE)symbolrecvWindow是
/papi/v1/margin/orderList (DELETE)取消保证金账户 OCO 订单(TRADE)symbolorderListId, listClientOrderId, newClientOrderId, recvWindow是
/papi/v1/margin/orderList (GET)查询保证金账户 OCO(USER_DATA)无orderListId, origClientOrderId, recvWindow是
/papi/v1/margin/order (DELETE)取消保证金账户订单(TRADE)symbolorderId, origClientOrderId, newClientOrderId, recvWindow是
/papi/v1/margin/order (POST)新建保证金订单(TRADE)symbol, side, typequantity, quoteOrderQty, price, stopPrice, newClientOrderId, newOrderRespType, icebergQty, sideEffectType, timeInForce, selfTradePreventionMode, autoRepayAtCancel, recvWindow是
/papi/v1/margin/order (GET)查询保证金账户订单(USER_DATA)symbolorderId, origClientOrderId, recvWindow是
/papi/v1/um/conditional/order (DELETE)取消 UM 条件订单(TRADE)symbolstrategyId, newClientStrategyId, recvWindow是
/papi/v1/um/conditional/order (POST)新建 UM 条件订单(TRADE)symbol, side, strategyTypepositionSide, timeInForce, quantity, reduceOnly, price, workingType, priceProtect, newClientStrategyId, stopPrice, activationPrice, callbackRate, priceMatch, selfTradePreventionMode, goodTillDate, recvWindow是
/papi/v1/um/order (DELETE)取消 UM 订单(TRADE)symbolorderId, origClientOrderId, recvWindow是
/papi/v1/um/order (PUT)修改 UM 订单(TRADE)symbol, side, quantity, priceorderId, origClientOrderId, priceMatch, recvWindow是
/papi/v1/um/order (POST)新建 UM 订单(TRADE)symbol, side, typepositionSide, timeInForce, quantity, reduceOnly, price, newClientOrderId, newOrderRespType, priceMatch, selfTradePreventionMode, goodTillDate, recvWindow是
/papi/v1/um/order (GET)查询 UM 订单(USER_DATA)symbolorderId, origClientOrderId, recvWindow是
/papi/v1/um/feeBurn (GET)获取 UM 期货 BNB 销毁状态(USER_DATA)无recvWindow是
/papi/v1/um/feeBurn (POST)切换 UM 期货交易的 BNB 销毁功能(TRADE)feeBurnrecvWindow是
/papi/v1/marginLoan (POST)保证金账户借款(MARGIN)asset, amountrecvWindow是
/papi/v1/margin/order/oco (POST)保证金账户新建 OCO(TRADE)symbol, side, quantity, price, stopPricelistClientOrderId, limitClientOrderId, limitIcebergQty, stopClientOrderId, stopLimitPrice, stopIcebergQty, stopLimitTimeInForce, newOrderRespType, sideEffectType, recvWindow是
/papi/v1/margin/repay-debt (POST)保证金账户偿还债务(TRADE)assetamount, specifyRepayAssets, recvWindow是
/papi/v1/repayLoan (POST)保证金账户还款(MARGIN)asset, amountrecvWindow是
/papi/v1/margin/myTrades (GET)保证金账户交易列表(USER_DATA)symbolorderId, startTime, endTime, fromId, limit, recvWindow是
/papi/v1/cm/conditional/allOrders (GET)查询所有 CM 条件订单(USER_DATA)无symbol, strategyId, startTime, endTime, limit, recvWindow是
/papi/v1/cm/allOrders (GET)查询所有 CM 订单(USER_DATA)symbolpair, orderId, startTime, endTime, limit, recvWindow是
/papi/v1/cm/conditional/openOrders (GET)查询当前所有 CM 未平仓条件订单(USER_DATA)无symbol, recvWindow是
/papi/v1/cm/openOrders (GET)查询当前所有 CM 未平仓订单(USER_DATA)无symbol, pair, recvWindow是
/papi/v1/um/conditional/openOrders (GET)查询当前所有 UM 未平仓条件订单(USER_DATA)无symbol, recvWindow是
/papi/v1/um/openOrders (GET)查询当前所有 UM 未平仓订单(USER_DATA)无symbol, recvWindow是
/papi/v1/margin/allOrders (GET)查询保证金账户的所有订单(USER_DATA)symbolorderId, startTime, endTime, limit, recvWindow是
/papi/v1/um/conditional/allOrders (GET)查询所有 UM 条件订单(USER_DATA)无symbol, strategyId, startTime, endTime, limit, recvWindow是
/papi/v1/um/allOrders (GET)查询所有 UM 订单(USER_DATA)symbolorderId, startTime, endTime, limit, recvWindow是
/papi/v1/cm/conditional/orderHistory (GET)查询 CM 条件订单历史(USER_DATA)symbolstrategyId, newClientStrategyId, recvWindow是
/papi/v1/cm/orderAmendment (GET)查询 CM 订单修改历史(TRADE)symbolorderId, origClientOrderId, startTime, endTime, limit, recvWindow是
/papi/v1/cm/conditional/openOrder (GET)查询当前 CM 未平仓条件订单(USER_DATA)symbolstrategyId, newClientStrategyId, recvWindow是
/papi/v1/cm/openOrder (GET)查询当前 CM 未平仓订单(USER_DATA)symbolorderId, origClientOrderId, recvWindow是
/papi/v1/margin/openOrders (GET)查询当前保证金账户未平仓订单(USER_DATA)symbolrecvWindow是
/papi/v1/um/conditional/openOrder (GET)查询当前 UM 未平仓条件订单(USER_DATA)symbolstrategyId, newClientStrategyId, recvWindow是
/papi/v1/um/openOrder (GET)查询当前 UM 未平仓订单(USER_DATA)symbolorderId, origClientOrderId, recvWindow是
/papi/v1/margin/openOrderList (GET)查询保证金账户未平仓 OCO(USER_DATA)无recvWindow是
/papi/v1/margin/allOrderList (GET)查询保证金账户的所有 OCO(USER_DATA)无fromId, startTime, endTime, limit, recvWindow是
/papi/v1/um/conditional/orderHistory (GET)查询 UM 条件订单历史(USER_DATA)symbolstrategyId, newClientStrategyId, recvWindow是
/papi/v1/um/orderAmendment (GET)查询 UM 订单修改历史(TRADE)symbolorderId, origClientOrderId, startTime, endTime, limit, recvWindow是
/papi/v1/cm/forceOrders (GET)查询用户 CM 强平订单(USER_DATA)无symbol, autoCloseType, startTime, endTime, limit, recvWindow是
/papi/v1/margin/forceOrders (GET)查询用户保证金强平订单(USER_DATA)无startTime, endTime, current, size, recvWindow是
/papi/v1/um/forceOrders (GET)查询用户 UM 强平订单(USER_DATA)无symbol, autoCloseType, startTime, endTime, limit, recvWindow是
/papi/v1/um/userTrades (GET)UM 账户交易列表(USER_DATA)symbolstartTime, endTime, fromId, limit, recvWindow是
/papi/v1/um/adlQuantile (GET)UM 持仓 ADL 分位数估算(USER_DATA)无symbol, recvWindow是
/papi/v1/listenKey (DELETE)关闭用户数据流(USER_STREAM)无无否
/papi/v1/listenKey (PUT)保持用户数据流活跃(USER_STREAM)无无否
/papi/v1/listenKey (POST)启动用户数据流(USER_STREAM)无无否

参数

常用参数
  • asset:
  • recvWindow:(例如,5000)
  • amount:(例如,1.0)
  • transferSide:"TO_UM","FROM_UM"
  • symbol:
  • autoRepay:默认值:true;设为 false 可关闭期货负余额自动还款功能(例如,true)
  • symbol:
  • leverage:目标初始杠杆:1 到 125 之间的整数
  • dualSidePosition:"true":对冲模式;"false":单向持仓模式
  • asset:
  • incomeType:TRANSFER、WELCOME_BONUS、REALIZED_PNL、FUNDING_FEE、COMMISSION、INSURANCE_CLEAR、REFERRAL_KICKBACK、COMMISSION_REBATE、API_REBATE、CONTEST_REWARD、CROSS_COLLATERAL_TRANSFER、OPTIONS_PREMIUM_FEE、OPTIONS_SETTLE_PROFIT、INTERNAL_TRANSFER、AUTO_EXCHANGE、DELIVERED_SETTELMENT、COIN_SWAP_DEPOSIT、COIN_SWAP_WITHDRAW、POSITION_LIMIT_INCREASE_FEE
  • startTime:获取资金记录的起始时间戳(毫秒),包含该时间。(例如,1623319461670)
  • endTime:获取资金记录的结束时间戳(毫秒),包含该时间。(例如,1641782889000)
  • page:
  • limit:默认值为 100;最大值为 1000(例如,100)
  • startTime:(例如,1623319461670)
  • endTime:(例如,1641782889000)
  • current:当前查询页码。从 1 开始。默认值:1(例如,1)
  • size:默认值:10,最大值:100(例如,10)
  • archived:默认值:false。设为 true 可获取 6 个月前的归档数据
  • downloadId:通过 download id API 获取(例如,1)
  • marginAsset:
  • pair:
  • txId:POST/papi/v1/marginLoan 中的 tranId(例如,1)
  • fromId:获取交易记录的起始交易 ID。默认获取最近的交易记录。(例如,1)
  • strategyId:(例如,1)
  • newClientStrategyId:(例如,1)
  • orderId:(例如,1)
  • origClientOrderId:(例如,1)
  • orderListId:必须提供 orderListId 或 listClientOrderId(例如,1)
  • listClientOrderId:必须提供 orderListId 或 listClientOrderId(例如,1)
  • newClientOrderId:用于唯一标识此次取消操作。默认自动生成(例如,1)
  • quantity:订单数量(例如,1.0)
  • limitClientOrderId:限价单的唯一 ID(例如,1)
  • price:(例如,1.0)
  • limitIcebergQty:(例如,1.0)
  • stopClientOrderId:止损单/止损限价单部分的唯一 ID(例如,1)
  • stopPrice:(例如,1.0)
  • stopLimitPrice:如果提供此参数,则必须提供 stopLimitTimeInForce。(例如,1.0)
  • stopIcebergQty:(例如,1.0)
  • amount:
  • specifyRepayAssets:用于偿还债务的指定资产列表;可批量添加,多个资产以逗号分隔
  • quantity:(例如,1.0)
  • reduceOnly:"true" 或 "false"。默认值为 "false"。对冲模式下不可发送。
  • price:(例如,1.0)
  • priceProtect:"TRUE" 或 "FALSE",默认值为 "FALSE"。用于 STOP/STOP_MARKET 或 TAKE_PROFIT/TAKE_PROFIT_MARKET 订单
  • stopPrice:用于 STOP/STOP_MARKET 或 TAKE_PROFIT/TAKE_PROFIT_MARKET 订单。(例如,1.0)
  • activationPrice:用于 TRAILING_STOP_MARKET 订单,默认值为标记价格(例如,1.0)
  • callbackRate:用于 TRAILING_STOP_MARKET 订单,最小值为 0.1,最大值为 5,其中 1 表示 1%(例如,1.0)
  • quoteOrderQty:(例如,1.0)
  • icebergQty:用于通过 LIMIT、STOP_LOSS_LIMIT 和 TAKE_PROFIT_LIMIT 创建冰山订单(例如,1.0)
  • autoRepayAtCancel:仅当 MARGIN_BUY 或 AUTO_BORROW_REPAY 订单生效时适用。true 表示订单取消后需要偿还该订单产生的债务。默认值为 true(例如,true)
  • goodTillDate:对于 GTD 的 timeInForce,此参数表示订单取消时间;当 timeInforce 设为 GTD 时必须提供;订单时间戳仅保留秒级精度,毫秒部分将被忽略;goodTillDate 时间戳必须大于当前时间加 600 秒,且小于 253402300799000Mode。必须在对冲模式下发送。
  • feeBurn:"true":开启手续费折扣;"false":关闭手续费折扣
枚举
  • side:BUY | SELL
  • stopLimitTimeInForce:GTC | IOC | FOK
  • newOrderRespType:ACK | RESULT
  • sideEffectType:NO_SIDE_EFFECT | MARGIN_BUY | AUTO_REPAY
  • priceMatch:NONE | OPPONENT | OPPONENT_5 | OPPONENT_10 | OPPONENT_20 | QUEUE | QUEUE_5 | QUEUE_10 | QUEUE_20
  • positionSide:BOTH | LONG | SHORT
  • strategyType:STOP | STOP_MARKET | LIMIT_MAKER | TAKE_PROFIT | TAKE_PROFIT_MARKET | TRAILING_STOP_MARKET
  • timeInForce:GTC | IOC | FOK | GTX
  • workingType:MARK_PRICE
  • type:LIMIT | MARKET
  • selfTradePreventionMode:NONE | EXPIRE_TAKER | EXPIRE_BOTH | EXPIRE_MAKER
  • autoCloseType:LIQUIDATION | ADL

身份验证

对于需要身份验证的端点,你需要提供 Binance API 凭据。 所需凭据:

  • apiKey:你的 Binance API 密钥(用于请求头)
  • secretKey:你的 Binance API 密钥(用于签名)

基础 URL:

安全

提供凭据

用户可以通过不同方式提供 Binance API 凭据。Agent 会优先尝试通过前两种方式自动获取凭据;用户也可以明确告知 Agent 已设置凭据或已将凭据存储在 .env 文件中,此时 Agent 应重新读取该文件。使用前两种方式发送 HTTP 请求时,Agent 也无需用户确认。

  1. 环境变量

仅搜索以下指定变量(绝不输出完整环境变量):

已授权的环境变量

  • 主网:BINANCE_API_KEY 和 BINANCE_SECRET_KEY
  • 测试网:BINANCE_TESTNET_API_KEY 和 BINANCE_TESTNET_SECRET_KEY

在一次 exec 调用中读取并使用,确保原始密钥不会进入 Agent 的上下文:

KEY="$BINANCE_API_KEY"
SECRET="$BINANCE_SECRET_KEY"

response=$(curl -s -X GET "$URL" \
  -H "X-MBX-APIKEY: $KEY" \
  --data-urlencode "param1=value1")

echo "$response"

必须在 OpenClaw 启动前设置环境变量。它们会在进程启动时继承,无法注入正在运行的实例。如果需要在不重启的情况下添加或更新凭据,请使用密钥文件(见选项 2)。

  1. 密钥文件(.env)

检查 ~/.openclaw/secrets.env、~/.env 或工作区中的 .env 文件。使用 grep 读取单个密钥,绝不要 source 整个文件:

# Try all credential locations in order
API_KEY=$(grep '^BINANCE_API_KEY=' ~/.openclaw/secrets.env 2>/dev/null | cut -d= -f2-)
SECRET_KEY=$(grep '^BINANCE_SECRET_KEY=' ~/.openclaw/secrets.env 2>/dev/null | cut -d= -f2-)

# Fallback: search .env in known directories (KEY=VALUE then raw line format)
for dir in ~/.openclaw ~; do
  [ -n "$API_KEY" ] && break
  env_file="$dir/.env"
  [ -f "$env_file" ] || continue

  # Read first two lines
  line1=$(sed -n '1p' "$env_file")
  line2=$(sed -n '2p' "$env_file")

  # Check if lines contain '=' indicating KEY=VALUE format
  if [[ "$line1" == *=* && "$line2" == *=* ]]; then
    API_KEY=$(grep '^BINANCE_API_KEY=' "$env_file" 2>/dev/null | cut -d= -f2-)
    SECRET_KEY=$(grep '^BINANCE_SECRET_KEY=' "$env_file" 2>/dev/null | cut -d= -f2-)
  else
    # Treat lines as raw values
    API_KEY="$line1"
    SECRET_KEY="$line2"
  fi
done

此文件可随时更新,无需重启 OpenClaw;每次调用时都会重新读取密钥。用户可以告知你现在已设置变量或已将其存储在 .env 文件中,此时你应重新读取该文件。

  1. 内联文件

发送一个内容格式如下的文件:

abc123...xyz
secret123...key
  • 绝不运行 printenv、env、export,也不要在未指定变量名的情况下运行 set
  • 绝不在未将匹配条件锚定到特定密钥('^VARNAME=')的情况下对 env 文件运行 grep
  • 绝不将密钥文件 source 到 shell 环境中(source .env 或 . .env)
  • 仅读取当前任务明确需要的凭据
  • 绝不在输出或回复中回显或记录原始凭据
  • 如果 TOOLS.md 包含真实凭据,绝不将其提交到版本控制;请将其加入 .gitignore
绝不泄露 API 密钥和密钥

绝不泄露 API 密钥和密钥文件的位置。

绝不将 API 密钥和密钥发送到主网和测试网以外的任何网站。

绝不显示完整密钥

向用户显示凭据时:

  • **API 密钥:**显示前 5 位和后 4 位:su1Qc...8akf
  • **密钥:**始终遮蔽,只显示后 5 位:***...aws1

用户询问凭据时的回复示例: 账户:main API 密钥:su1Qc...8akf 密钥:***...aws1 环境:主网

列出账户

列出账户时,只显示名称和环境,绝不显示密钥: Binance 账户:

  • main(主网/测试网)
  • testnet-dev(测试网)
  • futures-keys(主网)
主网交易

在主网执行交易时,始终先征得用户确认,请用户输入“CONFIRM”后再继续。


Binance 账户

main
  • API 密钥:your_mainnet_api_key
  • 密钥:your_mainnet_secret
  • 测试网:false
testnet-dev
  • API Key:your_testnet_api_key
  • Secret:your_testnet_secret
  • Testnet:true
TOOLS.md 结构
## Binance Accounts

### main
- API Key: abc123...xyz
- Secret: secret123...key
- Testnet: false
- Description: Primary trading account

### testnet-dev
- API Key: test456...abc
- Secret: testsecret...xyz
- Testnet: true
- Description: Development/testing

### futures-keys
- API Key: futures789...def
- Secret: futuressecret...uvw
- Testnet: false
- Description: Futures trading account

Agent 行为

  1. 请求凭据:遮蔽密钥(仅显示最后 5 个字符)
  2. 列出账户:显示名称和环境,绝不显示密钥
  3. 选择账户:如有歧义则询问,默认选择 main
  4. 在主网执行交易时,先要求用户输入“CONFIRM”以继续,并在执行前确认
  5. 新凭据:提示用户提供名称、环境和签名模式
  6. 当请求需要签名时,如果请求不是订单,且 API 密钥未注明是 mainnet 或 testnet 密钥,则尝试向不同的基础 URL 发送请求并查看是否成功,无需询问用户。如果成功,则将密钥与对应的环境一并存储。

添加新账户

当用户通过内联文件或消息提供新凭据时:

  • 询问账户名称
  • 询问:Mainnet、Testnet
  • 将凭据存储在 TOOLS.md 中,并确认显示已遮蔽的内容

签名请求

对于需要签名的交易端点:

  1. 先检测密钥类型,在签名前检查密钥的格式。
  2. 使用所有参数构建查询字符串,包括时间戳(Unix 毫秒)。
  3. 根据 RFC 3986,使用 UTF-8 对参数进行百分号编码。
  4. 使用 secretKey 对查询字符串进行签名,签名算法根据账户配置采用 HMAC SHA256、RSA 或 Ed25519。
  5. 将签名附加到查询字符串。
  6. 添加 X-MBX-APIKEY 标头。

否则,不执行第 4–6 步。

新客户端订单 ID

对于包含 newClientOrderId 参数的端点,该值必须始终以 agent- 开头。如果未提供该参数,则会自动生成由 agent- 和 18 个随机字母数字字符组成的值。如果提供了值,则会为其添加 agent- 前缀。

示例:agent-1a2b3c4d5e6f7g8h9i

User Agent 标头

添加 User-Agent 标头,其值为以下字符串:binance-derivatives-trading-portfolio-margin/1.1.0 (Skill)

实现详情请参阅 references/authentication.md。

评论

支持 Markdown