Skip to main content
還沒有帳號?點擊這裡註冊 Polymarket 並完成入金,才能用錢包私鑰為訂單籤名、實際成交。
法律合規提醒:在使用 Polymarket 服務或 API 前,請確認您所在地區的法律規定。Polymarket 目前不支援比利時、法國、新加坡、泰國、中國大陸等地區,政策可能隨時變化。
使用我們的兩個客戶端之一下第一筆訂單相對簡單。對於 Python:pip install py-clob-client。對於 TypeScript:npm install @polymarket/clob-clientnpm install ethers 安裝完成後,您將能夠運行下面的代碼。花時間填寫頂部的常量,並確保根據您的登錄方法使用正確的籤名類型。
更多 TypeScript 和 Python 客戶端的示例可在 TypeScript 示例Python 示例 中找到。

Python 第一筆交易

from py_clob_client.client import ClobClient
from py_clob_client.clob_types import OrderArgs, OrderType
from py_clob_client.order_builder.constants import BUY

host: str = "https://clob.polymarket.com"
key: str = "" # 這是您的私鑰。從 https://reveal.magic.link/polymarket 或您的 Web3 錢包擴展導出
chain_id: int = 137 # 無需調整
POLYMARKET_PROXY_ADDRESS: str = '' # 這是使用 Polymarket 網站時顯示在您個人資料圖片下方的地址

# 從以下 3 個初始化選項中選擇一個以匹配您的登錄方法,並刪除任何未使用的行,以便只初始化一個客戶端。

### 使用與電子郵件/Magic 帳戶關聯的 Polymarket 代理初始化客戶端。如果您使用電子郵件登錄,請使用此示例。
client = ClobClient(host, key=key, chain_id=chain_id, signature_type=1, funder=POLYMARKET_PROXY_ADDRESS)

### 使用與瀏覽器錢包(Metamask、Coinbase Wallet 等)關聯的 Polymarket 代理初始化客戶端
# client = ClobClient(host, key=key, chain_id=chain_id, signature_type=2, funder=POLYMARKET_PROXY_ADDRESS)

### 初始化直接從 EOA 交易的客戶端。(如果您不知道這是什麼意思,則不使用它)
# client = ClobClient(host, key=key, chain_id=chain_id)

## 創建並籤署一個限價訂單,以每個 0.010c 的價格購買 5 個代幣
# 參考 API 文檔查找 tokenID:https://docs.polymarket.com/developers/gamma-markets-api/fetch-markets-guide

client.set_api_creds(client.create_or_derive_api_creds()) 

order_args = OrderArgs(
    price=0.01,
    size=5.0,
    side=BUY,
    token_id="", # 您要購買的代幣 ID 放在這裡。示例代幣:114304586861386186441621124384163963092522056897081085884483958561365015034812(習近平 2025 年下臺,YES 方)
)
signed_order = client.create_order(order_args)

## GTC(Good-Till-Cancelled,有效直到取消)訂單
resp = client.post_order(signed_order, OrderType.GTC)
print(resp)

TypeScript 第一筆交易

import { ClobClient } from '@polymarket/clob-client';
import { ethers } from 'ethers';

const host = "https://clob.polymarket.com";
const privateKey = ""; // 這是您的私鑰
const chainId = 137; // Polygon 主網
const POLYMARKET_PROXY_ADDRESS = ""; // 您的代理地址

// 創建錢包
const wallet = new ethers.Wallet(privateKey);

// 根據您的登錄方法選擇以下初始化選項之一

// 選項 1:使用與電子郵件/Magic 帳戶關聯的 Polymarket 代理
const client = new ClobClient(
  host,
  chainId,
  wallet,
  1, // signature_type=1 用於 Magic/Email
  POLYMARKET_PROXY_ADDRESS
);

// 選項 2:使用與瀏覽器錢包關聯的 Polymarket 代理
// const client = new ClobClient(
//   host,
//   chainId,
//   wallet,
//   2, // signature_type=2 用於瀏覽器錢包
//   POLYMARKET_PROXY_ADDRESS
// );

// 選項 3:直接從 EOA 交易
// const client = new ClobClient(host, chainId, wallet);

async function placeOrder() {
  // 設置 API 憑據
  await client.setApiCreds(client.createOrDeriveApiCreds());

  // 創建訂單
  const order = {
    tokenID: "", // 您要購買的代幣 ID
    price: 0.01,
    size: 5.0,
    side: "BUY",
  };

  // 籤署並提交訂單
  const signedOrder = await client.createOrder(order);
  const resp = await client.postOrder(signedOrder, "GTC");
  
  console.log(resp);
}

placeOrder();

重要提示和技巧

初始化客戶端

參見 Python 示例,了解如何根據您的錢包類型正確初始化 Py-Clob-Client 的詳細信息。提供了三個詳盡的示例。如果使用 MetaMask 錢包或 EOA,請參閱此處的資源獲取設置額度的說明。

理解代幣

當您購買市場時,您購買的是代表事件 Yes 或 No 結果的”代幣”。要輕鬆獲取給定事件所需的代幣對,我們提供了交互式端點

常見陷阱

常見錯誤及解決方案:
  1. 負風險市場:需要在 OrderArgs 中添加額外的標誌 negrisk=True
  2. invalid signature 錯誤,可能由以下原因之一導致:
    • 錯誤的 Funder 和/或私鑰
    • OrderArgs 中的 NegRisk 標誌不正確
  3. not enough balance / allowance 錯誤
    • 沒有足夠的 USDC 進行交易。詳見本頁底部的公式
    • 如果使用 Metamask / WEB3 錢包,請前往此處獲取設置額度的說明

訂單類型

GTC(Good-Till-Cancelled)

訂單將保持活躍狀態,直到完全成交或手動取消。

FOK(Fill-Or-Kill)

訂單必須立即完全成交,否則將被取消。

GTD(Good-Till-Date)

訂單將保持活躍直到指定的到期時間。

計算所需餘額

要下訂單,您需要的 USDC 數量計算如下: 買入訂單
所需餘額 = 價格 × 數量
賣出訂單
所需餘額 = (1 - 價格) × 數量
例如:
  • 以 0.55 的價格買入 100 個代幣:需要 55 USDC
  • 以 0.55 的價格賣出 100 個代幣:需要 45 USDC

查找市場和代幣 ID

要查找特定市場的代幣 ID,您可以:
  1. 使用 Gamma API 搜索市場
  2. 使用 Polymarket 官網 瀏覽市場
  3. 從市場 URL 中獲取市場 ID
示例:
# 獲取所有活躍市場
markets = client.get_markets()

# 搜索特定主題
for market in markets:
    if "Trump" in market['question']:
        print(f"市場:{market['question']}")
        print(f"Token ID (Yes): {market['tokens'][0]['token_id']}")
        print(f"Token ID (No): {market['tokens'][1]['token_id']}")

下一步