配置详解

本章详细讲解 Freqtrade 的配置体系,涵盖 config.json 的完整结构、各配置项的功能说明、环境变量覆盖机制以及常见场景的配置模板,帮助读者深入理解并灵活配置交易机器人。

配置文件结构

基本配置结构

{
    "max_open_trades": 3,
    "stake_currency": "USDT",
    "stake_amount": 100,
    "tradable_balance_ratio": 0.99,
    "dry_run_wallet": 10000,
    "fiat_display_currency": "USD",
    "timeframe": "5m",
    "dry_run": true,
    "cancel_open_orders_on_exit": false,
    "trading_mode": "spot",
    "margin_mode": "",
    "unfilledtimeout": {
        "entry": 10,
        "exit": 10,
        "exit_timeout_count": 0,
        "unit": "minutes"
    },
    "entry_pricing": {
        "price_side": "same",
        "price_last_balance": 0.0,
        "use_order_book": true,
        "order_book_top": 1,
        "check_depth_of_market": {
            "enabled": false,
            "bids_to_ask_delta": 1
        }
    },
    "exit_pricing": {
        "price_side": "same",
        "price_last_balance": 0.0,
        "use_order_book": true,
        "order_book_top": 1
    },
    "exchange": {
        "name": "binance",
        "key": "",
        "secret": "",
        "ccxt_config": {},
        "ccxt_async_config": {}
    },
    "pairlists": [
        {"method": "StaticPairList"},
        {"method": "VolumePairList", "number_assets": 20}
    ],
    "telegram": {
        "enabled": false,
        "token": "",
        "chat_id": ""
    },
    "api_server": {
        "enabled": false,
        "listen_ip_address": "127.0.0.1",
        "listen_port": 8080,
        "verbosity": "error",
        "enable_openapi": false,
        "jwt_secret_key": "",
        "cors_origins": [],
        "username": "",
        "password": ""
    },
    "bot_name": "freqtrade",
    "initial_state": "running",
    "force_entry_enable": false,
    "internals": {
        "process_throttle_secs": 5
    }
}

核心交易配置

配置项类型默认值说明
max_open_tradesint3最大同时持仓数,-1 表示无限
stake_currencystringUSDT投入币种
stake_amountfloat100每笔投入金额
tradable_balance_ratiofloat0.99可用于交易的总余额比例
dry_run_walletfloat1000模拟运行时的初始钱包余额
timeframestring5m默认 K 线周期
fiat_display_currencystringUSD法币显示币种

交易模式配置

Freqtrade 支持三种交易模式:

{
    "trading_mode": "spot",
    "margin_mode": ""
}
模式trading_modemargin_mode说明
现货spot``默认模式,直接买卖
期货futuresisolated逐仓保证金
期货futurescross全仓保证金

交易所配置

{
    "exchange": {
        "name": "binance",
        "key": "your_api_key",
        "secret": "your_api_secret",
        "password": "",
        "sandbox": false,
        "ccxt_config": {
            "enableRateLimit": true,
            "rateLimit": 50
        },
        "ccxt_async_config": {},
        "pair_whitelist": [
            "BTC/USDT",
            "ETH/USDT"
        ],
        "pair_blacklist": [
            "BNB/USDT.*"
        ],
        "timeout": 20,
        "l2_limit": 100
    }
}

交易所配置项

配置项类型说明
namestring交易所名称(如 binance, okx, bybit)
keystringAPI Key
secretstringAPI Secret
passwordstring部分交易所需要(如 okx)
sandboxbool是否使用沙箱环境
ccxt_configobjectCCXT 底层库配置
pair_whitelistarray交易白名单
pair_blacklistarray交易黑名单(支持正则)

订单与执行配置

{
    "entry_pricing": {
        "price_side": "same",
        "price_last_balance": 0.0,
        "use_order_book": true,
        "order_book_top": 1,
        "check_depth_of_market": {
            "enabled": false,
            "bids_to_ask_delta": 1
        }
    },
    "exit_pricing": {
        "price_side": "same",
        "price_last_balance": 0.0,
        "use_order_book": true,
        "order_book_top": 1
    },
    "unfilledtimeout": {
        "entry": 10,
        "exit": 10,
        "exit_timeout_count": 0,
        "unit": "minutes"
    },
    "custom_price_max_distance_ratio": 0.02
}

订单价格配置

配置项说明建议值
price_side使用买一价还是卖一价same / ask / bid / other
use_order_book是否使用订单簿深度true / false
order_book_top使用第几档深度1-5
unfilledtimeout.entry未成交买入订单超时取消10-30 分钟
unfilledtimeout.exit未成交卖出订单超时取消10-30 分钟

API 服务器配置

{
    "api_server": {
        "enabled": true,
        "listen_ip_address": "0.0.0.0",
        "listen_port": 8080,
        "verbosity": "error",
        "enable_openapi": true,
        "jwt_secret_key": "your-strong-secret-key",
        "cors_origins": ["*"],
        "username": "admin",
        "password": "your-strong-password"
    }
}

安全警告:在生产环境中,务必设置强密码和 JWT 密钥,不要将 API 服务暴露在公网。

高级配置

止损与 ROI 配置

{
    "stoploss": -0.10,
    "trailing_stop": true,
    "trailing_stop_positive": -0.02,
    "trailing_stop_positive_offset": 0.03,
    "trailing_only_offset_is_reached": true,
    "use_exit_signal": true,
    "exit_profit_only": false,
    "exit_profit_offset": 0.0,
    "ignore_roi_if_entry_signal": false,
    "minimal_roi": {
        "0": 0.10,
        "30": 0.05,
        "60": 0.02,
        "120": 0
    }
}

时间与频率控制

{
    "timeframe": "5m",
    "timeframe_in_sec": 300,
    "process_only_new_candles": true,
    "internals": {
        "process_throttle_secs": 5
    },
    "unfilledtimeout": {
        "entry": 10,
        "exit": 10,
        "unit": "minutes"
    }
}

环境变量覆盖

Freqtrade 允许通过环境变量覆盖配置文件中的值,这对 Docker 部署和密钥管理非常有用:

环境变量映射规则

环境变量格式:<SECTION>__<KEY>(双下划线作为分隔符)

# 覆盖 exchange.name
export FREQTRADE__EXCHANGE__NAME="binance"

# 覆盖 exchange.key
export FREQTRADE__EXCHANGE__KEY="your_api_key"

# 覆盖 exchange.secret
export FREQTRADE__EXCHANGE__SECRET="your_api_secret"

# 覆盖 telegram.token
export FREQTRADE__TELEGRAM__TOKEN="your_bot_token"

# 覆盖 max_open_trades
export FREQTRADE__MAX_OPEN_TRADES="5"

# 覆盖 dry_run
export FREQTRADE__DRY_RUN="true"

# 覆盖 api_server.username
export FREQTRADE__API_SERVER__USERNAME="admin"

# 覆盖 api_server.password
export FREQTRADE__API_SERVER__PASSWORD="strong_password"

环境变量优先级

环境变量 > 配置文件 > 默认值

Docker 中使用环境变量

version: '3'
services:
  freqtrade:
    image: freqtradeorg/freqtrade:stable
    volumes:
      - "./user_data:/freqtrade/user_data"
    env_file:
      - .env
    environment:
      - FREQTRADE__EXCHANGE__NAME=binance
      - FREQTRADE__TELEGRAM__ENABLED=true

多配置文件合并

Freqtrade 支持同时加载多个配置文件,后面的配置会合并(覆盖)前面的:

# 基础配置 + 私有配置 + 策略配置
freqtrade trade \
    --config user_data/config.json \
    --config user_data/private_config.json \
    --config user_data/strategy_config.json

# 回测使用专用配置
freqtrade backtesting \
    --config user_data/config.json \
    --config user_data/backtest_config.json

配置合并规则

// 文件 1: config.json
{
    "max_open_trades": 3,
    "stake_amount": 100,
    "exchange": {"name": "binance", "key": ""}
}

// 文件 2: override.json
{
    "stake_amount": 200,
    "exchange": {"key": "real_key"}
}

// 合并结果
{
    "max_open_trades": 3,
    "stake_amount": 200,
    "exchange": {"name": "binance", "key": "real_key"}
}

常用配置模板

现货 Dry-Run 模板

{
    "max_open_trades": 3,
    "stake_currency": "USDT",
    "stake_amount": 50,
    "tradable_balance_ratio": 0.99,
    "dry_run_wallet": 10000,
    "dry_run": true,
    "timeframe": "5m",
    "fiat_display_currency": "USD",
    "trading_mode": "spot",
    "margin_mode": "",
    "exchange": {
        "name": "binance",
        "key": "",
        "secret": "",
        "ccxt_config": {}
    },
    "pairlists": [
        {"method": "StaticPairList"}
    ],
    "telegram": {
        "enabled": false,
        "token": "",
        "chat_id": ""
    }
}

实盘交易模板

{
    "max_open_trades": 2,
    "stake_currency": "USDT",
    "stake_amount": 50,
    "tradable_balance_ratio": 0.95,
    "dry_run": false,
    "timeframe": "1h",
    "fiat_display_currency": "USD",
    "trading_mode": "spot",
    "exchange": {
        "name": "binance",
        "key": "${EXCHANGE_KEY}",
        "secret": "${EXCHANGE_SECRET}",
        "ccxt_config": {
            "enableRateLimit": true
        }
    },
    "telegram": {
        "enabled": true,
        "token": "${TELEGRAM_TOKEN}",
        "chat_id": "${TELEGRAM_CHAT_ID}"
    },
    "api_server": {
        "enabled": true,
        "listen_ip_address": "127.0.0.1",
        "listen_port": 8080,
        "username": "admin",
        "password": "${API_PASSWORD}"
    }
}

Docker 部署模板

version: '3'
services:
  freqtrade:
    image: freqtradeorg/freqtrade:stable
    container_name: freqtrade
    restart: unless-stopped
    volumes:
      - "./user_data:/freqtrade/user_data"
    ports:
      - "127.0.0.1:8080:8080"
    environment:
      - FREQTRADE__EXCHANGE__NAME=binance
      - FREQTRADE__EXCHANGE__KEY=${EXCHANGE_KEY}
      - FREQTRADE__EXCHANGE__SECRET=${EXCHANGE_SECRET}
      - FREQTRADE__TELEGRAM__ENABLED=true
      - FREQTRADE__TELEGRAM__TOKEN=${TELEGRAM_TOKEN}
      - FREQTRADE__TELEGRAM__CHAT_ID=${TELEGRAM_CHAT_ID}
      - FREQTRADE__DRY_RUN=false
    command: trade --strategy MyStrategy

常见配置问题

问题原因解决方案
交易所连接失败API Key 错误或无权限检查 Key/Secret 和 IP 白名单
交易对无数据未下载数据或交易对不在白名单运行 freqtrade download-data
参数未生效策略中参数覆盖了配置检查策略中的参数优先级
启动报错JSON 格式错误使用 freqtrade check-config 验证
Keepp 连接丢失网络不稳定启用 ccxt_config.enableRateLimit
多配置合并异常配置字段冲突检查合并后的完整配置