关于 algo
Binance algo 技能面向需要通过 API 管理算法订单的交易者,支持现货与期货的 TWAP、VP 下单及订单查询。它涵盖订单取消、历史记录和子订单查询,并要求相关操作使用 Binance API 凭据。
主要功能
- 01现货与期货 TWAP 下单
- 02期货 VP 下单
- 03查询当前及历史算法订单
- 04查询子订单并取消订单
- 05使用 API 凭据进行认证
适用场景
- 01在 Binance 提交 TWAP 算法订单
- 02按紧急程度提交期货 VP 订单
- 03检查算法订单及子订单状态
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ binance/ binance-skills-hub --skill algo安装后在 Claude Code 中输入/algo确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
CHANGELOG.mdLICENSE.mdreferences/authentication.md详细介绍
Binance Algo 技能
通过经过身份验证的 API 端点在 Binance 上发起 Algo 请求。某些端点需要 API key 和 secret key。以 JSON 格式返回结果。
快速参考
| 端点 | 描述 | 必填 | 可选 | 身份验证 |
|---|---|---|---|---|
/sapi/v1/algo/futures/order (DELETE) | 取消 Algo 订单(TRADE) | algoId | recvWindow | 是 |
/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) | algoId | page, pageSize, recvWindow | 是 |
/sapi/v1/algo/futures/newOrderTwap (POST) | 创建时间加权平均价格(Twap)新订单(TRADE) | symbol, side, quantity, duration | positionSide, clientAlgoId, reduceOnly, limitPrice, recvWindow | 是 |
/sapi/v1/algo/futures/newOrderVp (POST) | 创建成交量参与率(VP)新订单(TRADE) | symbol, side, quantity, urgency | positionSide, clientAlgoId, reduceOnly, limitPrice, recvWindow | 是 |
/sapi/v1/algo/spot/order (DELETE) | 取消 Algo 订单(TRADE) | algoId | recvWindow | 是 |
/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) | algoId | page, pageSize, recvWindow | 是 |
/sapi/v1/algo/spot/newOrderTwap (POST) | 创建时间加权平均价格(Twap)新订单(TRADE) | symbol, side, quantity, duration | clientAlgoId, 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 请求。
- 环境变量
仅搜索以下特定变量(绝不转储完整环境):
已授权的环境变量
- 主网:
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)。
- 密钥文件(.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 文件中,此时你应重新读取该文件。
- 内联文件
发送内容符合以下格式的文件:
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 行为
- 请求凭据:遮蔽密钥(仅显示最后 5 个字符)
- 列出账户:显示名称和环境,绝不显示密钥
- 选择账户:如有歧义则询问,默认使用 main
- 执行主网交易时,先向用户确认,要求他们输入“CONFIRM”后再继续
- 新凭据:提示用户提供名称、环境和签名模式
添加新账户
用户通过内联文件或消息提供新凭据时:
- 询问账户名称
- 将凭据存储在
TOOLS.md中,并确认时遮蔽密钥
签名请求
对于需要签名的交易端点:
- 先检测密钥类型,在签名之前检查密钥格式。
- 使用所有参数(包括时间戳,Unix 毫秒)构建查询字符串。
- 根据 RFC 3986 使用 UTF-8 对参数进行百分比编码。
- 根据账户配置,使用密钥通过 HMAC SHA256、RSA 或 Ed25519 对查询字符串签名。
- 将签名附加到查询字符串。
- 添加
X-MBX-APIKEY标头。
否则,不要执行步骤 4–6。
User Agent 标头
添加 User-Agent 标头,并使用以下字符串:binance-algo/1.1.0 (Skill)
实现详情请参阅 references/authentication.md。