跳到主要内容
AI教程

使用 TypeScript 构建和配置 Polymarket 跟单交易机器人

了解如何配置 Polymarket CodeX 跟单交易机器人、跟踪多个钱包、选择固定金额或按比例的下单规模、测试模拟订单、启用实时执行、设置风险限制,并安全管理其本地状态。

使用 TypeScript 构建和配置 Polymarket 跟单交易机器人

Polymarket CodeX 跟单机器人的功能

Polymarket CodeX 跟单机器人是一个 TypeScript 应用,用于监控一个或多个被跟踪钱包的活动,并创建相应的 Polymarket 订单。它通过公开的 Data API 读取钱包活动,并使用 @polymarket/clob-client-v2 通过 Polymarket 中央限价订单簿执行实时交易。

机器人可以使用固定美元金额或基于百分比的规模设置来复制买入和卖出操作。它还会在本地记录已发现的交易、生成的订单、已执行或模拟执行的订单,以及近似代币持仓。

风险警告: 这是交易软件,不保证盈利。始终先运行模拟,检查每个配置值,并在考虑实时执行前使用非常小的金额。

主要功能

  • 监控多个被跟踪钱包。
  • 支持固定金额和百分比两种跟单模式。
  • 通过 npm run test 提供模拟执行。
  • 通过 npm start 提供实时市场执行。
  • 可以根据机器人本地跟踪的持仓复制卖出活动。
  • 应用最低订单、最高订单、持仓和每日名义金额限制。
  • 支持成交并取消和全部成交否则取消的订单行为。
  • 可相对于被跟踪交易的成交价格提供可选的价格保护。
  • 将状态存储在本地 JSON 文件中。

要求

配置机器人前,请安装以下软件:

  • Node.js 20.10 或更高版本。
  • npm。

获取项目源代码,在其目录中打开终端,然后安装软件包依赖:

npm install

机器人依赖非 Beta 版 @polymarket/clob-client-v2 软件包执行订单,并依赖公开的 Polymarket Data API 轮询钱包活动。

配置实时交易凭证

创建或编辑项目的 .env 文件。添加 CLOB 主机、Polygon 链 ID、签名类型、私钥和存款钱包:

POLYMARKET_CLOB_HOST=https://clob.polymarket.com
POLYMARKET_CHAIN_ID=137
POLYMARKET_SIGNATURE_TYPE=POLY_1271
POLYMARKET_PRIVATE_KEY=0x...
POLYMARKET_DEPOSIT_WALLET=0x...

切勿将真实私钥或凭证文件提交到版本控制系统。请将私钥和任何 CLOB 凭证视为机密信息。

选择正确的签名类型

POLYMARKET_SIGNATURE_TYPE 接受以下值:

  • EOA
  • POLY_PROXY
  • POLY_GNOSIS_SAFE
  • POLY_1271

根据项目文档,POLY_1271 通常适用于新的存款钱包用户。通过外部拥有账户直接交易时,请选择 EOA;在这种情况下,可以省略 POLYMARKET_DEPOSIT_WALLET。

使用现有的 L2 凭证

机器人可以在启动期间派生凭证。若要跳过此步骤,请在 .env 中提供现有的 L2 凭证:

CLOB_API_KEY=...
CLOB_SECRET=...
CLOB_PASS_PHRASE=...

实时执行使用 createAndPostMarketOrder。开始实时交易前,请确保交易钱包已注资,并已获得 Polymarket 所需的授权。机器人不会部署钱包,也不会自动批准代币支出。

配置跟单规模

应用支持两种跟单模式。请选择与机器人所需承担的敞口金额相匹配的模式。

固定模式

固定模式会为复制的买入和卖出活动分配预设的美元金额:

COPY_MODE=fixed
FIXED_BUY_AMOUNT_USD=5
FIXED_SELL_AMOUNT_USD=5

在此示例中,符合条件的复制买入和卖出操作均使用配置的 5 美元金额。

百分比模式

百分比模式根据被跟踪钱包的活动计算订单规模:

COPY_MODE=percentage
COPY_PERCENTAGE=0.10

对于买入,机器人复制被跟踪交易美元名义金额的配置百分比。对于卖出,机器人复制被跟踪钱包卖出份额的配置百分比。卖出数量受机器人本地状态中当前跟踪持仓的限制。

例如,0.10 表示百分之十。实际订单仍必须通过已配置的风险控制。

设置风险控制

在运行模拟或实时交易前,在 .env 中定义订单和敞口限制:

MIN_ORDER_USD=1
MAX_ORDER_USD=25
MAX_POSITION_USD_PER_TOKEN=100
DAILY_MAX_NOTIONAL_USD=250
ORDER_TYPE=FAK
PRICE_PROTECTION_BPS=0
  • MIN_ORDER_USD 规定允许的最低订单价值。
  • MAX_ORDER_USD 限制单个订单的价值上限。
  • MAX_POSITION_USD_PER_TOKEN 限制每种代币的近似敞口。
  • DAILY_MAX_NOTIONAL_USD 限制每日名义金额活动总量。
  • ORDER_TYPE 控制成交行为。
  • PRICE_PROTECTION_BPS 可选地限制相对于被跟踪成交价格的执行价格。

了解 FAK 和 FOK 订单

使用 ORDER_TYPE=FAK 时,订单可以部分成交,未成交的剩余部分随后会被取消。使用 ORDER_TYPE=FOK 时,整个订单必须成交,否则订单失败。

当可以接受部分执行时,FAK 可能更合适。FOK 更严格,但在无法获得充足流动性时,可能导致更多订单失败。

应用价格保护

当 PRICE_PROTECTION_BPS=0 时,CLOB 客户端会估算可成交订单的最差市场价格。配置非零值时,机器人会针对买入计算高于被跟踪成交价格的最差价格限价,并针对卖出计算低于该价格的最差价格限价。

价格保护可以限制可容忍的价格变动,但 README 并未保证启用此设置后订单一定会成交。

先运行模拟

从项目的测试命令开始:

npm run test

此模式会生成模拟订单,而不是实时市场订单。使用它来验证钱包监控、下单规模行为、风险限制和环境设置,而无需立即提交实盘交易。

测试期间,请确认:

  1. 正在监控预期的钱包。
  2. 买入和卖出事件已正确标准化。
  3. 所选的跟单模式会生成预期的下单规模。
  4. 订单遵守最小值、最大值、持仓和每日限制。
  5. 卖出规模不会超过本地跟踪的持仓。
  6. 状态记录在 ./data/state.json 下。

开始实盘交易

在检查模拟结果、钱包资金、授权、凭据和所有风险设置后,使用以下命令开始实盘执行:

npm start

此命令会启用实时市场订单。请从极小的下单规模开始,同时监控终端输出和 Polymarket 账户。不要假设模拟结果会与实际成交、流动性或价格变动完全一致。

了解本地状态

机器人将本地状态存储在:

./data/state.json

此文件记录已发现的交易、模拟或已执行的订单,以及近似持仓。它有助于防止之前处理过的活动被当作新活动,并为卖出跟单逻辑提供可用持仓的本地视图。

由于市场订单可能部分成交,持仓数据只能是近似值。因此,本地状态可能与实际账户持仓不一致。

高级运营建议

添加持仓对账

对于生产环境,README 建议添加定期对账任务。该任务应查询 Data API 的 /positions 端点获取 POLYMARKET_DEPOSIT_WALLET 的数据,并将返回的持仓与本地状态进行比较。

在部分成交、订单失败、手动交易、重启或机器人外部进行任何活动后,这一点尤其重要。

保护状态文件

在升级或进行运营变更前,备份 ./data/state.json。机器人运行期间避免编辑该文件。由于它记录已发现的活动和近似持仓,删除或损坏该文件可能会影响重复检测和卖出规模。

使用保守的限制

从较低的 MAX_ORDER_USD、MAX_POSITION_USD_PER_TOKEN 和 DAILY_MAX_NOTIONAL_USD 开始。只有在观察机器人于真实市场条件下的表现后,才逐步提高这些限制。风险限制可以约束敞口,但无法消除执行、流动性、市场或软件风险。

查看相关源文件

该仓库将配置、轮询、策略、执行和状态管理职责分开:

  • src/config.ts 负责环境变量解析和安全检查。
  • src/index.ts 包含主要的轮询循环。
  • src/polymarket/dataApi.ts 执行公开 Data API 读取。
  • src/watchers/walletWatcher.ts 轮询多个钱包的活动。
  • src/polymarket/tradeParser.ts 标准化活动事件。
  • src/strategy/copyStrategy.ts 实现固定规模和百分比规模。
  • src/strategy/riskManager.ts 执行订单、每日和持仓限制。
  • src/polymarket/orderExecutor.ts 处理模拟和实盘执行。
  • src/storage/stateStore.ts 管理本地 JSON 状态。

在部署实盘环境前查看这些文件很有帮助,尤其是在需要了解轮询行为、安全检查、事件标准化或下单规模时。

结论

Polymarket CodeX CopyTrading Bot 提供了一个 TypeScript 工作流,用于监控多个钱包,并以固定规模或基于百分比的规模复制符合条件的买入和卖出。请谨慎配置凭据,执行保守的风险限制,通过 npm run test 验证行为,并在依赖 npm start 进行实盘交易前核对本地持仓。