做市机器人简介
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. 订单管理策略
智能补单机制
系统不会每次都重建所有订单,而是采用智能补单策略:
- 检查现有订单: 查询当前挂单数量
- 计算缺口: 只补充缺失的档位
- 分账户管理: 买单和卖单由不同账户负责
# 示例:只补充缺失的买单
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),更新订单簿
适用场景
✅ 推荐使用
- 市场已有真实用户
- 只需提供流动性
- 长期稳定做市
- 不需要人工交易量