myTestFreqAI/tools/doc/hyperopt_org.md
2025-11-01 20:54:13 +08:00

4.4 KiB
Raw Blame History

这个脚本是一个用于运行 Freqtrade 的 Hyperopt 优化的 Bash 脚本。它支持多种参数,允许用户灵活地配置回测的时间范围、交易对、策略、配置文件等。以下是脚本中支持的主要参数及其调用方法的详细介绍:


1. 参数分类

(1) 命名参数(推荐使用)

命名参数以 -- 开头,便于明确指定每个参数的含义。以下是支持的命名参数:

  • --start-date=YYYYMMDD
    指定回测的起始日期。格式可以是 YYYYMMDDYYYY-MM-DD HH:MM:SS

    • 示例:--start-date=20230901--start-date="2023-09-01 00:00:00"
  • --end-date=YYYYMMDD
    指定回测的结束日期。格式同上。

    • 示例:--end-date=20231001--end-date="2023-10-01 23:59:59"
  • --pairs=PAIRS
    指定回测的交易对列表,多个交易对之间用空格分隔。

    • 示例:--pairs="BTC/USDT ETH/USDT"
  • --pairRemoteList=URL
    指定一个远程 API URL从该 URL 获取交易对列表。优先级高于 --pairs

    • 示例:--pairRemoteList="https://example.com/api/pairs"
  • --strategy=NAME-t NAME
    指定使用的策略名称(类名)。如果未提供,默认使用 .env 文件中的值。

    • 示例:--strategy=MyStrategy-t MyStrategy
  • --config=FILE
    指定使用的配置文件路径。如果未提供,默认使用 .env 文件中的值。

    • 示例:--config=myconfig.json
  • --epochs=N
    指定 Hyperopt 的迭代次数。如果未提供,默认生成一个 100 以内的随机奇数值。

    • 示例:--epochs=500
  • --space=buy|sell
    指定优化的空间(buysell)。如果未提供,默认为 sell

    • 示例:--space=buy

(2) 位置参数(兼容模式)

位置参数按照固定的顺序传递,适合简单的调用场景。以下是位置参数的顺序:

  1. 开始日期
    格式为 YYYYMMDDYYYY-MM-DD HH:MM:SS

    • 示例:20230901
  2. 结束日期
    格式同上。

    • 示例:20231001
  3. 策略名称
    指定使用的策略名称(类名)。

    • 示例:MyStrategy
  4. 交易对或远程 URL
    指定交易对列表或远程 API URL。

    • 示例:BTC/USDT ETH/USDThttps://example.com/api/pairs
  5. 优化空间(可选)
    指定优化的空间(buysell)。

    • 示例:buy

2. 默认值

如果某些参数未提供,脚本会使用默认值:

  • 开始日期:默认为两天前。
  • 结束日期:默认为明天。
  • 交易对:默认为一组常见的交易对(如 BTC/USDT, ETH/USDT 等)。
  • 策略:默认为 .env 文件中的 STRATEGY_NAME
  • 配置文件:默认为 .env 文件中的 CONFIG_FILE
  • 迭代次数:默认为一个 100 以内的随机奇数值。

3. 调用示例

(1) 使用命名参数

./hyperopt_org.sh \
  --start-date=20230901 \
  --end-date=20231001 \
  --strategy=MyStrategy \
  --pairs="BTC/USDT ETH/USDT" \
  --epochs=500 \
  --space=buy

(2) 使用位置参数

./hyperopt_org.sh 20230901 20231001 MyStrategy "BTC/USDT ETH/USDT" buy

(3) 使用远程交易对列表

./hyperopt_org.sh \
  --start-date=20230901 \
  --end-date=20231001 \
  --strategy=MyStrategy \
  --pairRemoteList="https://example.com/api/pairs" \
  --epochs=500

(4) 使用默认值

如果不提供任何参数,脚本会使用默认值运行:

./hyperopt_org.sh

4. 注意事项

  1. .env 文件
    脚本依赖 .env 文件中的环境变量(如 STRATEGY_NAME, CONFIG_FILE 等)。如果缺少 .env 文件,脚本会提示创建并退出。

  2. 交易对来源优先级

    • 如果提供了 --pairRemoteList,优先从远程 URL 获取交易对。
    • 如果未提供 --pairRemoteList 但提供了 --pairs,使用指定的交易对。
    • 如果两者都未提供,使用默认交易对。
  3. 日期格式校验
    脚本会对日期格式进行严格校验。如果格式不正确,会提示错误并退出。

  4. 策略和配置文件匹配
    如果指定了策略名称,脚本会自动尝试匹配对应的配置文件(小写形式)。如果匹配失败,会使用默认配置文件。

  5. 日志输出
    脚本会在运行过程中输出详细的日志信息,包括最终使用的参数值和命令行。