myTestFreqAI/doc/backtest.md
2025-10-14 01:13:42 +08:00

258 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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