参数表¶
下面的表格将列出所有可用于 FreqAI 的配置参数。其中一些参数在 config_examples/config_freqai.example.json
中有示例。
必填参数标记为必填,必须以建议的方式设置。
通用配置参数¶
参数 | 描述 |
---|---|
config.freqai 树下面的通用配置参数 |
|
freqai |
必填。 包含控制 FreqAI 的所有参数的父字典。 数据类型: 字典。 |
train_period_days |
必填。 用于训练数据的天数(滑动窗口的宽度)。 数据类型: 正整数。 |
backtest_period_days |
必填。 在滑动上述 train_period_days 窗口之前,对经过训练的模型进行推理的天数,重新进行训练(更多信息请参见这里)。这里可以是小数天数,但要注意提供的timerange 将被除以此数以确定完成回测所需的训练次数。 数据类型: 浮点数。 |
identifier |
必填。 当前模型的唯一标识符。如果将模型保存到磁盘上, identifier 允许重新加载特定的预训练模型/数据。 数据类型: 字符串。 |
live_retrain_hours |
干/实时运行期间重新训练的频率。 数据类型: 浮点数 > 0. 默认值: 0 (模型尽可能经常重新训练)。 |
expiration_hours |
如果一个模型超过 expiration_hours 小时,避免进行预测。 数据类型: 正整数。 默认值: 0 (模型永不过期)。 |
purge_old_models |
在磁盘上保留的模型数量(与回测无关)。默认值为2,意味着干/实时运行将保留磁盘上的最新2个模型。设置为0时保留所有模型。该参数还可以接受一个布尔值以保持向后兼容性。 数据类型: 整数。 默认值: 2 。 |
save_backtest_models |
在运行回测时将模型保存到磁盘。回测通过保存预测数据并直接重复使用这些数据来实现最高效的操作(当您希望调整入场/出场参数时)。将回测模型保存到磁盘还允许使用相同的模型文件启动一个具有相同模型identifier 的干/实时实例。 数据类型: 布尔值。 默认值: False (不保存模型)。 |
fit_live_predictions_candles |
用于计算目标(标签)统计的历史蜡烛数量。此统计信息从预测数据中获取,而不是通过训练数据集获取(有关详细信息,请参见这里)。 数据类型: 正整数。 |
continual_learning |
将最近训练的模型的最终状态用作新模型的起点,从而实现增量学习(有关详细信息,请参见这里)。请注意,这是一种当前的增量学习方法,并且在市场离开您的模型时,它非常容易过拟合/陷入局部最小值。我们主要在这里提供连接以用于实验目的,并以便准备更成熟的增量学习方法,适用于混沌系统如加密市场。 数据类型: 布尔值。 默认值: False 。 |
write_metrics_to_disk |
收集训练时间、推理时间和 CPU 使用率,并将其保存在 JSON 文件中。 数据类型: 布尔值。 默认值: False 。 |
data_kitchen_thread_count |
指定要用于数据处理(离群值方法、归一化等)的线程数。这不会影响用于训练的线程数量。如果用户没有设置它(默认值),FreqAI 将使用最大数量的线程数-2(使一个物理核心为 Freqtrade bot 和 FreqUI 保留 1 个可用)。 数据类型: 正整数。 |
activate_tensorboard |
指示是否激活 TensorBoard,以使用 TensorBoard 启用的模块(目前支持强化学习、XGBoost、Catboost 和 PyTorch)。TensorBoard 需要安装 Torch,这意味着您需要安装 torch/RL docker 镜像,或者您需要回答关于是否要安装 Torch 的安装问题时选择“yes”。 数据类型: 布尔值。 默认值: True 。 |
特征参数¶
参数 | 描述 |
---|---|
freqai.feature_parameters 子字典内的特征参数 |
|
feature_parameters |
包含用于构建特征集的参数的字典。详细信息和示例请参见这里。 数据类型: 字典。 |
include_timeframes |
feature_engineering_expand_*() 中的所有指标将为其创建指标的时间帧列表。列表将作为特征添加到基本指标数据集中。 数据类型: 时间帧列表(字符串)。 |
include_corr_pairlist |
FreqAI 将添加作为其他特征的所有 pair_whitelist 货币对的相关币到指标集中。在特征工程期间,对于每个相关的币,所有在 feature_engineering_expand_*() 中设置的指标将为其创建。相关币的特征将添加到基本指标数据集中。 数据类型: 资产列表(字符串)。 |
label_period_candles |
创建标签的未来蜡烛数量。这在 feature_engineering_expand_all() 中使用(有关详细用法,请参见 templates/FreqaiExampleStrategy.py )。您可以创建自定义标签,并选择是否使用此参数。 数据类型: 正整数。 |
include_shifted_candles |
将前一个蜡烛的特征添加到后续蜡烛中,以添加历史信息。如果使用,FreqAI 将复制并移动所有来自 include_shifted_candles 个前一个蜡烛的特征,以便在后续蜡烛中可用。 数据类型: 正整数。 |
weight_factor |
根据数据点的新旧程度对训练数据进行加权(有关详细信息,请参见这里)。 数据类型: 正浮点数(通常 < 1)。 |
indicator_max_period_candles |
不再使用(#7325)。在策略中设置的 startup_candle_count 取代了 indicator_max_period_candles ,该变量是无关时间框架的,定义了用于指标创建的最大周期。FreqAI 使用此参数和 include_time_frames 中的最大时间框架,以计算要下载的数据点数,以便第一个数据点不包含 NaN 值。 数据类型: 正整数。 |
indicator_periods_candles |
用于计算指标的时间周期。指标将添加到基本指标数据集中。 数据类型: 正整数列表。 |
principal_component_analysis |
使用主成分分析自动减少数据集的维度。有关它的工作原理的详细信息,请参见这里。 数据类型: 布尔值。 默认值: False 。 |
plot_feature_importances |
为每个模型创建一个特征重要性图,显示前/后 plot_feature_importances 个特征。图表存储在 user_data/models/<identifier>/sub-train-<COIN>_<timestamp>.html 文件中。 数据类型: 整数。 默认值: 0 。 |
DI_threshold |
设置为 > 0 时,将激活使用不相似度指数进行异常值检测。有关它的工作原理的详细信息,请参见这里。 数据类型: 正浮点数(通常 < 1)。 |
use_SVM_to_remove_outliers |
训练支持向量机来检测并从训练数据集和传入的数据点中删除异常值。有关它的工作原理的详细信息,请参见这里。 数据类型: 布尔值。 |
svm_params |
Sklearn 的 SGDOneClassSVM() 中的所有可用参数。有关一些选择参数的详细信息,请参见这里。 数据类型: 字典。 |
use_DBSCAN_to_remove_outliers |
使用 DBSCAN 算法对数据进行聚类,以识别并从训练和预测数据中删除异常值。有关它的工作原理的详细信息,请参见这里。 数据类型: 布尔值。 |
noise_standard_deviation |
如果设置,则 FreqAI 会向训练特征添加噪声,以防止过拟合。FreqAI 从标准差为noise_standard_deviation 的高斯分布中生成随机的偏离量,并将其添加到所有数据点中。noise_standard_deviation 应相对于规范化空间保持一致,即在 -1 和 1 之间。换句话说,由于 FreqAI 中的数据始终被归一化为在 -1 和 1 之间,noise_standard_deviation: 0.05 将导致随机增加/减少超过 2.5% 的数据(即在第一个标准差内的数据百分比)。 数据类型: 整数。 默认值: 0 。 |
outlier_protection_percentage |
启用后,防止异常值检测方法丢弃过多的数据。如果 SVM 或 DBSCAN 将超过 outlier_protection_percentage % 的点检测为异常值,FreqAI 将记录警告消息并忽略异常值检测,即保留原始数据集。如果触发了异常值保护功能,将不会基于训练数据集进行预测。 数据类型: 浮点数。 默认值: 30 。 |
reverse_train_test_order |
将特征数据集(见下文)分割并使用最新的数据分割进行训练,并在历史节点上进行测试。这样可以训练模型达到最新数据点,同时避免过拟合。但是,在使用此参数之前,您应该仔细了解其非正统性质。 数据类型: 布尔值。 默认值: False (不反转)。 |
shuffle_after_split |
将数据分割为训练集和测试集,然后将这两个集合分别随机排列。 数据类型: 布尔值。 默认值: False 。 |
buffer_train_data_candles |
程序允许在指标填充之后将训练数据的开头和结尾的buffer_train_data_candles 去除。主要示例用途是当预测最大值和最小值时,argrelextrema 函数无法知道定时范围的边缘的最大值/最小值。为了提高模型准确性,最好在整个定时范围上计算 argrelextrema,然后使用此函数来删除边(buffer)。在另一种情况下,如果目标设置为移动的价格变动,此缓冲区是不必要的,因为定时范围结束时的移位蜡烛将为 NaN,FreqAI 将自动从训练数据集中剪切掉这些蜡烛。数据类型: 整数。 默认值: 0 。 |
数据分割参数¶
参数 | 描述 |
---|---|
freqai.data_split_parameters 子字典内的数据分割参数 |
|
data_split_parameters |
包括来自 scikit-learn test_train_split() 的任何其他可用参数,详细信息请参见这里(外部网站)。 数据类型: 字典。 |
test_size |
应该用于测试而不是训练的数据的分数。 数据类型: 正浮点数 < 1。 |
shuffle |
在训练过程中对训练数据点进行混洗。通常,在时间系列预测中,为了不破坏数据的时间顺序,将此参数设置为 False 。 数据类型: 布尔值。 默认值: False 。 |
模型训练参数| 参数 | 描述 |¶
|------------|-------------|
| | freqai.model_training_parameters
子字典中的模型训练参数
| model_training_parameters
| 一个灵活的字典,包含所选模型库提供的所有参数。例如,如果使用LightGBMRegressor
,该字典可以包含LightGBMRegressor
这里(外部网站)提供的任意参数。如果选择不同的模型,该字典可以包含该模型的任何参数。当前可用模型的列表可在这里找到。
数据类型: 字典.
| n_estimators
| 模型训练时要拟合的提升树的数量。
数据类型: 整数.
| learning_rate
| 模型训练中的提升学习率。
数据类型: 浮点数.
| n_jobs
, thread_count
, task_type
| 设置并行处理的线程数和任务类型(gpu
或cpu
)。不同的模型库使用不同的参数名称。
数据类型: 浮点数.
强化学习参数¶
参数 | 描述 |
---|---|
freqai.rl_config 子字典中的强化学习参数 |
|
rl_config |
包含强化学习模型控制参数的字典。 数据类型: 字典. |
train_cycles |
训练时间步数将基于train_cycles * number of training data points 设置。 数据类型: 整数. |
max_trade_duration_candles |
根据prediction_models/ReinforcementLearner.py 中的可自定义calculate_reward() 函数示例,指导代理训练以保持交易持续时间在期望范围内。 数据类型: 整数. |
model_type |
stable_baselines3 或 SBcontrib 中的模型字符串。可用的字符串包括: 'TRPO', 'ARS', 'RecurrentPPO', 'MaskablePPO', 'PPO', 'A2C', 'DQN' 。用户应确保model_training_parameters 匹配对应的 stable_baselines3 模型的参数,可以查阅它们的文档。PPO文档(外部网站) 数据类型: 字符串. |
policy_type |
stable_baselines3 中可用的策略类型之一。 数据类型: 字符串. |
max_training_drawdown_pct |
训练过程中代理允许经历的最大回撤。 数据类型: 浮点数. 默认值: 0.8 |
cpu_count |
用于强化学习训练过程的线程/ CPU 数量(取决于是否选择了 ReinforcementLearning_multiproc )。建议保持默认值,即将该值设置为物理核心总数减1。 数据类型: 整数. |
model_reward_parameters |
用于ReinforcementLearner.py 中可自定义的calculate_reward() 函数的参数. 数据类型: 整数. |
add_state_info |
告诉 FreqAI 在特征集中包含状态信息用于训练和推理。当前状态变量包括交易持续时间、当前利润、交易方向。这仅适用于实盘/模拟盘运行,对于回测自动设置为 false。 数据类型: 布尔类型. 默认值: False . |
net_arch |
在 stable_baselines3 文档中有详细描述的网络架构。简而言之:[<共享层>, dict(vf=[<未共享的价值网络层>], pi=[<未共享的策略网络层>])] 。默认设置为[128, 128] ,定义了2个具有每个128个单元的共享隐藏层。 |
randomize_starting_position |
随机化每个episode的起始点,以避免过拟合。 数据类型: 布尔类型. 默认值: False . |
drop_ohlc_from_features |
在训练过程中不包含规范化后的OHLC数据在传递给代理的特征集中(在所有情况下OHLC仍将用于驱动环境) 数据类型: 布尔类型. 默认值: False |
progress_bar |
显示当前进度、经过的时间和估计剩余时间的进度条。 数据类型: 布尔类型. 默认值: False . |
PyTorch参数¶
通用¶
参数 | 描述 |
---|---|
freqai.model_training_parameters 子字典中的模型训练参数 |
|
learning_rate |
要传递给优化器的学习率。 数据类型: 浮点数. 默认值: 3e-4 . |
model_kwargs |
要传递给模型类的参数。 数据类型: 字典. 默认值: {} . |
trainer_kwargs |
要传递给训练器类的参数。 数据类型: 字典. 默认值: {} . |
trainer_kwargs¶
参数 | 描述 |
---|---|
freqai.model_training_parameters.model_kwargs 子字典中的模型训练参数 |
|
n_epochs |
n_epochs 参数是PyTorch训练循环中的重要设置,确定整个训练数据集将用于更新模型参数的次数。一个epoch表示对整个训练数据集的完整遍历。覆盖n_steps 。必须设置n_epochs 或n_steps 中的一个。 数据类型: int. 可选. 默认值: 10 . |
n_steps |
设置n_epochs 的另一种方法 - 运行的训练迭代次数。迭代指的是我们调用optimizer.step() 的次数。如果设置了n_epochs ,则忽略该参数。简化版本的计算公式: n_epochs = n_steps / (n_obs / batch_size) 这里的动机是 n_steps 在不同的n_obs(数据点数)之间更容易优化和稳定。 数据类型: int. 可选. 默认值: None . |
batch_size |
训练过程中使用的批次大小。 数据类型: int. 默认值: 64 . |
额外参数¶
参数 | 描述 |
---|---|
其他参数 | |
freqai.keras |
如果所选模型使用Keras(通常用于基于TensorFlow的预测模型),则需要激活此标志,以便模型的保存/加载遵循Keras标准。 数据类型: 布尔类型. 默认值: False . |
freqai.conv_width |
神经网络输入张量的宽度。通过将历史数据点作为张量的第二个维度输入,取代了需要移动蜡烛(include_shifted_candles )。在回归器中理论上也可以使用此参数,但它只会增加计算开销,不会改变模型训练/预测。 数据类型: 整数. 默认值: 2 . |
freqai.reduce_df_footprint |
将所有数值列重新设置为float32/int32,以减少内存/磁盘使用量和减少训练/推断时间。此参数设置在 Freqtrade 配置文件的主级别(不在 FreqAI 内部)中。 数据类型: 布尔类型. 默认值: False . |