Không có mô tả

lushdog 99b5b3850f 套利 11 tháng trước cách đây
.env.example f1083a712f main 11 tháng trước cách đây
.gitignore f1083a712f main 11 tháng trước cách đây
README.md 99b5b3850f 套利 11 tháng trước cách đây
bid.mjs a8faebf102 单项下单 11 tháng trước cách đây
index.mjs f1083a712f main 11 tháng trước cách đây
package-lock.json f1083a712f main 11 tháng trước cách đây
package.json f1083a712f main 11 tháng trước cách đây

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.mjs 和 bid.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 联系。