Polymarket

exchange.IO("GetActivity")

Polymarket 专属。查询任意钱包地址在 Polymarket 上的活动流(成交、赎回、拆分、合并、奖励等),数据来自 Data API /activity,无需鉴权。常用于跟单监控和查询本账户历史成交。

语法

python
activity = exchange.IO("GetActivity", address)
activity = exchange.IO("GetActivity", address, opts)

参数

参数类型必填说明
addressstr是要查询的钱包地址(Polymarket 钱包 / Proxy 地址)
optsdict否过滤条件,见下表

opts 可选键

键类型默认说明
limitint100返回条数,Data API 允许 0~500
startint-起始时间(Unix 秒)
endint-结束时间(Unix 秒)
typestr-活动类型(单个):TRADE / SPLIT / MERGE / REDEEM / REWARD / CONVERSION / MAKER_REBATE / REFERRAL_REWARD
sidestr-BUY / SELL,仅对成交有效
  • 结果固定按时间倒序(sortBy=TIMESTAMP, sortDirection=DESC)。
  • 其他键会被忽略;数字参数需为数值类型(不要传字符串)。

返回值

List[dict],Data API 原始记录。字段随活动类型变化,成交类记录常见字段:

字段说明
timestamp时间(Unix 秒)
type活动类型
sideBUY / SELL
size份数
usdcSizeUSDC 金额
price成交价
assetToken ID
conditionId条件 ID
outcome / outcomeIndex结果名称 / 下标
title / slug / eventSlug市场标题 / slug / 事件 slug
transactionHash链上交易哈希
proxyWallet钱包地址

字段以 Data API 实际返回为准,以上为常见字段(推断自 Polymarket Data API 文档),使用前建议先 Log 一条看结构。

示例

查询本账户最近成交

python
addr = exchange.GetAccount()["Info"]["walletAddress"]
trades = exchange.IO("GetActivity", addr, {"type": "TRADE", "limit": 20})
for t in trades or []:
    Log(f"{_D(t['timestamp'])} {t.get('side')} {t.get('size')} 份 {t.get('outcome')} "
        f"@ {t.get('price')} | {t.get('title')}")

跟单监控:轮询目标地址新成交

python
TARGET = "0x0000000000000000000000000000000000000000"   # 目标地址

def main():
    last_ts = Unix()
    while True:
        items = exchange.IO("GetActivity", TARGET, {"type": "TRADE", "start": last_ts, "limit": 50}) or []
        for t in reversed(items):          # 由旧到新处理
            if t["timestamp"] <= last_ts:
                continue
            Log(f"目标{t['side']} {t['size']} 份 {t['slug']} {t['outcome']} @ {t['price']}")
            # 按比例跟单
            exchange.IO("SetTokenID", t["asset"])
            if t["side"] == "BUY":
                exchange.Buy(min(round(t["price"] + 0.01, 2), 0.99), 5, "跟单")
            last_ts = max(last_ts, t["timestamp"])
        Sleep(3000)

查询某时间段内的赎回记录

python
start = Unix() - 7 * 24 * 3600
redeems = exchange.IO("GetActivity", addr, {"type": "REDEEM", "start": start, "limit": 500})
total = sum(float(r.get("usdcSize", 0)) for r in redeems or [])
Log(f"近 7 天赎回 {total:.2f} USDC")

注意事项

  1. start / end 单位是秒,不是毫秒。
  2. type 只能传一个类型字符串;需要多种类型请分别查询。
  3. 单次最多 500 条,更早的数据需要配合 end 分段查询。

相关方法