6.3 KiB
6.3 KiB
Backtest.sh 使用指南
概述
backtest.sh 是一个用于自动化回测的脚本工具,支持多种参数配置方式,能够自动匹配策略和配置文件。
脚本位置
/Users/zhangkun/myTestFreqAI/tools/backtest.sh
环境配置
.env 文件
脚本依赖 .env 文件设置默认参数,位于 tools/.env:
STRATEGY_NAME=freqaiprimer
CONFIG_FILE=freqaiprimer.json
TEST_BRANCH=theforce-noai-test
DRYRUN_BRANCH=theforce-noai-dryrun
可用策略和配置
策略文件 (.py)
- 位置:
freqtrade/templates/ - 当前可用:
freqaiprimer.py
配置文件 (.json)
- 位置:
config_examples/ - 可用配置:
basic.json- 基础配置config.json- 标准配置freqaiprimer.json- FreqAI策略配置live.json- 实盘配置theforcev7.json- TheForceV7策略配置
使用方法
1. 使用默认配置(最简单)
cd tools/
./backtest.sh
默认行为:
- 策略:
freqaiprimer - 配置:
freqaiprimer.json - 时间范围:最近2天到明天
- 交易对:默认USDT交易对列表
2. 省略 --config 参数(推荐)
./backtest.sh --strategy MyStrategy
脚本会自动将策略类名转换为小写文件名,并匹配对应的配置文件:
- 策略类名:
MyStrategy(保持不变) - Python文件名:
mystrategy.py(自动转换为小写) - JSON配置文件名:
mystrategy.json(自动转换为小写)
如果配置文件不存在,则使用 basic.json。
3. 完整参数配置
./backtest.sh --strategy freqaiprimer --config freqaiprimer.json --start-date "2024-01-01" --end-date "2024-12-31" --pairs "BTC/USDT ETH/USDT"
4. 位置参数方式
./backtest.sh "2024-01-01" "2024-12-31" freqaiprimer freqaiprimer.json
参数详解
命名参数
| 参数 | 简化参数 | 说明 | 示例 |
|---|---|---|---|
--strategy |
-t |
策略类名(首字母大写),脚本会自动转换为小写文件名 | --strategy MyStrategy 或 -t MyStrategy |
--config |
- | 配置文件名称(可选) | --config mystrategy.json |
--start-date |
- | 开始时间 | --start-date "2024-01-01" |
--end-date |
- | 结束时间 | --end-date "2024-12-31" |
--pairs |
- | 交易对列表 | --pairs "BTC/USDT ETH/USDT" |
--pairRemoteList |
- | 远程交易对API | --pairRemoteList http://api.example.com/pairs |
策略命名约定
脚本遵循Freqtrade标准命名约定:
- 策略类名:首字母大写(如
MyStrategy) - Python文件名:小写(如
mystrategy.py) - JSON配置文件名:小写(如
mystrategy.json)
当使用 --strategy MyStrategy 时,脚本会自动:
- 保持类名
MyStrategy不变 - 生成小写Python文件名
mystrategy.py - 生成小写JSON配置文件名
mystrategy.json
时间格式支持
- 标准格式:
"2024-01-01 00:00:00" - 简写格式:
20240101(自动转换为2024-01-01 00:00:00)
交易对优先级
--pairRemoteList- 远程API获取交易对--pairs- 手动指定交易对- 默认交易对列表
配置文件自动匹配
脚本支持智能配置文件匹配:
# 自动匹配 freqaiprimer.json
./backtest.sh --strategy freqaiprimer
# 如果 freqaiprimer.json 不存在,自动回退到 basic.json
./backtest.sh --strategy nonexistent_strategy
运行示例
示例1:测试自定义策略(使用简化参数)
# 使用 -t 简化参数
./backtest.sh -t MyStrategy
# 或者使用完整参数
./backtest.sh --strategy MyStrategy
脚本会自动:
- 策略类名:
MyStrategy - Python文件名:
mystrategy.py - JSON配置文件名:
mystrategy.json
示例2:指定时间范围
# 使用 -t 简化参数
./backtest.sh -t freqaiprimer --start-date "2024-06-01" --end-date "2024-06-30"
# 或者使用完整参数
./backtest.sh --strategy freqaiprimer --start-date "2024-06-01" --end-date "2024-06-30"
示例3:指定交易对
# 使用 -t 简化参数
./backtest.sh -t freqaiprimer --pairs "BTC/USDT ETH/USDT SOL/USDT"
# 或者使用完整参数
./backtest.sh --strategy freqaiprimer --pairs "BTC/USDT ETH/USDT SOL/USDT"
示例4:从远程API获取交易对
# 使用 -t 简化参数
./backtest.sh -t freqaiprimer --pairRemoteList "http://api.example.com/pairlist"
# 或者使用完整参数
./backtest.sh --strategy freqaiprimer --pairRemoteList "http://api.example.com/pairlist"
运行步骤
-
进入工具目录
cd /Users/zhangkun/myTestFreqAI/tools -
赋予执行权限(首次使用)
chmod +x backtest.sh -
运行脚本
./backtest.sh [参数] -
查看结果
- 实时日志:
output.log - 回测结果:
result/目录 - 分析报告:
result/analytic.log
- 实时日志:
输出文件
output.log- 完整的回测日志result/- 回测结果文件- JSON格式的回测结果
- 交易数据CSV文件
result/analytic.log- 分析报告
注意事项
- Docker环境:脚本使用Docker运行回测,确保Docker服务已启动
- 配置文件加载:脚本会自动加载
config_examples/和freqtrade/templates/目录的配置文件 - 时间格式:支持多种时间格式,建议使用标准格式避免歧义
- 交易对格式:使用
/分隔符,如BTC/USDT - 错误处理:如果配置文件不存在,脚本会自动回退到默认配置
故障排除
常见问题
-
策略文件不存在
# 检查可用策略 ls ../freqtrade/templates/*.py -
配置文件不存在
# 检查可用配置 ls ../config_examples/*.json -
Docker命令失败
- 检查Docker服务状态
- 确认Docker镜像已构建
-
Python模块缺失
# 安装所需模块 pip install pandas
调试模式
添加 --dry-run 参数查看命令而不执行:
./backtest.sh --strategy freqaiprimer --dry-run
版本信息
- 脚本版本:1.0
- 最后更新:2024年
- 支持系统:macOS/Linux