# 数字货币策略回测系统 **Repository Path**: lijinjun-jacking/crypto_backtest ## Basic Information - **Project Name**: 数字货币策略回测系统 - **Description**: 基于 Streamlit 的量化交易策略回测框架,支持多策略并行回测、绩效评估、可视化分析。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-18 - **Last Updated**: 2026-05-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 数字货币策略回测系统 基于 Streamlit 的量化交易策略回测框架,支持多策略并行回测、绩效评估、可视化分析。 ## 系统架构 ``` crypto_backtest/ ├── app.py # Streamlit 主界面(UI + 参数配置 + 结果展示) ├── requirements.txt # Python 依赖 ├── engine/ # 回测引擎 │ ├── backtest.py # BacktestEngine — 逐K线回测核心 │ └── analyzer.py # 绩效指标计算(夏普、索提诺、回撤等) ├── strategies/ # 策略模块(自动发现注册) │ ├── base.py # Strategy 基类 + Signal/Trade 定义 │ ├── registry.py # 策略自动发现(pkgutil 扫描) │ ├── ma_cross.py # 双均线交叉 — 金叉死叉趋势跟随 │ ├── chris_flanders.py # Chris Flanders — ATR+EMA+量价确认 │ ├── compound_signal.py # 综合信号 — 三场景融合 │ ├── semi_god_macd.py # 半神MACD — MACD连续背离反转 │ └── docs/ # 策略文档 ├── data/ # 数据层 │ ├── csv_loader.py # CSV 数据加载与日期过滤 │ ├── download_binance_data.py # Binance 公开数据下载 │ ├── simulator.py # 模拟 OHLCV 数据生成器 │ └── BTCUSDT_1d_2023-2026.csv # BTC 日线历史数据 └── utils/ # 工具模块 ``` ## 快速开始 ### 环境要求 - Python ≥ 3.9 - 依赖见 `requirements.txt` ### 安装与运行 ```bash # 1. 安装依赖 pip install -r requirements.txt # 2. 启动系统 streamlit run app.py ``` ### 数据准备 系统内置 BTCUSDT 日线数据(2023.01 ~ 2026.04),开箱即用。 如需更新或下载其他交易对数据: ```bash python data/download_binance_data.py ``` 支持任意 Binance 现货交易对(修改脚本中的 `symbol` 参数即可)。 如需模拟数据进行快速验证: ```python from data.simulator import generate_simulated_data df = generate_simulated_data(days=365, trend="mixed", volatility=0.02) ``` ## 内置策略 ### 1. 双均线交叉 **类型:** 趋势跟随 快线(默认 10 周期)上穿慢线(默认 30 周期)时买入(金叉),下穿时卖出(死叉)。最基础的均线策略,强趋势行情中表现好,震荡行情中易反复开仓。 ### 2. Chris Flanders **类型:** 趋势跟随 + 波动率定位 ATR 定位波动率区间 + EMA 判断趋势方向 + 成交量放大确认入场。支持金叉入场和趋势延续加仓两种做多模式,以及对应的做空逻辑。 ### 3. 综合信号 **类型:** 多场景融合 三个独立场景各自触发,任一满足即入场: | 场景 | 信号 | 条件 | |------|------|------| | S1 急速下跌反转 | 买入 | 天量 + 长下影线 + 近期低点附近 | | S2 均线带突破 | 买入/卖出 | K线从均线带内部运行后放量突破/跌破 | | S3 RSI量价背离 | 买入/卖出 | 价格与RSI顶底背离 + 缩量确认 | ### 4. 半神MACD **类型:** 动能衰竭反转 通过 MACD 柱状图的连续波峰/波谷背离捕捉趋势动能衰竭点,实心柱转虚柱确认入场。支持三背离(中长线,高胜率)、双背离(短线,高频率)、自适应三种模式。ATR 宽止损 + 1:2 固定盈亏比止盈。 ## 回测引擎 ### 核心参数 | 参数 | 默认值 | 说明 | |------|--------|------| | 初始资金 | 1,000,000 USDT | 模拟起始本金 | | 手续费率 | 0.1% | 每笔交易佣金 | | 滑点 | 0.05% | 成交价格偏移 | | 止损/止盈 | 策略自定 | ATR 止损 + 固定盈亏比 | ### 绩效指标 | 指标 | 说明 | |------|------| | 总收益 / 年化收益 | 累计和年化收益率 | | 基准收益 / 超额收益 | 对比买入持有的 Alpha | | 夏普比率 | 风险调整后收益(无风险利率 2%) | | 索提诺比率 | 仅考虑下行波动的风险调整 | | 最大回撤 | 净值从峰顶到谷底的最大跌幅 | | 策略波动率 | 年化日收益率标准差 | | 胜率 / 盈亏比 | 盈利交易占比与平均盈亏比 | | 贝塔 / 阿尔法 | 市场系统性风险暴露与超额收益 | ## 界面功能 - **暗色主题** — 深色 UI + Plotly 交互图表 - **净值走势图** — 策略净值 vs 买入持有,含买卖点标记 - **每日盈亏柱状图** — 日收益率分布 - **交易记录表** — 搜索过滤 + CSV 导出 - **策略参数面板** — 侧边栏实时调节参数 ## 自定义策略 继承 `Strategy` 基类实现 `init()` 和 `next()` 两个方法即可: ```python from strategies.base import Strategy, Signal class MyStrategy(Strategy): name = "我的策略" description = "自定义策略描述" def __init__(self, param1: int = 10): self.param1 = param1 def init(self, data): # 回测开始前调用,计算指标 data["ma"] = data["close"].rolling(self.param1).mean() def next(self, i, data): # 每根K线调用一次,返回 Signal 或 None if data["close"][i] > data["ma"][i]: return Signal("buy", data["close"][i], 1.0, "入场理由") return None ``` 将文件放入 `strategies/` 目录,系统会自动发现并注册到 UI 中。如需添加 UI 参数控件,在 `app.py` 中对应位置添加 `st.slider` / `st.selectbox` 即可。 ## 数据来源 历史 K 线数据来源于 [Binance 公开数据仓库](https://data.binance.vision/),涵盖 BTCUSDT 日线级别数据。下载脚本支持任意交易对和任意时间范围的批量下载与自动合并。 --- **License:** MIT