支持多种交易策略的 GRVT 永续合约交易机器人。
- ✅ 多策略支持: 网格交易策略 + 盘口做市策略 + 心跳 Maker 策略 + 对敲刷量策略
- ✅ 灵活配置: 通过命令行或环境变量配置策略参数
- ✅ Dry-run 模式: 模拟交易,测试策略逻辑
- ✅ 实时监控: WebSocket 实时获取行情和账户更新
- ✅ 风险管理: 持仓限制、库存管理、冷却机制
双向网格交易策略,通过在价格波动中反复买卖赚取差价。
适用场景: 震荡市场,价格在一定范围内波动
核心特点:
- 双向持仓(多头+空头)
- 动态网格调整
- 持仓风险控制
- 主要使用 Maker 订单(获得返佣)
使用示例:
# 默认参数运行
uv run python main.py --strategy grid --symbol SOL-USDT --dry-run
# 自定义参数
uv run python main.py --strategy grid --symbol BTC-USDT \
--grid-spacing 0.002 \
--order-amount 200 \
--position-threshold 10000参数说明:
--grid-spacing: 网格间距(默认 0.005,即 0.5%)--order-amount: 每单金额(USDT)(默认 100)--position-threshold: 持仓阈值(USDT)(默认 6000)--position-limit: 持仓限制(USDT)(默认 3000)
在买卖盘口之间动态挂单,通过价差获利的做市策略。
适用场景: 流动性较好的市场,适合专业做市
核心特点:
- 动态价格调整
- 库存风险管理
- 持仓倾斜机制
- 价差套利
使用示例:
# 默认参数运行
uv run python main.py --strategy pankou --symbol SOL-USDT --dry-run
# 自定义参数
uv run python main.py --strategy pankou --symbol ETH-USDT \
--price-range 10 \
--min-price-step 2 \
--trade-amount 0.02参数说明:
--price-range: 价格范围(默认 5)--min-price-step: 最小价格间隔(默认 1)--trade-amount: 每次交易量(默认 0.01)
按照 1 分钟心跳(可配置)执行纯 Maker 订单的“开/平”完整交易轮次。每轮结束后根据盈亏自动调整下一轮的金额与杠杆:盈利重置,亏损金额×1.2 且杠杆+1;当杠杆达到上限(默认 50x)时,该轮完成后重置。
核心特点:
- 纯 Maker 下单(post-only/PO)
- 订单生命周期管理(开仓/检查/撤单/追价/平仓)
- 简单的状态管理(IDLE/OPENING/CLOSING)
使用示例:
# Dry-run 测试
uv run python main.py --strategy heartbeat --symbol XRP-USDT --dry-run \
--hb-interval 60 --hb-initial-amount 20 --hb-initial-leverage 1 --hb-max-leverage 50
# 实盘示例(确保 .env 已配置)
uv run python main.py --strategy heartbeat --symbol XRP-USDT \
--hb-interval 60 --hb-initial-amount 20 --hb-initial-leverage 1 --hb-max-leverage 50参数说明:
--hb-interval: 心跳间隔(秒),默认 60--hb-initial-amount: 初始下单数量(币本位),默认 20--hb-initial-leverage: 初始杠杆,默认 1--hb-max-leverage: 杠杆上限,默认 50--hb-size-scale-leverage: 当交易所 API 不支持设置杠杆时,可选将“杠杆”作为下单数量的放大系数应用到下单数量(谨慎使用)
通过同价买卖来增加交易量,获取交易所返佣或等级优惠。买入价和卖出价相同,不产生价差收益。
适用场景:
- ✅ 交易所有明确的做市商优惠政策(负手续费/返佣)
- ✅ 适合交易量要求较高的VIP等级提升
- ✅ 存在流动性挖矿或返佣活动的平台
核心特点:
- 同价买卖(不赚取价差)
- 交易量导向
- 依赖交易所返佣机制
- 订单状态管理(两单都成交/单边成交/都未成交)
- 智能对冲机制:优先使用Maker对冲(获取返佣),失败则降级为市价对冲(保证风险控制)
使用示例:
# Dry-run 测试(默认使用智能Maker对冲)
uv run python main.py --strategy duiqiao --symbol SOL-USDT --dry-run \
--dq-trade-amount 0.1 --dq-target-amount 1.0
# 实盘示例(使用智能Maker对冲,获取双倍返佣)
uv run python main.py --strategy duiqiao --symbol SOL-USDT \
--dq-trade-amount 0.1 --dq-target-amount 10.0 \
--dq-use-maker-hedge --dq-hedge-wait-time 3
# 如果需要快速对冲(使用市价单),可以禁用Maker对冲
uv run python main.py --strategy duiqiao --symbol SOL-USDT \
--dq-trade-amount 0.1 --dq-target-amount 10.0 \
--dq-hedge-wait-time 0 # 设为0等同于禁用Maker对冲参数说明:
--dq-trade-amount: 每次交易量(默认 0.01,需根据交易所最小下单量调整)--dq-target-amount: 目标完成交易量(双边计算)(默认 1.0)--dq-use-maker-hedge: 优先使用Maker对冲(默认 true,获取返佣)--dq-hedge-wait-time: Maker对冲单等待时间(秒)(默认 3)
- 如果买卖订单同时成交,扣除手续费后通常是亏损的
- 必须依赖交易所的负手续费(Maker返佣)才能盈利
- 如果交易所政策变化,策略可能立即失效
- 可能面临合规风险(部分地区对刷量行为有限制)
- 仅建议在有明确返佣政策的交易所使用
💡 智能对冲优化:
- ✅ 优先使用Maker对冲:单边成交后,先尝试用限价单对冲(获取返佣)
- ✅ 降级Taker对冲:如果Maker单在指定时间内未成交,自动降级为市价对冲
- ✅ 成本优化:Maker对冲成功时,双边都获得返佣(-0.02%),比市价对冲节省 0.065%
- ✅ 风险可控:即使Maker对冲失败,也会自动用市价单强制对冲,保证持仓平衡
uv sync复制 .env.example 到 .env 并填写你的账户信息:
cp .env.example .env编辑 .env 文件:
GRVT_TRADING_ACCOUNT_ID=your_trading_account_id
GRVT_PRIVATE_KEY=your_private_key
GRVT_API_KEY=your_api_key
GRVT_ENV=TESTNET # 或 PROD测试模式(推荐首次使用):
# 测试网格策略
uv run python main.py --strategy grid --symbol SOL-USDT --dry-run
# 测试盘口策略
uv run python main.py --strategy pankou --symbol SOL-USDT --dry-run
# 测试对敲策略
uv run python main.py --strategy duiqiao --symbol SOL-USDT --dry-run实盘运行:
# 运行网格策略
uv run python main.py --strategy grid --symbol SOL-USDT
# 运行盘口策略
uv run python main.py --strategy pankou --symbol SOL-USDT
# 运行对敲策略(确保交易所有返佣政策)
uv run python main.py --strategy duiqiao --symbol SOL-USDTGRVT 交易所费率:
- Maker: -0.01% (返佣)
- Taker: 0.055%
两种策略都主要使用 Maker 订单,因此可以获得手续费返佣。
| 特征 | 网格策略 | 盘口策略 | 心跳策略 | 对敲策略 |
|---|---|---|---|---|
| 适用市场 | 震荡市场 | 流动性好的市场 | 任意市场 | 有返佣的市场 |
| 风险程度 | 中等 | 较高 | 中等 | 极高 |
| 收益模式 | 价格波动差价 | 买卖价差 | Maker返佣 | 交易所返佣 |
| 持仓特点 | 双向持仓 | 动态库存 | 周期性持仓 | 对冲持仓 |
| 技术要求 | 中等 | 较高 | 中等 | 低 |
| 资金效率 | 中等 | 较高 | 高 | 低 |
| 依赖条件 | 价格震荡 | 有价差 | Maker返佣 | 负手续费 |
- 永续合约交易存在高风险,请谨慎使用
- 建议先在测试网环境熟悉策略
- 使用
--dry-run模式测试策略逻辑 - 合理设置持仓限制和风险参数
- 定期监控策略运行状态
grvt-bot/
├── main.py # 主程序入口
├── strategies/ # 策略目录
│ ├── __init__.py
│ ├── base.py # 策略基类
│ ├── grid_strategy.py # 网格交易策略
│ ├── pankou_strategy.py # 盘口做市策略
│ ├── heartbeat_strategy.py # 心跳 Maker 策略
│ └── duiqiao_strategy.py # 对敲刷量策略
├── docs/ # 文档目录
│ ├── duiqiao.md # 对敲策略说明(理论文档)
│ ├── pankou.md # 盘口策略说明
│ ├── FEE_ANALYSIS.md # 费率分析
│ └── STRATEGY_COMPARISON.md # 策略对比
├── log/ # 日志目录
├── .env # 环境变量配置
├── .env.example # 环境变量模板
├── pyproject.toml # 项目配置
└── README.md # 本文件
uv run python main.py --help策略运行日志保存在 log/main.log:
# 实时查看日志
tail -f log/main.log
# 查看最近的日志
tail -n 100 log/main.log- 网格策略: 适合币价在一定范围内震荡的市场,不需要判断方向
- 盘口策略: 适合流动性好的市场,需要更精细的风险管理
- 心跳策略: 适合追求纯 Maker 返佣的场景,自动调整杠杆
- 对敲策略:
⚠️ 仅适合有明确负手续费/返佣政策的交易所,高风险刷量策略
网格策略:
- 网格间距:建议从 0.5% 开始,根据币种波动率调整
- 订单金额:建议从小金额开始,逐步增加
- 持仓限制:根据总资金量的 20-30% 设置
盘口策略:
- 价格范围:根据当前市场波动率设置,建议 5-10
- 交易量:建议从小额开始测试
- 库存限制:严格控制,避免单边持仓过大
对敲策略:
⚠️ 仅在确认交易所有负手续费(Maker返佣)时使用- 交易量:建议从极小额开始(0.01)
- 目标量:建议设置较小的目标量进行测试(1.0)
- 监控手续费:密切监控累计手续费,确保返佣大于成本
Dry-run 模式模拟订单操作,但实际成交情况可能不同。建议:
- 先在 dry-run 模式观察策略逻辑
- 然后在测试网小资金运行
- 最后在主网小资金试运行
如遇问题,请查看:
- 日志文件
log/main.log - 文档目录
docs/ - 项目 Issues
MIT