myTestFreqAI/doc/hyperopt.md
2025-10-14 00:32:28 +08:00

7.5 KiB
Raw Permalink Blame History

Hyperopt 脚本使用指南

概述

本项目包含两个超参数优化脚本:hyperopt.shhyperopt_org.sh,用于自动化超参数优化,支持多种参数配置方式,能够自动匹配策略和配置文件。

脚本位置

/Users/zhangkun/myTestFreqAI/tools/hyperopt.sh
/Users/zhangkun/myTestFreqAI/tools/hyperopt_org.sh

脚本区别

脚本 功能特点 适用场景
hyperopt.sh 支持从远程API获取交易对更智能的交易对处理 需要动态交易对优化的场景
hyperopt_org.sh 使用固定交易对列表,更稳定的优化过程 固定交易对组合的优化

环境配置

.env 文件

脚本依赖 .env 文件设置默认参数,位于 tools/.env

STRATEGY_NAME=TheForceV7
CONFIG_FILE=basic.json
TEST_BRANCH=theforce-noai-test
DRYRUN_BRANCH=theforce-noai-dryrun

可用策略和配置

策略文件 (.py)

  • 位置:freqtrade/templates/
  • 当前可用:freqaiprimer.py, TheForceV7.py

配置文件 (.json)

  • 位置:config_examples/
  • 可用配置:
    • basic.json - 基础配置
    • config.json - 标准配置
    • freqaiprimer.json - FreqAI策略配置
    • live.json - 实盘配置
    • theforcev7.json - TheForceV7策略配置

使用方法

1. 使用默认配置(最简单)

cd tools/
./hyperopt.sh
# 或
./hyperopt_org.sh

默认行为:

  • 策略:TheForceV7
  • 配置:basic.json
  • 时间范围最近2天到明天
  • 交易对默认USDT交易对列表

2. 省略 --config 参数(推荐)

./hyperopt.sh --strategy freqaiprimer
# 或
./hyperopt_org.sh --strategy freqaiprimer

脚本会自动匹配同名配置文件 freqaiprimer.json,如果不存在则使用 basic.json

3. 完整参数配置

./hyperopt.sh --strategy freqaiprimer --config freqaiprimer.json --start-date "2024-01-01" --end-date "2024-12-31" --pairs "BTC/USDT ETH/USDT"

4. 位置参数方式

./hyperopt.sh "2024-01-01" "2024-12-31" freqaiprimer
# 或
./hyperopt_org.sh "2024-01-01" "2024-12-31" freqaiprimer

参数详解

命名参数

参数 简化参数 说明 示例
--strategy -t 策略名称(可省略.py后缀 --strategy freqaiprimer-t freqaiprimer
--config - 配置文件名称(可选) --config freqaiprimer.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

时间格式支持

  • 标准格式"2024-01-01 00:00:00"
  • 简写格式20240101(自动转换为 2024-01-01 00:00:00

交易对优先级

hyperopt.sh 的交易对获取优先级:

  1. --pairRemoteList - 远程API获取交易对
  2. --pairs - 手动指定交易对
  3. 远程主API带日期参数
  4. 默认交易对列表

hyperopt_org.sh 的交易对获取优先级:

  1. --pairRemoteList - 远程API获取交易对
  2. --pairs - 手动指定交易对
  3. 默认交易对列表

配置文件自动匹配

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

# 自动匹配 freqaiprimer.json
./hyperopt.sh --strategy freqaiprimer

# 如果 freqaiprimer.json 不存在,自动回退到 basic.json
./hyperopt.sh --strategy nonexistent_strategy

超参数优化配置

优化参数

  • 迭代次数-e 500默认500次迭代
  • 并行进程-j 4默认4个进程
  • 优化空间--spaces buy sell(买卖参数优化)
  • 损失函数--hyperopt-loss SharpeHyperOptLossDaily(夏普比率优化)

优化目标

脚本默认优化以下目标:

  • 最大化夏普比率
  • 优化买卖参数
  • 考虑交易费用0.0016

运行示例

示例1测试FreqAI策略优化使用简化参数

# 使用 -t 简化参数
./hyperopt.sh -t freqaiprimer

# 或者使用完整参数
./hyperopt.sh --strategy freqaiprimer

示例2指定时间范围优化

# 使用 -t 简化参数
./hyperopt.sh -t freqaiprimer --start-date "2024-06-01" --end-date "2024-06-30"

# 或者使用完整参数
./hyperopt.sh --strategy freqaiprimer --start-date "2024-06-01" --end-date "2024-06-30"

示例3指定交易对优化

# 使用 -t 简化参数
./hyperopt.sh -t freqaiprimer --pairs "BTC/USDT ETH/USDT SOL/USDT"

# 或者使用完整参数
./hyperopt.sh --strategy freqaiprimer --pairs "BTC/USDT ETH/USDT SOL/USDT"

示例4从远程API获取交易对优化

# 使用 -t 简化参数
./hyperopt.sh -t freqaiprimer --pairRemoteList "http://api.example.com/pairlist"

# 或者使用完整参数
./hyperopt.sh --strategy freqaiprimer --pairRemoteList "http://api.example.com/pairlist"

运行步骤

  1. 进入工具目录

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

    chmod +x hyperopt.sh hyperopt_org.sh
    
  3. 运行脚本

    ./hyperopt.sh [参数]
    # 或
    ./hyperopt_org.sh [参数]
    
  4. 查看结果

    • 实时日志:控制台输出
    • 优化结果:user_data/hyperopt_results/ 目录
    • 模型文件:user_data/models/ 目录

输出文件

  • 优化结果user_data/hyperopt_results/
    • JSON格式的优化结果
    • 最佳参数组合
  • 模型文件user_data/models/
    • 训练好的机器学习模型
  • 日志文件freqtrade/user_data/logs/freqtrade.log

注意事项

  1. Docker环境脚本使用Docker运行超参数优化确保Docker服务已启动
  2. 配置文件加载:脚本会自动加载 config_examples/freqtrade/templates/ 目录的配置文件
  3. 时间格式:支持多种时间格式,建议使用标准格式避免歧义
  4. 交易对格式:使用 / 分隔符,如 BTC/USDT
  5. 错误处理:如果配置文件不存在,脚本会自动回退到默认配置
  6. 优化时间:超参数优化可能需要较长时间,建议在服务器上运行

故障排除

常见问题

  1. 策略文件不存在

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

    # 检查可用配置
    ls ../config_examples/*.json
    
  3. Docker服务未启动

    # 启动Docker服务
    sudo systemctl start docker
    # 或
    open -a Docker
    
  4. 权限问题

    # 赋予执行权限
    chmod +x hyperopt.sh hyperopt_org.sh
    

性能优化建议

  1. 减少迭代次数:对于快速测试,使用 -e 100
  2. 减少并行进程:对于资源受限环境,使用 -j 2
  3. 缩小优化空间:只优化关键参数,如 --spaces sell
  4. 使用更小的数据集:缩短时间范围

高级用法

自定义优化参数

# 自定义迭代次数和并行进程
./hyperopt.sh -t freqaiprimer -e 1000 -j 8

# 自定义优化空间
./hyperopt.sh -t freqaiprimer --spaces buy sell roi stoploss trailing

# 自定义损失函数
./hyperopt.sh -t freqaiprimer --hyperopt-loss OnlyProfitHyperOptLoss

批量优化

# 批量优化多个策略
for strategy in freqaiprimer TheForceV7; do
    ./hyperopt.sh -t $strategy
    echo "完成策略 $strategy 的优化"
done

通过本指南您可以充分利用hyperopt脚本进行高效的超参数优化提升交易策略的性能。