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

6.3 KiB
Raw Permalink Blame History

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 时,脚本会自动:

  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. 默认交易对列表

配置文件自动匹配

脚本支持智能配置文件匹配:

# 自动匹配 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"

运行步骤

  1. 进入工具目录

    cd /Users/zhangkun/myTestFreqAI/tools
    
  2. 赋予执行权限(首次使用)

    chmod +x backtest.sh
    
  3. 运行脚本

    ./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. 策略文件不存在

    # 检查可用策略
    ls ../freqtrade/templates/*.py
    
  2. 配置文件不存在

    # 检查可用配置
    ls ../config_examples/*.json
    
  3. Docker命令失败

    • 检查Docker服务状态
    • 确认Docker镜像已构建
  4. Python模块缺失

    # 安装所需模块
    pip install pandas
    

调试模式

添加 --dry-run 参数查看命令而不执行:

./backtest.sh --strategy freqaiprimer --dry-run

版本信息

  • 脚本版本1.0
  • 最后更新2024年
  • 支持系统macOS/Linux

相关文档