mcpField
A
algo

algo

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

关于 algo

Binance algo 技能面向需要通过 API 管理算法订单的交易者,支持现货与期货的 TWAP、VP 下单及订单查询。它涵盖订单取消、历史记录和子订单查询,并要求相关操作使用 Binance API 凭据。

主要功能

  1. 01现货与期货 TWAP 下单
  2. 02期货 VP 下单
  3. 03查询当前及历史算法订单
  4. 04查询子订单并取消订单
  5. 05使用 API 凭据进行认证

适用场景

  1. 01在 Binance 提交 TWAP 算法订单
  2. 02按紧急程度提交期货 VP 订单
  3. 03检查算法订单及子订单状态

安装

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

$npx skills add https://github.com/binance/binance-skills-hub --skill algo

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

包含的文件

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

CHANGELOG.md
LICENSE.md
references/
authentication.md

详细介绍

Binance Algo 技能

通过经过身份验证的 API 端点在 Binance 上发起 Algo 请求。某些端点需要 API key 和 secret key。以 JSON 格式返回结果。

快速参考

端点描述必填可选身份验证
/sapi/v1/algo/futures/order (DELETE)取消 Algo 订单(TRADE)algoIdrecvWindow是
/sapi/v1/algo/futures/openOrders (GET)查询当前未完成的 Algo 订单(USER_DATA)无recvWindow是
/sapi/v1/algo/futures/historicalOrders (GET)查询历史 Algo 订单(USER_DATA)无symbol, side, startTime, endTime, page, pageSize, recvWindow是
/sapi/v1/algo/futures/subOrders (GET)查询子订单(USER_DATA)algoIdpage, pageSize, recvWindow是
/sapi/v1/algo/futures/newOrderTwap (POST)创建时间加权平均价格(Twap)新订单(TRADE)symbol, side, quantity, durationpositionSide, clientAlgoId, reduceOnly, limitPrice, recvWindow是
/sapi/v1/algo/futures/newOrderVp (POST)创建成交量参与率(VP)新订单(TRADE)symbol, side, quantity, urgencypositionSide, clientAlgoId, reduceOnly, limitPrice, recvWindow是
/sapi/v1/algo/spot/order (DELETE)取消 Algo 订单(TRADE)algoIdrecvWindow是
/sapi/v1/algo/spot/openOrders (GET)查询当前未完成的 Algo 订单(USER_DATA)无recvWindow是
/sapi/v1/algo/spot/historicalOrders (GET)查询历史 Algo 订单(USER_DATA)无symbol, side, startTime, endTime, page, pageSize, recvWindow是
/sapi/v1/algo/spot/subOrders (GET)查询子订单(USER_DATA)algoIdpage, pageSize, recvWindow是
/sapi/v1/algo/spot/newOrderTwap (POST)创建时间加权平均价格(Twap)新订单(TRADE)symbol, side, quantity, durationclientAlgoId, limitPrice是

参数

通用参数
  • algoId:例如 14511(例如,1)
  • recvWindow:(例如,5000)
  • symbol:交易对,例如 BTCUSDT(例如,BTCUSDT)
  • side:BUY 或 SELL(例如,BUY)
  • startTime:以毫秒为单位,例如 1641522717552(例如,1623319461670)
  • endTime:以毫秒为单位,例如 1641522526562(例如,1641782889000)
  • page:默认为 1(例如,1)
  • pageSize:最小值为 1,最大值为 100;默认为 100(例如,100)
  • symbol:交易对,例如 BTCUSDT(例如,BTCUSDT)
  • side:交易方向(BUY 或 SELL)(例如,BUY)
  • positionSide:单向持仓模式下默认为 BOTH;双向持仓模式下为 LONG 或 SHORT。在双向持仓模式下必须发送此参数。(例如,BOTH)
  • quantity:基础资产数量;每笔订单的名义价值上限为 200k、2mm 或 10mm,具体取决于交易对。如果订单超过每笔订单的名义价值上限,请减小下单数量。(例如,1.0)
  • duration:TWAP 订单的持续时间,单位为秒。[300, 86400](例如,5000)
  • clientAlgoId:Algo 订单中的唯一 ID(长度应为 32 个字符),如果未发送,则会提供默认值(例如,1)
  • reduceOnly:"true" 或 "false"。默认为 "false";双向持仓模式下不能发送;开仓时不能发送
  • limitPrice:订单限价;如果未发送,默认按市价下单(例如,1.0)
  • urgency:表示当前执行的相对速度;枚举值:LOW、MEDIUM、HIGH(例如,LOW)

身份验证

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

  • apiKey:您的 Binance API key(用于请求头)
  • secretKey:您的 Binance API secret(用于签名)

基础 URL:

安全性

共享凭据

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

  1. 环境变量

仅搜索以下特定变量(绝不转储完整环境):

已授权的环境变量

  • 主网:BINANCE_API_KEY 和 BINANCE_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 读取单个密钥,绝不要加载整个文件:

# 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
  • 绝不要在 env 文件中运行 grep,除非使用特定密钥锚定(^VARNAME=)
  • 绝不要将密钥文件加载到 shell 环境中(source .env 或 . .env)
  • 仅读取当前任务明确需要的凭据
  • 绝不要在输出或回复中回显或记录原始凭据
  • 如果 TOOLS.md 中包含真实凭据,绝不要将其提交到版本控制中——请将其添加到 .gitignore
绝不泄露 API 密钥和密钥文件

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

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

绝不显示完整密钥

向用户展示凭据时:

  • API 密钥: 显示前 5 个字符和后 4 个字符:su1Qc...8akf
  • 密钥: 始终遮蔽,仅显示最后 5 个字符:***...aws1

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

列出账户

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

  • main(主网)
  • futures-keys(主网)
主网交易

执行主网交易时,务必先向用户确认,要求他们输入“CONFIRM”后再继续。


Binance 账户

main
  • API 密钥:your_mainnet_api_key
  • 密钥:your_mainnet_secret
TOOLS.md 结构
## Binance Accounts

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

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

Agent 行为

  1. 请求凭据:遮蔽密钥(仅显示最后 5 个字符)
  2. 列出账户:显示名称和环境,绝不显示密钥
  3. 选择账户:如有歧义则询问,默认使用 main
  4. 执行主网交易时,先向用户确认,要求他们输入“CONFIRM”后再继续
  5. 新凭据:提示用户提供名称、环境和签名模式

添加新账户

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

  • 询问账户名称
  • 将凭据存储在 TOOLS.md 中,并确认时遮蔽密钥

签名请求

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

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

否则,不要执行步骤 4–6。

User Agent 标头

添加 User-Agent 标头,并使用以下字符串:binance-algo/1.1.0 (Skill)

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

评论

支持 Markdown