Freqtrade 配置文件生成与说明
如何生成 config.json?
Freqtrade 提供了一个命令行工具,可一键生成默认配置模板,非常适合初学者快速开始。
bash
freqtrade new-config --config user_data/config.json配置文件详细说明
以下是完整的配置文件示例,包含了详细的中文注释说明:
json
{
"$schema": "https://schema.freqtrade.io/schema.json", // JSON Schema验证文件,用于配置文件格式验证
// 基础交易配置
"max_open_trades": 3, // 单位时间内最多持仓数量,建议新手设置为1-3
"stake_currency": "USDT", // 基准货币,用于计算和显示
"stake_amount": "unlimited", // 每笔交易的投入金额,unlimited表示使用可用余额,也可设置具体数值如100
"tradable_balance_ratio": 0.99, // 可交易余额比例(0-1),控制总资金中用于交易的比例,建议0.8-0.9
"fiat_display_currency": "USD", // 法币显示货币,用于利润等金额的显示
// 模拟交易配置
"dry_run": false, // 是否启用模拟交易,true为模拟,false为实盘,建议新手先true测试
"dry_run_wallet": 1000, // 模拟交易起始资金,仅在dry_run=true时有效
"cancel_open_orders_on_exit": false, // 退出时是否取消未成交订单
// 交易模式配置
"trading_mode": "futures", // 交易模式:spot(现货)或futures(期货)
"margin_mode": "isolated", // 保证金模式:isolated(逐仓)或cross(全仓),仅期货模式有效
// 订单超时配置
"unfilledtimeout": {
"entry": 10, // 入场订单超时时间(分钟)
"exit": 10, // 出场订单超时时间(分钟)
"exit_timeout_count": 0, // 出场超时重试次数,0表示无限重试
"unit": "minutes" // 时间单位:minutes(分钟)、seconds(秒)
},
// 入场价格配置
"entry_pricing": {
"price_side": "same", // 价格方向:same(同侧)、other(对侧)、bid(买价)、ask(卖价)
"use_order_book": true, // 是否使用订单簿定价
"order_book_top": 1, // 使用订单簿前N档价格,1表示最优价格
"price_last_balance": 0.0, // 最后价格平衡系数(0-1),影响价格选择
"check_depth_of_market": {
"enabled": false, // 是否启用市场深度检查
"bids_to_ask_delta": 1 // 买卖盘深度差异阈值
}
},
// 出场价格配置
"exit_pricing":{
"price_side": "same", // 价格方向:same(同侧)、other(对侧)、bid(买价)、ask(卖价)
"use_order_book": true, // 是否使用订单簿定价
"order_book_top": 1 // 使用订单簿前N档价格,1表示最优价格
},
// 交易所配置
"exchange": {
"name": "binance", // 交易所名称:binance、okx、huobi等
"key": "", // API Key,需要在交易所申请
"secret": "", // API Secret,需要妥善保管
"ccxt_config": {}, // CCXT库的额外配置,如超时设置等
"ccxt_async_config": {}, // CCXT异步配置
"pair_whitelist": [ // 交易对白名单,明确指定要交易的币种
"BTC/USDT:USDT", // 比特币期货合约
"ETH/USDT:USDT", // 1. 现货交易对格式:BTC/USDT、ETH/USDT(直接买卖实际资产)
"BNB/USDT:USDT", // 2. 期货交易对格式:BTC/USDT:USDT、ETH/USDT:USDT(合约交易,带杠杆)
"ADA/USDT:USDT", // 3. 现货交易:需要持有实际币种,风险相对较低
"SOL/USDT:USDT", // 4. 期货交易:可以使用杠杆,收益和风险都被放大
"XRP/USDT:USDT", // 5. 期货交易需要配置trading_mode为"futures"和margin_mode
"DOGE/USDT:USDT", // 6. 注意:期货交易对名称通常带有":USDT"后缀,表示USDT保证金合约
],
"pair_blacklist": [ // 交易对黑名单,使用正则表达式排除
"BNB/.*", // 排除所有BNB交易对
".*/.*_BTC" // 排除以BTC为计价货币的交易对
]
},
// 交易对列表配置
"pairlists": [
{
"method": "VolumePairList", // 交易对选择方法:VolumePairList(按成交量)、StaticPairList(静态列表)
"number_assets": 20, // 选择交易对的数量
"sort_key": "quoteVolume", // 排序键:quoteVolume(基准货币成交量)、baseVolume(交易货币成交量)
"min_value": 0, // 最小值过滤,低于此值的交易对会被排除
"refresh_period": 1800 // 刷新间隔(秒),多久更新一次交易对列表
}
],
// Telegram通知配置
"telegram": {
"enabled": false, // 是否启用Telegram通知
"token": "", // Telegram Bot Token,通过@BotFather创建
"chat_id": "" // Telegram Chat ID,用户或群组ID
},
// Web API服务器配置
"api_server": {
"enabled": false, // 是否启用Web API服务
"listen_ip_address": "127.0.0.1", // 监听IP地址,0.0.0.0表示允许外网访问
"listen_port": 8080, // 监听端口
"verbosity": "error", // 日志级别:error、warning、info、debug
"enable_openapi": false, // 是否启用OpenAPI文档
"jwt_secret_key": "8bc8e0515989cb0ff3f9993c42e76fa1ceab0acfc14f70b53844b5ade4dea472", // JWT密钥,建议修改为随机字符串
"ws_token": "PoWMzynXQUcQ16_-33gpt23PbrrEYP7etg", // WebSocket连接令牌
"CORS_origins": [], // CORS允许的源,[]表示允许所有源
"username": "freqtrade", // Web界面登录用户名,默认为freqtrade
"password": "freqtrade" // Web界面登录密码,默认为freqtrade
},
// 机器人基础配置
"bot_name": "freqtrade", // 机器人名称,在日志和Web界面显示
"initial_state": "running", // 初始状态:running(运行)或stopped(停止)
"force_entry_enable": false, // 是否强制启用入场信号,危险选项,建议保持false
// 内部配置
"internals": {
"process_throttle_secs": 5 // 处理节流时间(秒),控制循环检查频率
}
}重要配置说明
1. 基础交易配置
max_open_trades: 控制同时持有的交易数量,建议新手设置为1-3stake_amount: 每笔交易的金额,根据资金情况调整tradable_balance_ratio: 可交易余额比例(0-1之间),控制总资金中用于交易的比例- 注意:这不是开仓保证金,而是控制可用交易资金的比例
- 设置为 0.99 表示使用99%的可用余额进行交易,保留1%作为缓冲
- 设置较低值(如0.8)可以保留更多资金作为风险缓冲
- 建议新手设置为0.8-0.9,避免过度杠杆
- 计算公式:实际可用交易金额 = 账户总余额 × tradable_balance_ratio
- 资金限制示例:
- 账户余额:1000 USDT,tradable_balance_ratio:0.8 → 可用交易金额:800 USDT
- 如果亏损后余额只剩80 USDT → 可用交易金额:80 × 0.8 = 64 USDT
- 此时
stake_amount为100,但实际可用资金只有64 USDT - 系统会自动调整:实际每笔投入金额 = min(100, 64÷3) = 21.33 USDT
dry_run: 建议保持为true,先进行模拟交易测试
2. 交易所配置
- 交易所选择:支持币安(binance)、欧易(okx)等主流交易所
- API密钥配置:需要在交易所申请API密钥并填入
key和secret字段 - 注意事项:API密钥需要开启交易权限,建议先在模拟环境测试
pair_whitelist: 选择要交易的币种,如BTC/USDT:USDT、ETH/USDT:USDT等pair_blacklist: 排除不需要的交易对,使用正则表达式匹配- 重要提醒:交易对列表在模拟交易、真实交易和回测中都会使用
- 回测时需要先下载相应的历史数据
- 如果数据未下载,即使配置了交易对也无法进行回测
3. API服务器配置
- 启用Web界面:将
api_server.enabled设置为true - 安全设置:修改
jwt_secret_key为安全的随机字符串 - Web登录配置:
username: Web界面登录用户名(默认:freqtrade)password: Web界面登录密码(默认:freqtrade)bot_name: 机器人名称,在Web界面显示
- 访问地址:启动后可通过
http://127.0.0.1:8080访问Web界面 - 重要提醒:建议修改默认用户名和密码,确保安全性
4. Telegram通知
- 如需实时通知,需要创建Telegram Bot并填写token和chat_id
交易所配置详解
支持的交易所
- 币安 (binance):最常用的交易所之一
- 欧易 (okx):支持期货和现货交易
- 其他交易所:通过CCXT库支持的主流交易所
API密钥配置步骤
- 登录交易所官网
- 进入API管理页面
- 创建新的API密钥
- 开启交易权限(建议先在测试网测试)
- 将API Key和Secret填入配置文件
交易对配置说明
- 白名单 (pair_whitelist):明确指定要交易的交易对
- 黑名单 (pair_blacklist):使用正则表达式排除不需要的交易对
- 数据下载:回测前必须先下载对应交易对的历史数据
常见问题
- 如果配置了交易对但无法回测,通常是因为历史数据未下载
- 建议先用少量交易对测试,确认配置正确后再扩展
- API密钥需要妥善保管,不要提交到代码仓库
Web界面配置详解
启用Web界面
要使用Freqtrade的Web管理界面,需要配置以下关键参数:
json
"api_server": {
"enabled": true, // 必须设置为true
"username": "your_username", // Web界面登录用户名
"password": "your_password", // Web界面登录密码
"jwt_secret_key": "your_secure_key", // JWT安全密钥
"listen_port": 8080 // 访问端口
}登录凭据说明
- username: Web界面登录用户名(默认:freqtrade)
- password: Web界面登录密码(默认:freqtrade)
- bot_name: 机器人名称,在Web界面顶部显示
访问方式
- 启动Freqtrade机器人
- 打开浏览器访问:
http://127.0.0.1:8080 - 使用配置的用户名和密码登录
- 登录后可以查看交易状态、历史记录、实时图表等
安全建议
- 修改默认凭据:立即修改默认的用户名和密码
- JWT密钥:使用强随机字符串作为
jwt_secret_key - 网络安全:如需远程访问,请配置防火墙和HTTPS
- 定期更新:定期更换密码和密钥
Web界面功能
- 实时交易监控
- 历史交易记录查看
- 策略性能分析
- 利润和亏损统计
- 手动交易操作(谨慎使用)
下一步
了解配置文件后,您可以: