跳到主要内容

做市机器人简介

XBlade Studio 纯粹做市机器人 - 专注于提供稳定的订单簿深度和市场流动性。

概述

做市机器人(Pure Market Maker Bot)通过自动化策略提供市场流动性,维持买卖价差,提升市场交易体验。与刷量机器人不同,做市机器人不包含任何wash trade功能,只提供真实的订单簿深度,等待真实用户成交。

核心特性

✨ 主要功能

  • 只做市,不刷量: 仅提供买卖盘深度,无wash trade
  • 持久化订单: 订单长时间保留,减少频繁取消
  • 智能价格跟踪: 自动跟随市场价格,价格偏离0.3%才更新
  • 资金安全管理: 冻结率超过85%时停止新订单
  • 多账户支持: 提供更深的流动性
  • 订单保护机制: 只取消机器人自己的订单,保护用户订单

📊 订单簿配置

档位数量: 10档买单 + 10档卖单 = 20档总深度
基础价差: 0.05% (第1档)
价差递增: 每档增加 0.03%
每档金额: 100 USD

示例 (BTCUSDT @ $100,000):
买单:
第1档: $99,950 (-0.05%)
第2档: $99,920 (-0.08%)
第3档: $99,890 (-0.11%)
...
第10档: $99,730 (-0.27%)

卖单:
第1档: $100,050 (+0.05%)
第2档: $100,080 (+0.08%)
第3档: $100,110 (+0.11%)
...
第10档: $100,270 (+0.27%)

技术架构

文件结构

XBlade_maker_bot/
├── pure_market_maker.py # 纯粹做市机器人 ⭐
├── start_pure_maker.sh # 启动脚本
├── src/
│ ├── clients/
│ │ ├── renance_client.py # Renance API 客户端
│ │ └── hyperliquid_client.py # Hyperliquid价格源
│ └── core/
│ └── config.py # 配置管理
└── dashboard/
└── server.py # Web监控面板

核心类:PureMarketMaker

主要方法

方法功能
__init__()初始化机器人,加载账户,连接价格源
track_bot_order()记录机器人下的订单ID
cancel_bot_orders_only()只取消机器人订单,保护用户订单
get_account_status()获取账户资金状态
place_market_making_orders()放置做市订单
cleanup_orders()清理机器人的未成交订单
run()主运行循环

🔌 API 接口调用

做市机器人使用与刷量机器人相同的API接口,但调用模式不同:

认证接口

  • 登录认证: POST /api/v1/auth/login - 使用 EIP-712 签名登录
  • 获取 Nonce: GET /api/v1/auth/nonce/{address} - 获取登录随机数

交易接口

  • 下单: POST /api/v1/orders - 下限价单提供流动性
  • 批量取消: POST /api/v1/orders/batch - 清理机器人订单

账户接口

  • 查询余额: GET /api/v1/account/balances - 监控资金冻结率
  • 查询挂单: GET /api/v1/account/orders - 检查订单簿状态

做市调用流程

# 1. 登录认证
client.login()

# 2. 获取市场价格
current_price = hyperliquid_client.get_price("BTCUSDT")

# 3. 放置买单(10档)
for level in range(10):
spread = 0.0005 + (0.0003 * level)
buy_price = current_price * (1 - spread)

client.place_order(
symbol="BTCUSDT",
side="BUY",
type="LIMIT",
quantity="0.001",
price=f"{buy_price:.2f}"
)

# 4. 放置卖单(10档)
for level in range(10):
spread = 0.0005 + (0.0003 * level)
sell_price = current_price * (1 + spread)

client.place_order(
symbol="BTCUSDT",
side="SELL",
type="LIMIT",
quantity="0.001",
price=f"{sell_price:.2f}"
)

# 5. 定期检查和更新
# 价格偏离0.3%时更新订单
# 每10分钟完全重建订单簿

与刷量机器人的区别

  • ❌ 不执行 wash trade(不自成交)
  • ✅ 订单长期挂单,等待真实用户成交
  • ✅ 只在价格明显变化时更新订单
  • ✅ 追踪并只取消机器人自己的订单

详细API文档: 查看 API 接口详解 了解完整的接口说明和签名方法。

1. 初始化阶段

# 加载做市账户
for acc in Config.ACCOUNTS:
client = RenanceClient(Config.API_URL, acc['address'], acc['key'])
self.makers.append(client)

# 验证账户余额
for i, maker in enumerate(self.makers):
bal = maker.get_balances()
logger.info(f"账户 {i+1}: {bal}")

# 连接价格源
self.hl_client = HyperliquidClient()

2. 订单管理策略

智能补单机制

系统不会每次都重建所有订单,而是采用智能补单策略:

  1. 检查现有订单: 查询当前挂单数量
  2. 计算缺口: 只补充缺失的档位
  3. 分账户管理: 买单和卖单由不同账户负责
# 示例:只补充缺失的买单
if buy_count < LEVELS:
orders_needed = LEVELS - buy_count
logger.info(f"补充 {orders_needed} 个买单 (现有 {buy_count}/{LEVELS})")

价格更新阈值

只有当价格偏离超过 0.3% 时才更新订单:

PRICE_UPDATE_THRESHOLD = 0.003  # 0.3%

price_deviation = abs(current_price - last_price) / last_price
if price_deviation > PRICE_UPDATE_THRESHOLD:
# 更新订单簿
self.place_market_making_orders(pair, current_price)

3. 定期维护

维护任务频率说明
完全重建订单簿每10分钟清理所有订单,重新建立
资金状态检查每2分钟检查冻结率,必要时清理
价格跟踪每秒检查价格变动,按需更新

4. 资金管理

冻结率控制

# 获取账户状态
status = self.get_account_status(maker)
utilization = status['frozen'] / status['total']

# 冻结率过高时停止新订单
if utilization > 0.85:
logger.warning("资金冻结率过高,跳过新订单")
return

资金状态示例

📊 资金状态检查:
账户 1: 总额 $50000.00 | 可用 $35000.00 | 冻结 $15000.00 (30.0%)
账户 2: 总额 $50000.00 | 可用 $38000.00 | 冻结 $12000.00 (24.0%)

使用指南

1. 环境准备

# 安装依赖
pip install -r requirements.txt

# 配置账户(编辑 src/core/config.py)
ACCOUNTS = [
{'address': '0x...', 'key': '0x...'},
{'address': '0x...', 'key': '0x...'},
]

2. 启动机器人

# 使用启动脚本(推荐)
./start_pure_maker.sh

# 或直接运行
python3 pure_market_maker.py

3. 监控运行

# 查看实时日志
tail -f bot.log

# 访问Web监控面板
open http://localhost:5001

4. 停止机器人

# 优雅停止(Ctrl+C)
# 机器人会自动清理所有订单

配置调整

修改订单簿深度

编辑 pure_market_maker.py 第 157-161 行:

# ===== 做市配置 =====
LEVELS = 10 # 档位数量(10档买 + 10档卖)
BASE_SPREAD = 0.0005 # 基础价差 0.05%
SPREAD_INCREMENT = 0.0003 # 每档递增 0.03%
BASE_ORDER_SIZE_USD = 100 # 每档订单金额(USD)

调整建议

参数增加效果减少效果
LEVELS更深的订单簿更少的资金占用
BASE_SPREAD更大的利润空间更窄的买卖价差
SPREAD_INCREMENT价差梯度更大价差更均匀
BASE_ORDER_SIZE_USD更大的流动性更少的资金需求

修改运行参数

编辑第 309-312 行:

# ===== 运行参数 =====
PRICE_UPDATE_THRESHOLD = 0.003 # 价格更新阈值 (0.3%)
FULL_REBUILD_INTERVAL = 600 # 完全重建间隔 (10分钟)
PARTIAL_CHECK_INTERVAL = 120 # 检查间隔 (2分钟)

日志示例

启动日志

============================================================
🏦 纯粹做市机器人启动
============================================================
✅ 加载账户: 0x1234abcd...xyz123
✅ 加载账户: 0x5678efgh...abc456

💰 账户余额验证:
账户 1: {'USDT': {'total': 50000.0, 'frozen': 0.0}}
账户 2: {'USDT': {'total': 50000.0, 'frozen': 0.0}}

📊 交易对: BTCUSDT, ETHUSDT, SOLUSDT
============================================================

🚀 纯粹做市机器人开始运行

策略: 持久化订单簿 + 智能价格跟踪

运行日志

💡 BTCUSDT 初始化订单簿 @ $100,000.00
📈 BTCUSDT 补充 10 个买单 (现有 0/10)
✓ 买单档位 1: 99950.00
✓ 买单档位 2: 99920.00
...
📉 BTCUSDT 补充 10 个卖单 (现有 0/10)
✓ 卖单档位 1: 100050.00
✓ 卖单档位 2: 100080.00
...

📊 资金状态检查:
账户 1: 总额 $50000.00 | 冻结 $15000.00 (30.0%)
账户 2: 总额 $50000.00 | 冻结 $12000.00 (24.0%)

💡 BTCUSDT 价格变动 0.35% (100000.00 → 100350.00),更新订单簿

适用场景

✅ 推荐使用

  • 市场已有真实用户
  • 只需提供流动性
  • 长期稳定做市
  • 不需要人工交易量

❌ 不推荐使用

  • 市场完全没有用户
  • 需要生成交易量数据
  • 需要K线数据更新

与刷量机器人的对比

特性纯粹做市机器人刷量机器人
主要目的提供流动性生成交易量
Wash Trade❌ 无✅ 有
订单持久性✅ 长期挂单❌ 快速成交
资金占用中等(订单冻结)低(快速清理)
适用场景有真实用户的市场市场初期/测试
交易量生成❌ 依赖真实成交✅ 自动生成
订单簿深度✅ 20档深度⚠️ 最小深度

故障处理

常见问题

Q: 余额不足错误?

# 检查账户余额
python3 tools/check_balances.py

# 充值账户
python3 tools/deposit.py --address 0x... --amount 10000

Q: 资金冻结率过高?

# 查看挂单情况
python3 tools/check_orders.py

# 清理机器人订单
# 机器人会在下次检查时自动清理

Q: 订单未成交?

  • 检查价差是否合理
  • 查看是否有真实用户交易
  • 考虑调整 BASE_SPREAD

Q: 价格更新不及时?

  • 降低 PRICE_UPDATE_THRESHOLD
  • 检查 Hyperliquid 价格源连接

紧急操作

# 停止机器人(Ctrl+C)
# 机器人会自动清理所有订单

# 手动清理订单(如果需要)
python3 tools/clean_open_orders.py

监控指标

关键指标

指标说明正常范围
订单簿深度买卖盘档位数量10档买 + 10档卖
资金冻结率冻结资金/总资金< 60%
价格偏离做市价格与市场价格差异< 0.3%
订单成交率被真实用户成交的订单比例视市场活跃度

Web监控面板

访问 http://localhost:5001 查看:

  • 各账户资金状态(总额、可用、冻结)
  • 持仓明细
  • 挂单情况
  • 实时更新(每3秒)

性能优化

资金效率优化

  1. 智能补单: 只补充缺失的档位,不重建全部
  2. 分账户管理: 买单和卖单由不同账户负责
  3. 冻结率控制: 超过85%停止新订单

订单管理优化

  1. 价格阈值: 只在价格明显变化时更新
  2. 定期重建: 每10分钟完全重建,清理陈旧订单
  3. 订单保护: 只取消机器人订单,保护用户订单

价格跟踪优化

  1. Hyperliquid价格源: 实时、准确的市场价格
  2. 智能更新: 0.3%阈值避免频繁调整
  3. 多交易对支持: BTC/ETH/SOL同时做市

安全注意事项

⚠️ 重要提示

  1. 订单保护: 系统会追踪并只取消机器人自己的订单
  2. 资金管理: 定期检查冻结率,避免资金全部冻结
  3. API密钥安全: 妥善保管配置文件
  4. 监控告警: 设置资金异常告警
  5. 优雅退出: 使用Ctrl+C停止,自动清理订单

高级配置

自定义价差策略

# 线性递增(默认)
spread = BASE_SPREAD + (SPREAD_INCREMENT * level)

# 指数递增(更激进)
spread = BASE_SPREAD * (1.1 ** level)

# 固定价差(简单)
spread = BASE_SPREAD

动态订单金额

# 根据账户余额动态调整
available = status['available']
BASE_ORDER_SIZE_USD = min(100, available * 0.01) # 1%可用余额

多价格源支持

# 可以添加其他价格源作为备份
from src.clients.binance_client import BinanceClient

self.price_sources = [
HyperliquidClient(),
BinanceClient(),
]

相关文档