一个简单快速的交易回测框架,用于测试和验证交易策略的性能。
BackTestTools 是一个轻量级的交易回测框架,专注于提供简洁、高效的回测环境,帮助交易者测试各种交易策略的表现。框架支持K线数据获取、策略执行、资产计算和手续费统计等功能。
- K线数据管理:支持获取和缓存K线数据
- 回测上下文:管理资产余额、订单记录和手续费计算
- 策略实现:内置移动平均线趋势策略示例
- 精度计算:使用 Decimal 类型确保计算精度
- 灵活配置:支持自定义交易对、K线级别、手续费率等参数
BackTestTools/
├── strategies/ # 策略目录
│ ├── __init__.py
│ └── moving_average_trend.py # 移动平均线趋势策略
├── test/ # 测试目录
│ └── test_kline.py # K线测试文件
├── context.py # 回测上下文
├── enumeration.py # 枚举定义
├── executor.py # 主执行文件
├── kline.py # K线数据结构
├── kline_cache.py # K线缓存
├── kline_cli.py # K线命令行工具
├── order.py # 订单结构
├── Pipfile # 依赖管理
├── Pipfile.lock # 依赖锁定
├── LICENSE # 许可证
└── README.md # 项目说明
- Python 3.7+
- pipenv
- 克隆项目到本地
- 进入项目目录
- 安装依赖
pipenv lock
pipenv install运行默认的移动平均线趋势策略回测:
pipenv run python executor.py- 在
strategies目录下创建新的策略文件 - 继承
IStrategy基类并实现run方法 - 在
executor.py中导入并使用自定义策略
在 executor.py 中可以修改以下参数:
kline_provider:K线数据源kline_symbol:交易对kline_interval:K线级别start_ts:回测开始时间strategy:使用的策略及参数
MovingAverageTrendStrategy 是一个基于移动平均线的趋势跟随策略,主要参数包括:
kline_wnd_size:K线滑动窗口大小avg_line_wnd_size:均线滑动窗口大小buy_volatility_rate:买入波动率阈值sell_volatility_rate:卖出波动率阈值drawdown_rate:止损率
策略逻辑:
- 计算K线收盘价的移动平均值
- 基于移动平均线的变化趋势判断买入/卖出信号
- 当价格下跌超过止损率时执行止损操作
回测完成后,系统会输出以下信息:
- 首根K线收盘价
- 末根K线收盘价
- 最终资产价值(base资产 * 末根K线收盘价 + quote资产)
- 总手续费消耗(base手续费 * 末根K线收盘价 + quote手续费)
- 在
strategies目录创建新的策略文件 - 实现
IStrategy接口 - 在
executor.py中配置使用新策略
- 修改
kline_cli.py中的get_next_klines函数 - 实现自定义的K线数据获取逻辑
项目使用 pipenv 管理依赖,主要依赖包括:
python-dotenv:环境变量管理_decimal:高精度数值计算
本项目采用 MIT 许可证,详见 LICENSE 文件。
欢迎提交 Issue 和 Pull Request 来改进这个项目。
如果有任何问题或建议,请随时联系项目维护者。