面向 Freqtrade 的多实例量化交易控制台
用一个 Web 界面管理多个交易机器人:配置 DCA 或网格策略、运行回测、监控持仓、追踪交易事件,并执行统一风控。
Freqtrade 负责执行交易策略,NexusBot 负责把多个 Freqtrade 实例组织起来,让策略从“写好并运行”变成一个更容易使用的完整工作流:
配置策略 → 准备数据 → 回测验证 → 启动机器人 → 实时监控 → 复盘与调整
它适合希望使用 Web 界面管理量化交易的个人用户和小型团队,尤其适合同时运行多策略、多交易对或多空方向的场景。
- 不再为每个机器人手动维护配置文件、端口和启动命令;
- 不再在多个终端和日志文件之间切换查看持仓;
- 不再只看最终收益,可以在 K 线上复盘每次加仓、减仓和退出;
- 不再让回测参数与运行参数分离,保存的配置可以直接用于回测和启动;
- 不再只依赖单笔交易止损,可以按机器人整体收益执行止盈、止损和追踪止损。
NexusBot 是交易管理工具,不承诺收益,也不构成投资建议。接入真实账户前,请先使用
dry_run,并自行验证策略、手续费、滑点和交易所配置。
每个 bot 都是独立的运行单元,可以单独配置、启动、停止、重启和查看状态。一个 bot 可以按需启用 Long、Short,两个方向使用独立的 Freqtrade 进程:
Bot #N
├── Long → 独立端口 → 独立配置 → 独立数据库与日志
└── Short → 独立端口 → 独立配置 → 独立数据库与日志
- 实例之间互不覆盖,适合运行多个策略和参数组合;
- 配置、日志、交易记录按 bot 隔离;
- 启动后自动检查 Freqtrade RPC 是否可用;
- 支持后台启动、状态查询、方向重启和健康监控;
- 可按交易所账户、交易对、资金和杠杆创建不同 bot。
策略参数通过 Web 表单统一管理,并保存为可复用的 bot 配置:
| 配置范围 | 可配置内容 |
|---|---|
| 交易基础 | 交易对、资金、单笔金额、杠杆、最大持仓 |
| DCA 机器人 | 入场指标、分层补仓、金额/百分比模式、冷却时间 |
| 网格机器人 | 价格上下限、网格数量、等差/等比间距、启动模式 |
| 退出规则 | ROI 阶梯、止损、DCA止盈、时间止损 |
| 行情保护 | 高周期趋势过滤、Pump 保护、单交易对仓位上限 |
| 实例风控 | bot 级止盈、止损、追踪止损和触发后自动停止 |
配置流程:
Web 表单 → 保存参数 → 生成 bot/方向配置 → 回测 → 启动实例
DCA 机器人适合希望按价格回撤分层补仓、等待反弹退出的交易场景:
- 分层补仓:按价格偏移触发下一层补仓,支持自动或手动层级;
- 仓位控制:支持固定金额或账户百分比,配置基础金额、倍率、最大次数和冷却时间;
- 入场过滤:可使用 RSI、KDJ、MACD、EMA 和布林带组合条件;
- 多级止盈:支持 ROI 阶梯、浮亏反弹止盈和时间止损;
- 高周期保护:支持 4h、12h、1d 趋势过滤,减少逆势开仓和补仓。
网格机器人面向单个交易对,在设定的绝对价格区间内自动低买高卖,适合有明确震荡区间判断的场景。与 DCA 机器人不同,网格机器人不依赖 DCA 分层或趋势加仓,而是围绕预先生成的网格线管理多个网格仓位。
- 价格区间:设置网格下限价和上限价,系统在区间内生成网格线;
- 网格间距:支持等差和等比两种间距算法,网格数量可配置;
- 网格交易:多头价格下跌触发加仓、上涨到相邻网格止盈;空头逻辑相反;
- 启动方式:支持网格触发、触发价启动和立即启动;
- 仓位限制:支持最大同时持有网格数,并按资金和网格数量计算每格规模;
- 区间止损:可配置价格跌破下沿时清空多头仓位,作为网格区间失效保护;
- 网格预览:配置页面展示网格线、格距、单格预期利润和预计投入,便于启动前检查;
- 单交易对运行:一个网格 bot 聚焦一个交易对,减少多交易对共用价格区间造成的配置歧义。
网格机器人的典型流程:
设置价格区间 → 选择间距与启动模式 → 预览网格 → 回测 → 启动机器人
回测和历史数据下载由 NexusBot 统一管理:
- 检查本地 K 线是否覆盖交易对、周期和时间范围;
- 缺少数据时触发下载,并显示任务进度;
- 后台执行 Freqtrade,不阻塞 Web 请求;
- 支持查询、取消和查看任务日志;
- 对配置错误、数据缺失、进程异常和无回测报告明确提示;
- 使用与机器人相同的配置,减少回测与实际运行之间的偏差。
- 汇总多个 bot 的账户、持仓、已平仓收益和浮动收益;
- 查看资金曲线、收益曲线、保证金和风险暴露;
- 按 bot、方向和交易对筛选持仓;
- 支持手动开仓、平仓以及机器人启停;
- 将交易事件保存并映射到 K 线,方便定位每次策略动作。
风控以 bot 为单位计算“轮次收益”,同时考虑已实现收益和浮动收益:
- 按金额或收益率触发止盈、止损;
- 支持盈利回撤和亏损方向的追踪止损;
- 触发后执行全量平仓,并等待持仓确认清空;
- 可按配置自动停止 bot;
- 避免同一个风控条件重复触发。
┌────────────────────┐
│ Vue Web 控制台 │ 配置 / 仪表盘 / K线 / 回测
└─────────┬──────────┘
│ REST API
┌─────────▼──────────┐
│ FastAPI 管理服务 │ bot / 配置 / 回测 / 风控 / 监控
└────┬──────────┬────┘
│ │
┌────▼─────┐ ┌──▼──────────────────┐
│ 本地数据 │ │ Freqtrade 实例池 │
│ 用户/事件 │ │ 每个 bot × 方向独立 │
└──────────┘ └────────────────────┘
NexusBot 使用 Vue 3、FastAPI、SQLite、SQLAlchemy、APScheduler 和 Freqtrade 构建。它不替换 Freqtrade 的交易执行能力,而是提供配置、编排、观测和风控层。
请按照以下步骤在本地运行 NexusBot。
请确保您的系统已安装以下软件:
- Python 3.10+(安装时请勾选 "Add Python to PATH")
- Node.js 18+ 与 pnpm(前端包管理器)
- Git
# 克隆仓库到本地
git clone https://github.com/typhonun/NexusBot
cd NexusBot
# 创建 Python 虚拟环境
python -m venv venv
# 激活虚拟环境 (Windows)
venv\Scripts\activate
# 安装 Freqtrade 相关依赖
cd freqtrade
pip install -r requirements.txt
# 将 Freqtrade 作为包安装到当前虚拟环境
pip install -e .
cd ..
# 安装 NexusBot 后端依赖
cd backend
pip install -r requirements.txtcd frontend
pnpm install# 如果虚拟环境未激活,请先运行 venv\Scripts\activate
venv\Scripts\activate
cd backend
uvicorn app.main:app --reload --port 9000cd frontend
pnpm dev打开浏览器访问 http://localhost:5173,即可进入 NexusBot 控制台。创建 bot 后配置交易对、方向、资金和策略参数。
NexusBot/
├── backend/
│ ├── app/api/ # bot、回测、图表、持仓、风控、日志接口
│ ├── app/services/ # 实例、进程、配置、回测、RPC、风控服务
│ ├── app/models/ # 用户、交易事件、收益和资金快照
│ └── config/settings.py # 项目路径与运行配置
├── frontend/src/
│ ├── features/ # dashboard、策略配置等功能模块
│ ├── views/ # 仪表盘、持仓、图表、bot 和设置页面
│ ├── api/ # 后端接口封装
│ └── stores/ # Pinia 状态管理
└── freqtrade/user_data/
├── strategies/ # DCA/网格策略基类、方向策略和事件记录器
│ ├── DcaTpBotBase.py # DCA 机器人基础策略
│ └── GridBotBase.py # 网格机器人基础策略
├── bots/{bot_id}/ # 实例配置、日志和交易数据库
└── config_template.json # Freqtrade 配置模板
NexusBot 仅用于软件工程实践、量化研究和学习交流,不保证任何收益,也不构成投资建议。加密货币交易具有高风险,使用者应自行承担 API Key、资金、策略和交易风险。
如果 NexusBot 对你有帮助,欢迎点一个 Star。