Polymarket

exchange.IO("SetTokenID")

Polymarket 专属。设置全局 Token ID,之后下单、挂单查询和不带 symbol 的行情查询都直接使用该 Token ID,不再请求 Gamma API 解析 SetCurrency() 的标的。

语法

python
result = exchange.IO("SetTokenID", token_id)

参数

参数类型必填说明
token_idstr是CLOB Token ID,十进制大整数字符串(不是 0x 地址),来自 Gamma 市场数据的 clobTokenIds,与 outcomes 按下标对应

返回值

  • dict:{"token_id": "..."}
  • None:失败(如传入空字符串),错误写入策略日志

作用范围

设置后以下方法优先使用 Token ID:

方法说明
Buy() / Sell()下单标的
GetOrders() / GetPendingOrders() / CancelAllOrders()挂单查询与撤单范围
GetTicker() / GetDepth() / GetTrades()仅在不传 symbol 时生效

说明

  1. 省去解析开销:只用 SetCurrency() 时,每次调用上述方法都会请求一次 Gamma API(约 100~300ms);设置 Token ID 后为 0 额外请求,适合高频策略。
  2. 不做校验:只检查是否为非空字符串,不校验 Token 是否存在,错误要到下单或查询时才暴露。
  3. 优先级高于 SetCurrency:设置后再调用 SetCurrency() 不会改变下单标的。切换标的时必须重新 SetTokenID 或先 exchange.IO("ClearTokenID")。
  4. GetTicker 的 Volume:不带 symbol 的 GetTicker() 此时拿不到 Gamma 数据,Volume 为 0;需要成交量时传 GetTicker(symbol)。
  5. 生命周期:保存在当前交易所实例中,实盘重启后失效。
  6. IO() 在 gRPC 层固定作用于 exchanges[0]。

示例

从 GetMarkets 取得 Token ID

python
markets = exchange.GetMarkets()
symbol = next(k for k in markets if k.startswith("btc-updown-5m-") and k.endswith("_USDC.Up"))
info = markets[symbol]["info"]
# outcomes / clobTokenIds 可能是 JSON 字符串,也可能已是列表
outcomes = info["outcomes"] if isinstance(info["outcomes"], list) else json.loads(info["outcomes"])
token_ids = info["clobTokenIds"] if isinstance(info["clobTokenIds"], list) else json.loads(info["clobTokenIds"])
token_id = token_ids[[o.lower() for o in outcomes].index("up")]

exchange.SetCurrency(symbol)          # 保留 symbol 便于 GetCurrency / 日志
exchange.IO("SetTokenID", token_id)   # 之后下单不再请求 Gamma API

从持仓取得 Token ID 并平仓

python
for p in exchange.GetPosition():
    if p["Info"].get("redeemable"):
        continue                      # 已结算的仓位走 Redeem
    exchange.IO("SetTokenID", p["Info"]["asset"])   # asset 即 Token ID
    exchange.Sell(-1, p["Amount"], "平仓")
exchange.IO("ClearTokenID")

高频网格挂单

python
exchange.IO("SetTokenID", token_id)
for price in [0.40, 0.39, 0.38]:
    exchange.Buy(price, 10, f"网格 {price}")

相关方法