Freqtrade 的配置文件默认名为 config.json,位于当前工作目录中。当您启动机器人时,它会自动尝试从该文件加载配置。如果您使用了 Docker 快速安装方法,安装脚本通常会自动生成此文件。如果文件不存在,建议使用命令 freqtrade new-config --config user_data/config.json 来生成一个基础配置文件。该文件必须使用 JSON 格式编写,但允许使用单行注释 // ... 和多行注释 /* ... */,以及参数列表末尾的逗号,使编辑更灵活。
您可以通过命令行参数 -c 或 --config 指定一个非默认的配置文件路径。例如:freqtrade trade --config /path/to/your/custom_config.json。这样,机器人将使用您指定的文件作为配置源,而不是默认的 config.json。此方法特别适用于需要为不同策略或环境(如测试与生产)使用不同配置文件的场景。
您可以使用 add_config_files 参数在主配置文件中指定额外的配置文件路径,这些文件将按顺序加载并合并到主配置中。文件路径是相对于主配置文件位置解析的。例如,在 config.json 中添加:"add_config_files": ["config-private.json"],机器人启动时会自动加载并合并 config-private.json。这种方式的好处是:可以将敏感信息(如 API 密钥)单独存放在私有文件中,主配置文件可安全分享,而私有文件仅由您自己保管。多个文件中重复的键,后加载的文件会覆盖前面的值。
Freqtrade 的配置参数优先级从高到低依次为:1. 命令行参数(CLI)——优先级最高,可覆盖所有其他来源;2. 环境变量(以 FREQTRADE__ 开头)——优先级次之;3. 配置文件——多个配置文件按加载顺序合并,后加载的覆盖先加载的;4. 策略配置(Strategy)——仅当上述所有方式均未设置时才生效。策略中可覆盖的参数会在文档中标记为 [Strategy Override],但它们始终会被更高优先级的配置覆盖。
以下参数为强制性(Required),必须在配置文件、环境变量或命令行中至少设置一个:max_open_trades(允许同时持有的最大交易数)、stake_currency(交易使用的加密货币,如 USDT)、stake_amount(每笔交易的金额,可为数字或 "unlimited")、dry_run(是否启用模拟模式)和 exchange.name(交易所名称,如 binance)。此外,strategy 也需指定策略类名,虽然推荐通过 --strategy 命令行参数设置,但仍是必需项。缺少这些参数会导致机器人无法启动。
你可以通过多次使用 -c/--config 参数指定多个配置文件,例如:freqtrade trade -c ./config.json -c path/to/secrets/keys.config.json。机器人会按命令行中出现的顺序依次加载这些文件,后加载的配置文件中的参数会覆盖前面文件中同名的参数。这种机制特别适用于将敏感信息(如 API 密钥和密钥)分离到独立文件中,以便在安全环境下使用,同时在调试或公开分享配置时避免泄露机密信息。
虽然 --config 参数本身不直接控制 FreqAI 模型的加载,但它指定了包含 FreqAI 配置的主配置文件(如 config.json),而该文件中会明确声明使用哪个 FreqAI 模型(例如通过 freqaimodel 字段)。如果没有正确配置该文件,即使模型存在于系统中,策略也无法加载它们。因此,确保 --config 指向包含正确 freqaimodel 设置的配置文件,是成功使用 FreqAI 模型的前提。默认情况下,程序会查找 userdir/config.json 或当前目录下的 config.json,但你可以通过 --config PATH 明确指定其他路径,例如 --config /mybot/config.json。
position_adjustment_enable 启用策略的仓位调整功能,允许在已有仓位基础上追加买入或卖出,以摊薄成本或锁定利润。max_entry_position_adjustment 定义每笔交易最多可追加多少次买入(不包括初始入场),设为 -1 表示无上限。例如,若初始买入 1 个单位,max_entry_position_adjustment=2,则最多可再追加两次,共持有 3 个单位。此功能需策略实现 adjust_trade_position() 回调函数,并配合动态资金管理(如 custom_stake_amount)使用,以避免资金耗尽。
user_data_dir 定义机器人查找用户数据的根目录,默认为 ./user_data/。此目录下包含策略文件、配置文件、日志、数据库、下载的数据等。修改此路径可将所有用户数据集中存放在自定义位置(如 /opt/freqtrade/user_data),便于备份、迁移或在多个实例间共享。确保路径存在且机器人有读写权限,否则可能导致配置加载失败或数据丢失。
strategy 参数指定机器人使用的策略类名(如 MyAwesomeStrategy),必须与策略文件中的类名一致。strategy_path 用于添加额外的策略搜索目录,例如 "strategy_path": "./custom_strategies",机器人会在该目录下查找策略文件。结合 recursive_strategy_search: true,可递归搜索子目录,便于组织大量策略。策略文件通常位于 user_data/strategies/,但通过这两个参数可灵活扩展搜索路径,实现策略模块化管理。
要启用 Telegram 通知,需在配置文件中设置 "telegram.enabled": true,并提供 "telegram.token"(机器人 Token)和 "telegram.chat_id"(您的 Telegram 用户 ID)。这些信息需从 @BotFather 获取 Token,从 @userinfobot 获取 chat_id。密钥必须保密,不应共享。启用后,机器人可通过 Telegram 发送交易通知、余额报告等。还可配置 telegram.balance_dust_level 过滤小额余额,telegram.reload 允许在消息中添加刷新按钮,以及 telegram.allow_custom_messages 允许策略发送自定义消息。
为安全管理 API 密钥,推荐使用双配置文件策略:主配置文件 config.json 包含通用设置(如交易对、策略),而私有配置文件 config-private.json 仅包含敏感信息(如 exchange.key, exchange.secret, telegram.token)。启动时使用命令:freqtrade trade --config user_data/config.json --config user_data/config-private.json。这样,您可以安全地分享主配置文件(如用于版本控制),而私有文件仅由您本地保存。环境变量方式同样安全,但需注意不要在日志或脚本中暴露。
Webhook 是一种通过 HTTP POST 请求向指定 URL 发送事件通知的机制。启用方式为设置 "webhook.enabled": true 并提供 "webhook.url"。您可为不同事件配置独立的 JSON 负载,如 entry、exit、status 等,用于集成到第三方系统(如钉钉、企业微信、自建监控平台)。通过 webhook.allow_custom_messages,策略还可发送自定义消息。Webhook 适合自动化集成,但需确保目标服务器可公开访问并能处理请求。