这个脚本是一个用于运行 Freqtrade 的 Hyperopt 优化的 Bash 脚本。它支持多种参数,允许用户灵活地配置回测的时间范围、交易对、策略、配置文件等。以下是脚本中支持的主要参数及其调用方法的详细介绍: --- ### **1. 参数分类** #### **(1) 命名参数(推荐使用)** 命名参数以 `--` 开头,便于明确指定每个参数的含义。以下是支持的命名参数: - **`--start-date=YYYYMMDD`** 指定回测的起始日期。格式可以是 `YYYYMMDD` 或 `YYYY-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`** 指定优化的空间(`buy` 或 `sell`)。如果未提供,默认为 `sell`。 - 示例:`--space=buy` --- #### **(2) 位置参数(兼容模式)** 位置参数按照固定的顺序传递,适合简单的调用场景。以下是位置参数的顺序: 1. **开始日期** 格式为 `YYYYMMDD` 或 `YYYY-MM-DD HH:MM:SS`。 - 示例:`20230901` 2. **结束日期** 格式同上。 - 示例:`20231001` 3. **策略名称** 指定使用的策略名称(类名)。 - 示例:`MyStrategy` 4. **交易对或远程 URL** 指定交易对列表或远程 API URL。 - 示例:`BTC/USDT ETH/USDT` 或 `https://example.com/api/pairs` 5. **优化空间(可选)** 指定优化的空间(`buy` 或 `sell`)。 - 示例:`buy` --- ### **2. 默认值** 如果某些参数未提供,脚本会使用默认值: - **开始日期**:默认为两天前。 - **结束日期**:默认为明天。 - **交易对**:默认为一组常见的交易对(如 `BTC/USDT`, `ETH/USDT` 等)。 - **策略**:默认为 `.env` 文件中的 `STRATEGY_NAME`。 - **配置文件**:默认为 `.env` 文件中的 `CONFIG_FILE`。 - **迭代次数**:默认为一个 100 以内的随机奇数值。 --- ### **3. 调用示例** #### **(1) 使用命名参数** ```bash ./hyperopt_org.sh \ --start-date=20230901 \ --end-date=20231001 \ --strategy=MyStrategy \ --pairs="BTC/USDT ETH/USDT" \ --epochs=500 \ --space=buy ``` #### **(2) 使用位置参数** ```bash ./hyperopt_org.sh 20230901 20231001 MyStrategy "BTC/USDT ETH/USDT" buy ``` #### **(3) 使用远程交易对列表** ```bash ./hyperopt_org.sh \ --start-date=20230901 \ --end-date=20231001 \ --strategy=MyStrategy \ --pairRemoteList="https://example.com/api/pairs" \ --epochs=500 ``` #### **(4) 使用默认值** 如果不提供任何参数,脚本会使用默认值运行: ```bash ./hyperopt_org.sh ``` --- ### **4. 注意事项** 1. **`.env` 文件** 脚本依赖 `.env` 文件中的环境变量(如 `STRATEGY_NAME`, `CONFIG_FILE` 等)。如果缺少 `.env` 文件,脚本会提示创建并退出。 2. **交易对来源优先级** - 如果提供了 `--pairRemoteList`,优先从远程 URL 获取交易对。 - 如果未提供 `--pairRemoteList` 但提供了 `--pairs`,使用指定的交易对。 - 如果两者都未提供,使用默认交易对。 3. **日期格式校验** 脚本会对日期格式进行严格校验。如果格式不正确,会提示错误并退出。 4. **策略和配置文件匹配** 如果指定了策略名称,脚本会自动尝试匹配对应的配置文件(小写形式)。如果匹配失败,会使用默认配置文件。 5. **日志输出** 脚本会在运行过程中输出详细的日志信息,包括最终使用的参数值和命令行。 ---