Nav apraksta

lushdog 99b5b3850f 套利 1 mēnesi atpakaļ
.env.example f1083a712f main 1 mēnesi atpakaļ
.gitignore f1083a712f main 1 mēnesi atpakaļ
README.md 99b5b3850f 套利 1 mēnesi atpakaļ
bid.mjs a8faebf102 单项下单 1 mēnesi atpakaļ
index.mjs f1083a712f main 1 mēnesi atpakaļ
package-lock.json f1083a712f main 1 mēnesi atpakaļ
package.json f1083a712f main 1 mēnesi atpakaļ

README.md

Polymarket BTC Up/Down Trading Bot

这是一个自动化交易机器人,用于在 Polymarket 上交易比特币涨跌预测市场。机器人会根据当前时间自动计算正确的市场 slug,支持同时下单 UP 和 DOWN 的限价单,也支持指定方向单独下单。

功能特性

  • 🕐 自动时间计算:根据当前 UTC 时间自动计算下一个 15 分钟间隔的市场 slug
  • 📊 双向下单index.mjs 可同时下单 UP 和 DOWN 的限价单
  • 🎯 单向下单bid.mjs 支持根据参数指定下单方向(UP 或 DOWN)
  • 🔐 环境变量支持:通过 .env.local 文件安全地管理私钥和配置
  • 实时交易:使用 Polymarket CLOB API 进行实时交易
  • 🛡️ 错误处理:完善的错误处理和日志记录

安装依赖

npm install

环境配置

  1. 复制环境变量示例文件:

    cp env.example .env.local
    
  2. 编辑 .env.local 文件,填入你的配置:

    PRIVATE_KEY=你的私钥
    FUNDER_ADDRESS=你的Polymarket地址
    

使用方法

index.mjs - 同时下单 UP 和 DOWN

同时下单 UP 和 DOWN 的限价单(价格和数量从环境变量读取):

node index.mjs

bid.mjs - 指定方向下单

根据传入参数指定下单方向,支持命令行参数覆盖价格和数量:

基本用法

# 下单 UP(使用环境变量中的默认价格和数量)
node bid.mjs up

# 下单 DOWN(使用环境变量中的默认价格和数量)
node bid.mjs down

指定价格和数量

# 下单 UP,价格为 0.49,数量为 5
node bid.mjs up 0.49 5

# 下单 DOWN,价格为 0.48,数量为 10
node bid.mjs down 0.48 10

参数说明

  • 第一个参数(必填):下单方向

    • up - 下单 UP
    • down - 下单 DOWN
  • 第二个参数(可选):订单价格

    • 如果不提供,使用环境变量 ORDER_PRICE 或默认值 0.49
  • 第三个参数(可选):订单数量

    • 如果不提供,使用环境变量 ORDER_SIZE 或默认值 5

套利原理

核心策略:双向下单套利

index.mjs 实现的是一个基于价格差的套利策略:

基本原理

  1. 同时下单 UP 和 DOWN

    • 在同一个市场同时买入 UP 和 DOWN 两个方向的份额
    • 例如:以价格 0.49 各买入 1 个份额
  2. 总成本计算

    • 总成本 = 下单价格 × 2
    • 示例:0.49 × 2 = 0.98
  3. 市场结算规则

    • Polymarket 的预测市场:结果必然是 UP 或 DOWN 之一
    • 猜对的方向获得 1,猜错的方向获得 0
  4. 利润计算

    • 无论结果如何,总会有一个方向猜对
    • 收益 = 1(猜对方向的支付)
    • 成本 = 下单价格 × 2
    • 利润 = 1 - (下单价格 × 2)

示例计算

假设当前市场价格:

  • UP 价格:0.49
  • DOWN 价格:0.49(或略高/略低)

执行套利:

  • 买入 UP:0.49 × 5 = 2.45
  • 买入 DOWN:0.49 × 5 = 2.45
  • 总成本: 2.45 + 2.45 = 4.90

结算后:

  • 假设 UP 猜对,获得:1 × 5 = 5.00
  • DOWN 猜错,获得:0 × 5 = 0
  • 总收益: 5.00

净利润:

  • 利润 = 5.00 - 4.90 = 0.10
  • 利润率 = 0.10 / 4.90 = 2.04%

关键要点

优势:

  • 风险较低:无论市场走向如何,总能保证一个方向猜对
  • 利润确定:只要总成本 < 1,就有利润空间
  • 策略简单:不需要预测市场方向

⚠️ 注意事项:

  • 只有当 UP 价格 + DOWN 价格 < 1 时才有利可图
  • 需要考虑市场流动性,确保两个方向的订单都能成交
  • 利润空间取决于价格差,通常利润率为 1-3%

风险提示

虽然这个策略看起来风险较低,但仍需要注意:

  1. 订单执行风险:限价单可能无法完全成交
  2. 价格波动:下单时和执行时价格可能发生变化
  3. 市场流动性:流动性不足可能导致部分订单无法成交
  4. 成本控制:频繁交易需要考虑手续费和 Gas 费用

配置说明

环境变量

变量名 描述 示例
PRIVATE_KEY 你的以太坊私钥 0x1234...
FUNDER_ADDRESS 你的 Polymarket 地址 0xabcd...

交易参数

index.mjsbid.mjs 都使用相同的环境变量配置:

  • 价格:环境变量 ORDER_PRICE(默认 0.49)
  • 数量:环境变量 ORDER_SIZE(默认 5)
  • 订单类型:GTC (Good Till Cancelled)
  • 市场间隔:15 分钟

bid.mjs 额外支持通过命令行参数覆盖价格和数量:

  • 命令行参数优先级高于环境变量
  • 示例:node bid.mjs up 0.49 5 会使用命令行指定的 0.49 和 5,而不是环境变量中的值

市场信息

机器人会自动获取以下信息:

  • 市场 ID 和问题描述
  • UP/DOWN token ID
  • 当前价格和流动性
  • 最小订单大小和价格精度

安全注意事项

⚠️ 重要

  • 永远不要将 .env.local 文件提交到版本控制系统
  • 确保私钥安全,不要分享给他人
  • 建议使用专门的交易账户,不要使用主钱包
  • 在正式交易前,先在测试环境验证

项目结构

poly/
├── index.mjs          # 同时下单 UP 和 DOWN 的主程序
├── bid.mjs            # 指定方向下单的程序(支持命令行参数)
├── package.json        # 项目配置和依赖
├── .env.example         # 环境变量示例文件
├── .env.local          # 环境变量文件(需要创建)
└── README.md          # 项目说明文档

依赖包

  • @polymarket/clob-client: Polymarket CLOB API 客户端
  • @ethersproject/wallet: 以太坊钱包管理
  • dotenv: 环境变量管理

故障排除

常见问题

  1. API Key 创建失败

    • 检查私钥是否正确
    • 确认网络连接正常
    • 验证 Polymarket 账户状态
  2. 市场未找到

    • 检查时间计算是否正确
    • 确认市场是否已激活
    • 验证 slug 格式
  3. 订单创建失败

    • 检查账户余额
    • 确认订单参数是否有效
    • 查看市场状态

日志说明

程序会输出详细的日志信息:

  • 时间戳计算过程
  • API 调用状态
  • 订单创建结果
  • 错误信息(如有)

许可证

本项目仅供学习和研究使用。使用本软件进行实际交易的风险由用户自行承担。

贡献

欢迎提交 Issue 和 Pull Request 来改进这个项目。

联系方式

如有问题,请通过 GitHub Issues 联系。