Skip to content
GitHub 高星项目实战

Freqtrade:加密货币策略先回测、再模拟盘,别拿真钱试错

用历史行情回测、用模拟盘空跑,先看清回撤和胜率背后的账,再决定要不要碰真钱。

约 4 分钟读完1,259 字最近更新 2026-10-21#GitHub 高星项目#加密货币#量化#实测

Freqtrade:加密货币策略先回测、再模拟盘,别拿真钱试错 ​

你能得到什么:在真钱下场前,用历史行情把一个加密货币交易策略「回放」一遍,看清它到底赚不赚、最多会亏多深,再用模拟盘按实时行情空跑。很多看起来很美的思路,回测一下就会露馅,省下的是本来要交的学费。适合:已经在做或打算做加密货币交易、会一点 Python 的人。不适合:想找一个「装上就躺赚」机器人的人,这样的东西不存在;也不适合承受不了亏损的资金。

先看这条

官方 README 的免责声明写得很直白:软件仅供学习,不要投入你害怕失去的钱,先用 Dry-run(模拟盘)弄懂它怎么运作。本页只讲工具,不构成任何投资建议。

项目速览 ​

项目内容
仓库freqtrade/freqtrade
Star55,681(截至 2026-10-21)
许可证GPL-3.0
最新版本2026.9(2026-09-29 发布)
它做什么Python 写的开源加密货币交易机器人:回测、模拟盘、参数优化、网页界面和 Telegram 控制,支持多家主流交易所

安装指南 ​

需要 Python 3.12 或更新版本。官方推荐 Docker。

sh
mkdir ft_userdata && cd ft_userdata
curl https://raw.githubusercontent.com/freqtrade/freqtrade/stable/docker-compose.yml -o docker-compose.yml
docker compose pull
docker compose run --rm freqtrade create-userdir --userdir user_data
docker compose run --rm freqtrade new-config --config user_data/config.json
sh
python3 -m venv .venv && source .venv/bin/activate
pip install freqtrade
freqtrade --version
powershell
py -3.12 -m venv .venv
.venv\Scripts\activate
pip install freqtrade
freqtrade --version

使用教程:拿官方示例策略做一次回测 ​

  1. 建工作目录:freqtrade create-userdir --userdir user_data,会生成目录结构和一个示例策略 SampleStrategy。
  2. 写配置:交互式的 freqtrade new-config 可以一步步生成;也可以直接用下面这份最小配置,dry_run 设成 true,交易所 API 密钥留空。
  3. 下载历史行情:freqtrade download-data -c config.json --userdir user_data --timeframes 5m --timerange 20260801-。
  4. 回测:freqtrade backtesting -c config.json --userdir user_data --strategy SampleStrategy --timeframe 5m --timerange 20260801-20261020。
  5. 看结果再说:重点看总收益、最大回撤、和同期「什么都不做、拿着不动」(报告里的 Market change)比谁好。
  6. 模拟盘:回测满意了,再 freqtrade trade -c config.json --userdir user_data --strategy SampleStrategy,dry_run 保持 true,让它按实时行情空跑一段时间。
config.json
json
{
  "max_open_trades": 3,
  "stake_currency": "USDT",
  "stake_amount": "unlimited",
  "tradable_balance_ratio": 0.99,
  "fiat_display_currency": "USD",
  "dry_run": true,
  "dry_run_wallet": 1000,
  "trading_mode": "spot",
  "entry_pricing": { "price_side": "same", "use_order_book": true, "order_book_top": 1 },
  "exit_pricing": { "price_side": "same", "use_order_book": true, "order_book_top": 1 },
  "exchange": {
    "name": "okx",
    "key": "",
    "secret": "",
    "pair_whitelist": ["BTC/USDT", "ETH/USDT", "SOL/USDT"],
    "pair_blacklist": []
  },
  "pairlists": [{ "method": "StaticPairList" }],
  "bot_name": "dryrun-demo",
  "initial_state": "running",
  "internals": { "process_throttle_secs": 5 }
}

我们这次回测看到了什么 ​

用上面的配置,在 BTC/USDT、ETH/USDT、SOL/USDT 三个交易对、5 分钟 K 线、2026-08-01 到 2026-10-20(UTC)区间跑官方示例策略,模拟本金 1000 USDT:

指标结果
交易次数73 次,赢 66 次、亏 7 次,胜率 90.4%
总收益+44.951 USDT(+4.50%)
最大回撤(已平仓)128.723 USDT(10.97%)
4 次止损合计−154.208 USDT
同期市场涨幅(Market change)+34.26%

这张表最值得记住的一点:胜率 90% 听起来很厉害,但 66 次小赚(按 ROI 止盈合计 +235.918 USDT)被 4 次止损和 2 笔回测结束时强制平仓的单子吃掉了一大半,最后只赚 4.5%;而同一时期这三个币平均涨了 34%。也就是说,这个示例策略在这段行情里还不如拿着不动。示例策略本来就是教学用的,这正是回测的价值:在亏真钱之前看清这类账。

避坑与解决方案 ​

交易所返回 451 或 403 ​

我们这次从云电脑测试交易所接口:Binance 返回 451,Bybit 返回 403,OKX 和 Kraken 正常。很多交易所会按所在地区限制访问。解决:换一家在你所在地合规可用的交易所,配置里的 exchange.name 改一下即可;不要为了绕过限制去违反交易所条款。

回测赚钱,实盘不一定赚 ​

回测没有滑点、成交延迟和情绪干扰,参数还可能被「调到刚好拟合历史」。官方提供了 lookahead-analysis 和 recursive-analysis 两个命令检查策略有没有偷看未来数据。解决:回测之后至少跑一段模拟盘,对比两者差距再做决定。

只看胜率 ​

上面的回测就是例子:胜率 90.4%,收益却跑输拿着不动。看报告时把总收益、最大回撤、Market change 放在一起看。

API 密钥权限给太大 ​

真要接实盘,交易所的 API 密钥只开「交易」权限,绝对不要开提现权限,并绑定 IP 白名单。在决定实盘之前,配置里的 key、secret 保持留空。

别点 README 里的邀请链接 ​

仓库 README 的交易所列表里有个别链接带邀请码。直接去交易所官网注册就好,本站也不放任何返佣链接。

WANGXXXL 实测于 2026-10-21 ​

  • 环境:Linux 云电脑,Python 3.12 虚拟环境,uv pip install freqtrade 装到 2026.9 版(CCXT 4.5.89)。
  • 数据:从 OKX 下载三个交易对 2026-08-01 起的 5 分钟 K 线,约 32 秒完成,SOL/USDT 一项就是 23,426 根 K 线。
  • 回测:约 6 秒跑完,结果见上面的表格,数字全部来自 Freqtrade 输出的报告。
  • 模拟盘:freqtrade trade 在 dry_run 模式下启动,日志显示 Dry run is enabled、状态 RUNNING 并按时输出心跳;我们只空跑了 45 秒确认能启动,没有接任何真实账户。