Polymarket 交易快速调用 (pmbuysell)
在用户或模型需要执行 Polymarket 买卖、多账号下单或程序化调用 pmbuysell 时使用本 Skill。
运行位置(主流写法)
本技能文档里所有命令都默认在 项目根目录(也就是包含 pmbuysell/ 目录的那个目录)执行。
如果你当前目录不是项目根,请先切换到你的实际路径,例如:
cd <your-project-root>
快速调用方式
方式零:初始化配置(生成 .env 模板)
AI 智能体可以先执行一次初始化,确保有一个确定的配置文件路径可编辑:
python -m pmbuysell.skills.init_cli
生成位置固定为:pmbuysell/.env(若已存在则不会覆盖;需要覆盖可加 --force)。
初始化后可做一次配置自检(会列出缺失项):
python -m pmbuysell.skills.check_config_cli
方式一:CLI 一键下单(推荐模型调用)
在 项目根目录 下执行,以便 pmbuysell 作为包被找到:
python -m pmbuysell.skills.trade_cli --account ACC1 --action buy --slug tc-updown-5m-1772452800 --side down --amount 10
自动 slug(按当前 5m/15m 桶):
python -m pmbuysell.skills.trade_cli --account ACC1 --action buy --slug-mode auto --symbol tc --timeframe 5m --side down --amount 10
| 参数 | 必填 | 说明 |
|---|---|---|
--account | 是 | 账号 ID,如 ACC1(需在 .env 的 PM_ACCOUNT_IDS 及 ACC1_PRIVATE_KEY/ACC1_FUNDER 中配置) |
--action | 是 | buy 或 sell |
--slug | 手动时必填 | 市场 slug,如 tc-updown-5m-1772452800 |
--slug-mode | 否 | manual(默认)或 auto;auto 时用 --symbol、--timeframe 生成当前桶 slug |
--symbol | auto 时 | 标的,如 tc、btc,默认 tc |
--timeframe | auto 时 | 5m 或 15m,默认 5m |
--side | 是 | up 或 down |
--amount | 是 | 买入:USDC 金额;卖出:token 数量;当买入且 amount=0 时会按余额规则自动计算下注金额 |
输出为 JSON(字段可能随功能演进略有增减):
ok: 是否成功message: 失败原因或成功提示usdc_balance: 交易后/查询到的余额(可能为 null)order_message: 结构化成交/下单信息(可能为 null)requested_amount: 你传入的 amount 原值auto_amount: 当buy且amount=0时,按余额规则自动计算出的买入金额
ok 为 false 时 CLI 退出码为 1。
方式一补充:CLI 查询余额 / 持仓
查询 USDC 余额:
python -m pmbuysell.skills.balance_cli --account ACC1
查询指定 slug 的 up/down 持仓(同时返回 USDC):
python -m pmbuysell.skills.balance_cli --account ACC1 --slug tc-updown-5m-1772452800
自动结算(redeem)— Pro 付费模块
免费版提供接口入口,调用时仅提示需购买 Pro 付费:
python -m pmbuysell.skills.auto_redeem_cli --account ACC1 --dry-run
返回示例:{"ok": false, "message": "自动结算为 Pro 版本功能,请购买", ...}
购买 Pro 后安装并调用:
pip install pmbuysell_redeem
python -m pmbuysell_redeem.cli --account ACC1 --dry-run
redeem 相关配置自检(供 Pro 用户预校验):
python -m pmbuysell.skills.check_config_cli --account ACC1 --require-redeem
方式二:Python 函数调用(在代码中直接调用)
在同一项目环境中:
from pmbuysell.skills.multi_account import market_buy, market_sell, get_balance
# 市价买入
result = market_buy("ACC1", "tc-updown-5m-1772452800", "down", 10.0)
# 市价卖出
result = market_sell("ACC1", "tc-updown-5m-1772452800", "up", 5.0)
# 查询余额
result = get_balance("ACC1", slug="tc-updown-5m-1772452800")
返回 dict:{"ok": bool, "message": str | None, "usdc_balance": float | None, "order_message": dict | None}(trade);{"ok": bool, "usdc": float, "conditional": {...} | None, "message": str | None}(balance)。
环境与依赖
- 需在
pmbuysell目录下存在.env(可参考.env.example),配置PM_ACCOUNT_IDS、ACCx_PRIVATE_KEY、ACCx_FUNDER。 - 安装依赖(任选其一,在项目根目录执行):
- 仅使用本 Skill:
pip install -r pmbuysell/skills/requirements.txt - 使用完整项目(含 Flask 等):
pip install -r pmbuysell/requirements.txt
- 仅使用本 Skill:
账号配置样例(复制到 pmbuysell/.env)
方式 A(推荐):扁平变量,多账号可读性更好
# 声明有哪些账号
PM_ACCOUNT_IDS=ACC1,ACC2
# 每个账号需要:私钥 + funder(pm 的代理地址 / Safe 地址)
ACC1_PRIVATE_KEY=0xYOUR_PRIVATE_KEY_1
ACC1_FUNDER=0xYOUR_FUNDER_ADDRESS_1
ACC2_PRIVATE_KEY=0xYOUR_PRIVATE_KEY_2
ACC2_FUNDER=0xYOUR_FUNDER_ADDRESS_2
方式 B(可选):JSON 一行配置(适合直接注入环境变量)
PM_ACCOUNTS_JSON={"ACC1":{"private_key":"0xYOUR_PRIVATE_KEY_1","funder":"0xYOUR_FUNDER_ADDRESS_1"},"ACC2":{"private_key":"0xYOUR_PRIVATE_KEY_2","funder":"0xYOUR_FUNDER_ADDRESS_2"}}
模型调用检查清单
- 确认在 项目根目录 下执行 CLI,或当前环境能
import pmbuysell。 - 确认
account已在 .env 中配置。 - 手动 slug 时:
slug格式为{symbol}-updown-{5m|15m}-{桶起始时间戳}。 - 自动 slug 时:只支持
timeframe为5m或15m。 - 根据返回的
ok与message判断是否成功;失败时message常含余额、市场关闭、无匹配等提示。