Skip to main content
通过市价单立即与可用流动性成交,或使用限价单指定价格并等待撮合。 下单前,请选择结果代币,并确认市场正在接受订单。以下示例假设你已有市场对象;如需查找或获取市场,请参阅发现市场
给定一个市场,读取其结果代币 ID:

限价单

限价单指定你愿意成交的价格,并可挂在订单簿上,直至成交、到期或被你取消。 当控制价格比立即执行更重要时,请使用限价单。 限价单还会定义未成交数量保持有效的时长:
出于安全阈值考虑,GTD 订单会在标明的到期时间前一分钟失效。若要设置 N 秒的 实际有效期,请使用 now + 60 + N。此外,到期时间必须至少在未来 3 分钟;更早到期的订单会被拒绝,因此最短实际有效期约为两分钟。

下限价单

给定一个 SecureClient,下限价单并检查响应:
1

下单

首先,使用价格和份额数调用 placeLimitOrder()。价格必须符合市场的最小价格增量, 数量必须达到最小订单数量。GTC 订单省略 expiration;GTD 订单则提供以秒为单位的 Unix 时间戳。
两个示例都以每份 0.52 USD 的价格买入 10 份。GTD 订单的实际有效期为一小时。
2

检查响应

然后,检查 response.ok 以确定 CLOB 是否接受了订单:
接受订单的响应包含订单 ID 和以下状态之一。如果订单全部或部分成交, tradeIds 集合会标识由此产生的交易;如有可用信息,transactionsHashes 会包含这些交易的交易哈希:被拒绝的订单返回 ok: false,并附带代码和消息。

仅挂单订单

仅挂单订单只会增加流动性:如果订单会立即与订单簿撮合,则会被拒绝,而不会吃单。 使用这种订单可确保你以做市商身份报价。
做市商使用仅挂单订单,通过在订单簿上挂单来增加流动性。
给定一个 SecureClient,在下限价单时设置 postOnly

市价单

市价单与限价单使用相同的底层订单,但会根据当前订单簿流动性得出可成交价格。 因此它可以立即执行,而不是挂在订单簿上。当执行比设定精确价格更重要时,请使用市价单。 在决定买入或卖出多少之前,请阅读市场的交易 约束

下市价单

以下示例使用 Fill and Kill (FAK),它会立即成交可用流动性并取消任何剩余数量。 有关 Fill or Kill (FOK),请参阅市价单类型
给定一个 SecureClient,估算价格并下市价单:
1

估算价格

首先,调用 estimateMarketPrice(),确定订单在当前订单簿深度下会触及的价格水平。 对于 BUY,amount 是要花费的 USD 名义金额。对于 SELL,shares 是要卖出的份额数,而不是其 USD 价值。
在这些示例中,amount: "10" 表示花费 10 USD,而 shares: "10" 表示卖出 10 份。估算结果是当前订单簿的快照。提交订单前,可用价格可能发生变化。
2

下单

然后,如果估算价格可以接受,将其作为 BUY 的最高价格或 SELL 的最低价格, 并下市价单:
maxPrice 可防止 BUY 跨越更高价格,minPrice 可防止 SELL 跨越更低价格。 如果订单簿在提交前发生变化,订单可能仅部分成交或完全不成交。
3

检查响应

最后,检查 response.ok 以确定 CLOB 是否接受了订单:
接受订单的响应包含订单 ID 和以下状态之一。如果订单全部或部分成交, tradeIds 会标识由此产生的交易;如有可用信息,transactionsHashes 会包含这些交易的交易哈希:被拒绝的订单返回 ok: false,并附带代码和消息。

限制市价买单支出

市价 BUY 的金额是扣费前的 USD 名义金额。适用的平台 费用构建者吃单 费用会在此基础上收取。当总成本必须保持在固定预算内时, 请设置包含所有费用的支出上限。
maxSpend 设为你愿意支付的最高金额(含费用):
此处,amount: "10" 请求扣费前买入 10 USD,而 maxSpend: "10" 将总支出限制为 10 USD。SDK 会减少签名的买入金额,使订单及其费用不超过上限。 省略 maxSpend 则会在 amount 之上另付费用。

市价单类型

市价单根据是否接受部分成交,使用以下两种执行类型之一:
SecureClient 上调用 placeMarketOrder() 时设置 orderType。 默认类型为 Fill and Kill。

分别创建和提交

当你需要检查订单、临时存储订单或将其加入后续批次时,可以创建并签署订单而不提交。
给定一个 SecureClient,在本地创建已签名订单,准备好后再提交:

批量提交订单

在一个请求中提交多个已签名订单。这适合在做市时跨多个价格水平放置阶梯报价。
给定一个 SecureClient,创建每个已签名订单,然后将它们一并传给 postOrders()
Example
postOrders 每次调用接受 1 至 15 个已签名订单。responses 中的每个条目 都可能被单独接受或拒绝,因此请检查每个条目的 ok,不要假定整个批次会一同成功或失败。

构建者归因

作为构建者计划的一部分,请将构建者代码附加到订单, 以便将已撮合交易计入你的构建者资料。该代码是标识你资料的 32 字节十六进制字符串。

附加构建者代码

在构建者账户中,打开 polymarket.com → 设置 → 构建者,然后从资料中复制 构建者代码
打开设置,选择构建者,然后复制构建者代码
在每个希望归因到你的集成的订单中包含构建者代码。由于它是已签名订单的一部分, 请在签名前添加。
给定一个 SecureClient,下单时通过 builderCode 传入该代码:

验证归因

归因订单撮合后,使用构建者代码查询构建者交易,以确认该交易已计入你的资料。 尚未撮合的订单不会出现在构建者交易结果中。
通过 PublicClientSecureClient 使用 listBuilderTrades, 然后获取匹配交易的第一页:
你还可以在构建者排行榜上监控已计入的交易量。 已撮合交易量最多可能需要 24 小时才会显示。