No description
  • Python 99.8%
  • Makefile 0.1%
Find a file
Michael d425e920e4 test(pnl): 添加幻觉equity注入防护和衰减起点锁定测试
- 新增 TestPnLTrackerNoPhantomEquity 测试类(5个用例)验证
  record_trade/update_unrealized 不注入幻觉值
- 修改 peak_time 测试验证更深回撤不重置衰减起点
- 新增 reset 后重新设置 peak_time 的测试

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 19:45:03 +08:00
adapters feat(adapters): 添加交易所适配器层 2026-02-04 10:48:00 +08:00
exchange fix(event-driven): 修复风控触发后 DangerDetector 幽灵订单问题 2026-02-05 17:57:41 +08:00
risk fix(pnl): 修复幻觉equity注入和回撤衰减失效 2026-02-09 19:44:51 +08:00
services/telegram_notifier refactor(notifier): 重构积分状态显示逻辑 2026-02-04 17:25:39 +08:00
strategys fix(strategy): 风控提前返回前更新PnL状态 2026-02-09 19:44:57 +08:00
tests test(pnl): 添加幻觉equity注入防护和衰减起点锁定测试 2026-02-09 19:45:03 +08:00
.gitignore chore: 更新 .gitignore 排除第三方工具 2026-02-04 10:49:47 +08:00
airdrop_report_2026_q1q2.md docs: 添加设计文档和分析报告 2026-02-04 10:49:25 +08:00
CLAUDE.md docs: 更新 CLAUDE.md 添加事件驱动架构说明 2026-02-04 17:24:18 +08:00
PLAN_FILL_HANDLING.md docs: 添加设计文档和分析报告 2026-02-04 10:49:25 +08:00
pyproject.toml chore: 初始化项目基础设施 2026-02-04 10:47:52 +08:00
README.md docs: 更新 README 反映系统实际架构 2026-02-04 17:42:44 +08:00
requirements.txt chore: 初始化项目基础设施 2026-02-04 10:47:52 +08:00
uv.lock chore: 初始化项目基础设施 2026-02-04 10:47:52 +08:00

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

GRVT

VAR

🔔 服务管理

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


免责声明: 本软件仅供学习和研究使用。使用本软件进行交易的所有风险由使用者自行承担。作者不对任何交易损失负责。