No description
- Python 99.8%
- Makefile 0.1%
- 新增 TestPnLTrackerNoPhantomEquity 测试类(5个用例)验证 record_trade/update_unrealized 不注入幻觉值 - 修改 peak_time 测试验证更深回撤不重置衰减起点 - 新增 reset 后重新设置 peak_time 的测试 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| adapters | ||
| exchange | ||
| risk | ||
| services/telegram_notifier | ||
| strategys | ||
| tests | ||
| .gitignore | ||
| airdrop_report_2026_q1q2.md | ||
| CLAUDE.md | ||
| PLAN_FILL_HANDLING.md | ||
| pyproject.toml | ||
| README.md | ||
| requirements.txt | ||
| uv.lock | ||
DD Strategy Bot
多平台永续合约做市策略系统,核心策略基于 Avellaneda-Stoikov 模型
📖 项目简介
DD Strategy Bot 是一个免费开源的永续合约做市策略系统。当前主要运行在 StandX 交易所,采用 Avellaneda-Stoikov 做市模型,结合事件驱动架构实现毫秒级风控响应。Python ≥ 3.10,包管理使用 uv。
👤 作者
Twitter: @ddazmon
📜 开源协议
本项目免费开源,欢迎使用和贡献。使用本项目时,请务必标明作者 Twitter: @ddazmon
🎯 功能特性
核心策略
- ✅ Avellaneda-Stoikov 做市模型(动态报价、库存管理)
- ✅ 双层网格系统(内层100%积分 + 外层50%积分)
- ✅ 价格触发刷新机制(非定时刷新,减少积分空窗)
- ✅ 智能 Fade 成交处理(只撤危险单,保留安全单继续计分)
风控系统
- ✅ 事件驱动快速撤单(~50ms 响应,WebSocket 回调直接触发)
- ✅ 4 层风控(kill switch → PnL drawdown → 持仓限制 → 订单合理性)
- ✅ 波动率自适应(ATR 百分位三级响应:CALM/ELEVATED/EXTREME)
- ✅ 成交防护 FillShield(双侧独立加宽 + 断路器)
- ✅ 自动平仓(每周期检查,持仓不为0立即市价平仓)
基础设施
- ✅ WebSocket 实时价格(自动降级到 REST)
- ✅ 统一适配器接口,支持多交易所扩展
- ✅ 策略状态持久化(重启自动恢复)
- ✅ Telegram 积分监控通知服务
🏗️ 架构概述
config.yaml
↓
main() → adapter.connect() → WebSocket 实时价格 (SyncPriceMonitor)
↓
run_strategy_cycle() ─── 每 sleep_interval 秒循环 ───
│
├─ 获取价格(优先 WS,回退 REST)
├─ 自动平仓检查
├─ 技术指标(ADX/ATR/Vol from Binance)
├─ 波动率分级判断
├─ AS 定价引擎 → reservation_price + optimal_spread
├─ 库存偏移 + 紧急减仓检查
├─ 主动撤单(距离 < danger_distance_bps)
├─ 成交检测 → FillShield → Fade → 对冲
├─ 网格生成 → 内层 + 外层
└─ 下单 + 状态持久化
关键模块
| 模块 | 说明 |
|---|---|
ASPricingEngine |
Avellaneda-Stoikov 定价引擎 |
InventoryManager |
库存偏移(sigmoid skew)+ 紧急减仓 |
RiskManager |
4 层风控检查 |
FillShieldManager |
成交防护 + 断路器 |
VolatilityRegimeManager |
波动率自适应 |
DangerDetector |
事件驱动危险订单检测 |
SyncPriceMonitor |
WebSocket 价格监控 |
🚀 快速开始
下载项目
方法 1: 使用 Git(推荐)
git clone https://github.com/Dazmon88/DD-strategy-bot.git
cd DD-strategy-bot
方法 2: 使用 wget(无需 Git)
# 下载项目压缩包
wget https://github.com/Dazmon88/DD-strategy-bot/archive/refs/heads/main.zip
# 解压
unzip main.zip
# 进入项目目录
cd DD-strategy-bot-main
方法 3: 使用 curl(无需 Git)
# 下载项目压缩包
curl -L -o DD-strategy-bot.zip https://github.com/Dazmon88/DD-strategy-bot/archive/refs/heads/main.zip
# 解压
unzip DD-strategy-bot.zip
# 进入项目目录
cd DD-strategy-bot-main
注意: 如果系统没有 unzip 命令,可以使用以下命令安装:
- Ubuntu/Debian:
sudo apt-get install unzip - CentOS/RHEL:
sudo yum install unzip - macOS:
brew install unzip(需要先安装 Homebrew)
📦 安装依赖
方法 1: 使用 uv(推荐)
uv 是一个极快的 Python 包管理器,推荐使用。
安装 uv
# Linux/macOS
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows (PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
# 或使用 pip
pip install uv
安装项目依赖
# 创建虚拟环境并安装依赖(一步到位)
uv sync
# 激活虚拟环境
source .venv/bin/activate # Linux/macOS
# .venv\Scripts\activate # Windows
# 安装带 TA-Lib 支持(需要先安装系统依赖,见下方说明)
uv sync --extra talib
uv 常用命令
# 添加新依赖
uv add <package-name>
# 添加开发依赖
uv add --dev <package-name>
# 更新所有依赖
uv lock --upgrade
# 运行脚本(无需手动激活环境)
uv run python strategys/strategy_standx/standx_mm.py
方法 2: 使用 pip(传统方式)
# 创建虚拟环境
python3 -m venv venv
source venv/bin/activate # Linux/macOS
# venv\Scripts\activate # Windows
# 安装依赖
pip install -r requirements.txt
TA-Lib 安装说明
注意:TA-Lib 需要先安装系统级依赖,然后才能通过 uv/pip 安装 Python 包。
Linux (Ubuntu/Debian):
sudo apt-get update
sudo apt-get install ta-lib
# 使用 uv
uv sync --extra talib
# 或使用 pip
pip install TA-Lib
macOS:
brew install ta-lib
# 使用 uv
uv sync --extra talib
# 或使用 pip
pip install TA-Lib
Windows:
# 方法1: 下载预编译的 wheel 文件
# 访问 https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib
# 下载对应 Python 版本的 .whl 文件,然后安装:
pip install TA_Lib-0.4.28-cp39-cp39-win_amd64.whl
# 方法2: 使用 conda
conda install -c conda-forge ta-lib
如果遇到安装问题,请参考 TA-Lib 官方文档。
🎮 运行策略
运行 StandX 做市策略
# 使用默认配置
uv run python strategys/strategy_standx/standx_mm.py
# 指定配置文件
uv run python strategys/strategy_standx/standx_mm.py -c /path/to/config.yaml
代码检查
# Lint 检查
uv run ruff check .
# 类型检查
uv run mypy .
# 运行测试
uv run pytest
uv run pytest -v --cov # 带覆盖率
⚙️ 核心配置
配置文件: strategys/strategy_standx/config.yaml
strategy:
grid_count: 2 # 每侧内层网格数
order_quantity: 0.003 # 内层订单量 BTC
target_bps: 9 # 订单最远距离(100%积分带内)
min_distance_bps: 5 # 订单最近距离
danger_distance_bps: 3 # 主动撤单阈值
grid_recalc_bps: 3 # 价格触发刷新阈值
time_in_force: alo # Post-Only
# 外层 50% 积分网格
outer_grid_count: 3
outer_min_bps: 12
outer_max_bps: 25
inventory:
max_position: 0.035 # 最大持仓
skew_factor: 0.5 # 库存偏移系数
risk:
max_drawdown: 0.20 # 最大回撤
drawdown_decay_enabled: true
drawdown_decay_hours: 6.0
# 事件驱动(毫秒级撤单)
event_driven:
enabled: true
fast_cancel_enabled: true
重要: config.yaml 包含 private_key,请勿提交到公开仓库。
🔗 交易所邀请链接
使用以下邀请链接注册,可获得返佣优惠:
StandX
- 返佣比例: 5%
- 邀请链接: https://standx.com/referral?code=Dazmon88
GRVT
- 返佣比例: 35%
- 邀请链接: https://grvt.io/?ref=Dazmon
VAR
- 返佣优惠: 点差全返
- 邀请链接: https://omni.variational.io/?ref=OMNINU3G7KVK
🔔 服务管理
Telegram 通知服务
独立运行的积分监控服务,每 30 分钟推送 StandX 积分状态到 Telegram。
Systemd 服务管理
服务以 systemd user service 方式运行:
# 查看状态
systemctl --user status standx-notifier
# 重启服务
systemctl --user restart standx-notifier
# 查看日志
journalctl --user -u standx-notifier -f
📚 关键依赖
web3,eth-account: EIP-191 钱包签名认证websockets: WebSocket 实时价格pandas,TA-Lib: 技术指标计算aiohttp: 异步 HTTP(事件驱动撤单)
⚠️ 风险提示
- 本策略仅供学习和研究使用
- 加密货币交易存在高风险,可能导致资金损失
- 使用前请充分了解策略逻辑和风险
- 建议在测试环境充分测试后再使用真实资金
- 作者不对使用本策略造成的任何损失负责
📝 许可证
本项目采用开源许可证,免费使用。使用本项目时,请标明作者 Twitter: @ddazmon
📧 联系方式
如有问题或建议,请通过 Twitter 联系:@ddazmon
免责声明: 本软件仅供学习和研究使用。使用本软件进行交易的所有风险由使用者自行承担。作者不对任何交易损失负责。