跳转到主要内容
Polymarket 上的所有订单都以限价单形式表达。市价单通过提交一个可成交价格的限价单来实现——你的订单会立即以盘口最优价格成交。 底层订单原语采用 EIP-712 标准进行结构化、哈希和签名,然后通过 Exchange 合约在链上执行。手动准备订单比较复杂,因此我们推荐使用开源的 TypeScriptPython SDK 客户端,它们会为你处理签名和提交。
如果你更喜欢直接使用 REST API,则需要自行管理订单签名。有关构造所需请求头的详细信息,请参阅身份验证

订单类型

  • FOKFAK 是市价单类型——它们立即与挂单流动性成交。
    • 买入: 指定你想要花费的美元金额
    • 卖出: 指定你想要出售的份额数量
  • GTCGTD 是限价单类型——它们以你指定的价格挂在盘口。
GTD 过期时间: 作为安全阈值,订单会在其设定的过期时间前一分钟过期,且过期时间必须至少在三分钟之后。如果你需要 5 分钟的有效生命周期,正确的过期值是 现在 + 1 分钟 + 5 分钟

Post-Only 订单

Post-only 订单是只会挂在盘口而不会在进入时立即匹配的限价单。
  • 如果 post-only 订单会穿过价差(即可立即成交),它将被拒绝而不是执行。
  • Post-only 不能与市价单类型(FOK 或 FAK)组合使用。如果市价单类型发送 postOnly = true,订单将被拒绝。
  • Post-only 只能与 GTCGTD 订单类型一起使用。

最小价格变动单位

市场有不同的最小价格增量(最小价格变动单位)。你的订单价格必须符合市场的最小价格变动单位,否则订单将被拒绝。
0.0025(0.25¢)最小价格变动单位仅适用于世界杯 晋级(to advance)胜负(moneyline)让分(spreads)总分(totals) 市场。报价前请始终查询市场的最小价格变动单位,不要假设某个固定值。
使用 SDK 检索市场的最小价格变动单位:
你还可以查看 Markets API 返回的市场对象上的 minimum_tick_size 字段。

Negative Risk

多结果事件(例如”谁会赢得选举?”有 3 个以上候选人)使用不同的交易合约,称为 Neg Risk CTF Exchange。在这些市场下单时,你必须在订单选项中传递 negRisk: true
你可以通过 SDK 或市场对象的 neg_risk 字段检查市场是否使用 negative risk:

授权额度

在下单之前,你的资金地址必须已批准 Exchange 合约使用相关代币:
  • 买入: 资金方必须设置大于或等于支出金额的 pUSD 授权额度。
  • 卖出: 资金方必须设置大于或等于出售金额的条件代币授权额度。
这允许 Exchange 合约根据你签名的订单指令执行结算。

有效性检查

系统会持续监控订单以确保它们保持有效。这包括跟踪:
  • 底层余额
  • 授权额度
任何被发现故意滥用这些检查的 maker 将被列入黑名单。
每个市场的订单下单也有限制。你只能下总额小于或等于每个市场可用余额的订单。例如,如果你的资金钱包中有 500 pUSD,你可以下一个以 $0.50 买入 1000 YES 的订单——但该市场中的任何额外买入订单都会被拒绝,因为你的全部余额已为第一个订单预留。 你可以下单的最大规模是: maxOrderSize=underlyingAssetBalance(orderSizeorderFillAmount)\text{maxOrderSize} = \text{underlyingAssetBalance} - \sum(\text{orderSize} - \text{orderFillAmount})

订单查询

所有查询端点都需要 L2 身份验证Builder 身份验证的客户端也可以使用相同的方法查询归属于其 builder 账户的订单。

获取单个订单

通过订单 ID 检索特定订单的详细信息:

获取未成交订单

检索你的未成交订单,可选择按市场或资产筛选:

OpenOrder 对象

每个返回的订单包含以下字段:

交易历史

当订单被匹配时,会创建一笔交易。交易经历以下状态:

Trade 对象

每笔交易包含以下字段:

MakerOrder 字段

maker_orders 数组中的每个条目包含: 使用 SDK 检索你的交易:

心跳

心跳端点维护会话存活以确保订单安全。如果在 10 秒内(最多有 5 秒缓冲)未收到有效心跳,你的所有未成交订单将被取消
  • 在每个请求中,包含你收到的最新 heartbeat_id。对于你的第一个请求,使用空字符串。
  • 如果你发送无效或过期的 heartbeat_id,服务器会响应 400 Bad Request 并在响应中提供正确的 heartbeat_id。更新你的客户端并重试。

订单评分

检查你的挂单是否符合 maker 返佣评分条件:

链上订单信息

当交易在链上结算时,Exchange 合约会发出 OrderFilled 事件,包含以下字段:

错误消息

下单时,如果无法下单,响应可能包含 errorMsg。如果 successfalse,则发生服务器端错误:

插入状态

当订单成功下单时,响应包含 status 字段:

安全性

Polymarket 的 Exchange 合约已由 Chainsecurity 审计(查看审计报告)。 运营商的权限仅限于订单匹配和确保正确排序。运营商无法设置价格或执行未经授权的交易。

下一步

创建订单

构建、签名和提交订单

取消订单

取消单个、多个或所有订单