从Backtrader到Freqtrade:搭建自己的全自动量化平台
从Backtrader到Freqtrade:搭建自己的全自动量化平台
原创 原力量化 原力量化 2025年10月12日 09:24 海南
那年在Backtrader上栽的跟头
说起来也挺有意思的,刚接触量化交易时候,当时满脑子想的都是怎么把自己的策略变成代码跑起来。那会儿在知乎上到处翻帖子,看到好多人推荐Backtrader,说这玩意儿特别适合新手,文档全、社区活跃。
我记得很清楚,第一次用Backtrader写策略的时候,花了整整一个周末才搞明白它的数据结构。你知道那种感觉吗,明明Python基础还算OK,可是面对Backtrader的那套Lines对象系统,我是真的懵了好几天。
当时写出这段代码的时候,我还挺自豪的。回测跑出来收益曲线贼漂亮,年化收益30%+,最大回撤才10%。我天真地以为自己找到了圣杯,马上就能财富自由了。
现实给了我一巴掌。
Backtrader的美好与残酷
Backtrader确实有它的优点,这个我得承认。它的回测引擎设计得挺严谨的,支持各种复杂的订单类型,还能模拟滑点、手续费这些真实交易中的细节。回测报告也做得很详细,什么夏普比率、索提诺比率、年化收益这些指标一应俱全。
我在Backtrader上前前后后测试了差不多二十多个策略。有双均线的、有布林带突破的、还有趋势跟踪的。回测结果看着都挺不错,可是一到实盘就全变了样。
问题出在哪?
实盘的时候我才发现,Backtrader的实盘功能真的太弱了。它对接交易所的API支持很有限,很多时候你得自己写大量的代码去处理连接、重连、异常这些破事。而且它的整个架构是为回测设计的,实盘只是个附加功能。
有一次凌晨3点,我被手机闹钟吵醒——我设置的监控程序发现策略挂了。爬起来一看,原来是网络波动导致的连接中断,Backtrader没能自动重连,我的单子就那么挂在半空中。那次亏了差不多5%的本金。
从那之后我开始认真思考:我到底需要一个什么样的量化平台?
我想要的平台长什么样
在经历了无数个不眠之夜之后,我列了个清单:
必须有的功能:
-
7x24小时稳定运行,不能动不动就挂
-
自动重连,网络抖动不能影响交易
-
完善的风控系统,别一个失误就爆仓
-
支持主流交易所,对接要简单
-
配置要灵活,改个参数不用改代码
-
回测要准确,实盘表现得跟回测差不多才行
最好还能有的:
-
可视化界面,看数据方便点
-
策略市场,能参考别人的策略
-
社区活跃,遇到问题能有人帮忙
-
支持多种策略类型,不局限于某一类
我把这个清单发到几个量化交流群里,有个老哥回了我一句话:"你说的这不就是Freqtrade吗?"
第一次遇见Freqtrade
说实话,刚开始我对Freqtrade是有点抵触的。因为它主要面向加密货币市场,而我当时做的是股票。但是架不住那个老哥一直推荐,我就抱着试试看的心态装了一下。
这一试,真香。
Freqtrade的安装出乎意料的简单:
三行命令就搞定了。对比Backtrader那种需要自己配置一堆环境的麻烦,这简直太友好了。
配置文件也很直观,都是JSON格式的:
你看,每个参数都很容易理解。最大开仓数、保证金货币、每单金额,这些东西一目了然。改配置的时候也不用担心搞坏了整个系统。
策略开发:从痛苦到享受的转变
在Backtrader上写策略,你需要理解它那套独特的数据结构。什么Lines、Indicators、Observers,概念一堆。我当时光是理解这些概念就花了好几天。
Freqtrade不一样。它的策略写法非常直观:
看到了吗?策略就是三个函数:
populate_indicators
- 计算技术指标
populate_entry_trend
- 定义入场条件
populate_exit_trend
- 定义出场条件
数据就是标准的Pandas DataFrame,不需要学习什么特殊的数据结构。这对于熟悉Python数据分析的人来说,简直是零学习成本。
我花了一个晚上就把之前在Backtrader上写的几个策略都移植过来了。而且移植过来之后发现,代码量少了差不多40%,可读性还提高了。
回测:速度与准确性的平衡
回测是量化交易里最重要的环节之一。你的策略到底行不行,回测数据会给你答案。
Freqtrade的回测速度真的快。我之前在Backtrader上跑一个策略的3年数据,需要等差不多20分钟。同样的策略在Freqtrade上,2分钟就出结果了。
一行命令搞定。回测结果也很详细:
这个表格很清晰地展示了每个交易对的表现。胜率、平均收益、持仓时间这些关键指标都有了。
更厉害的是,Freqtrade还能生成HTML格式的可视化报告:
报告里有各种图表,收益曲线、回撤分析、月度收益这些一应俱全。我经常把这些报告拿来给朋友看,比干巴巴的数字有说服力多了。
实盘:真正的考验来了
回测做得再好,实盘才是检验策略的唯一标准。
Freqtrade在实盘方面的表现让我很满意。它内置了对几十个交易所的支持。配置也很简单:
填上API密钥,选择要交易的币对,就能开始跑了。
实盘运行的稳定性是我最关心的。Freqtrade在这方面做得真的好。它有完善的异常处理机制,网络断了会自动重连,订单出问题会及时通知你。我现在的策略已经连续运行了8个多月,中间只手动干预过两三次。
监控也很方便。Freqtrade支持Telegram机器人,所有的交易信号、开仓平仓、盈亏情况都会实时推送到手机上。
每次开单的时候,手机就会收到这样的消息:
平仓的时候也会通知:
这种实时反馈的感觉真的很爽。你随时都能知道策略在干什么,心里有底。
架构设计:全自动化的核心
搭建一个真正全自动的量化平台,你需要考虑很多东西。不只是策略本身,还有部署、监控、数据备份这些周边的事情。
我现在的架构大概是这样的:
这个架构看着复杂,实际跑起来还挺稳的。每个模块各司其职:
数据层:Freqtrade自己会从交易所拉取K线数据,不需要额外的数据源。它会把历史数据缓存在本地,启动速度很快。
交易层:Freqtrade核心负责策略执行和订单管理。它会根据策略信号自动下单、撤单、平仓。
存储层:所有的交易记录都会存到SQLite数据库里(你也可以用PostgreSQL)。这些数据用来做后续的分析和优化。
监控层:我用Prometheus收集运行数据,用Grafana做可视化。可以看到实时的订单数量、持仓情况、资金曲线这些。
通知层:Telegram Bot负责推送重要信息。不只是交易通知,系统异常、资金告警这些也会推送。
管理层:Freqtrade自带一个Web UI,可以在浏览器里查看策略状态、手动干预交易。
这套架构我跑了大半年,中间只出过一次小问题——服务器硬盘满了。现在加了个定时清理的脚本,基本不用管了。
风控:别让一次失误毁了所有努力
做量化交易,风控绝对是重中之重。再好的策略,没有风控兜底,早晚得爆仓。
Freqtrade的风控功能很全面。首先是仓位管理:
这里设置了最多同时持有5个仓位,可用资金的95%用来交易(留5%应对滑点和手续费)。单笔交易金额会根据总资金自动调整,这样可以保证每笔交易的风险都在控制范围内。
止损是风控的核心。Freqtrade支持多种止损方式:
追踪止损特别好用。当价格涨到2%的时候,止损线会自动上移到1%的位置。这样既保护了利润,又给了价格继续上涨的空间。
我还加了一个自定义的风控逻辑:
这个逻辑能避免长时间套牢。有时候策略判断失误了,与其一直等着,不如早点止损出来。
还有一个很重要的风控措施是资金告警:
当账户余额跌破初始资金的80%时,系统会发送告警。这个时候我会停下来检查策略哪出问题了,避免继续亏损。
优化:让策略更赚钱的秘诀
策略开发出来只是第一步,怎么优化才是关键。
Freqtrade有个超级好用的功能叫Hyperopt,可以自动优化策略参数。比如你的策略里有RSI的阈值、均线的周期这些参数,Hyperopt可以帮你找到最优的组合。
运行优化很简单:
它会跑1000次回测,每次用不同的参数组合,然后告诉你哪组参数表现最好。
我一般会把优化过程分成几个阶段:
第一阶段:粗调
先用较宽的参数范围和较少的epoch数,快速找到大概的方向。
第二阶段:细调
在第一阶段找到的区域内,缩小参数范围,增加epoch数,精确寻找最优解。
第三阶段:稳定性测试
用找到的参数在不同的时间段回测,看看是不是过拟合了。
第四阶段:模拟盘验证
在模拟盘上跑一段时间,确认实盘表现跟回测差不多。
这个流程走下来通常需要一到两周,但是值得。经过优化的策略收益能提升20%-30%,稳定性也会好很多。
多策略组合:鸡蛋不要放在一个篮子里
单一策略再好,也有它的局限性。趋势策略在震荡市不行,震荡策略在趋势市也不灵。最好的办法是多策略组合。
Freqtrade支持同时运行多个策略:
每个策略用独立的配置文件,互不干扰。我现在同时跑着4个策略:
-
趋势跟踪策略:捕捉大行情
-
网格策略:在震荡市赚差价
-
套利策略:不同交易所间的价差套利
-
高频策略:做市商策略,赚取价差
这4个策略的相关性很低,组合起来收益曲线特别平滑。单个策略可能会有较大回撤,但是组合起来回撤就小多了。
资金配置我是这样分的:
-
趋势跟踪:40%(收益高但回撤也大)
-
网格策略:30%(收益稳定)
-
套利策略:20%(几乎无风险,但收益低)
-
高频策略:10%(试验性质)
数据分析:从交易记录中学习
Freqtrade会记录所有的交易细节。这些数据是个宝库,好好分析能发现很多问题。
导出交易数据很简单:
freqtrade show-trades --db-url sqlite:///user_data/tradesv3.sqlite
或者直接用Python读取:
通过这些分析,我发现了几个有意思的规律:
-
早上8-10点开的单胜率最高(大概是因为亚洲市场开盘)
-
持仓时间超过48小时的单子,亏损概率明显增加
-
周末的交易成本(滑点)比工作日高30%左右
基于这些发现,我调整了策略:
-
增加了早盘时段的仓位权重
-
添加了48小时强制平仓的规则
-
周末降低交易频率
调整后策略表现明显改善了。
部署:让系统7x24小时运行
开发完策略,下一步就是部署。你需要一台能7x24小时运行的服务器。
我用的是云服务器,配置不需要太高。2核4G的机器就够了,一个月成本100块左右。
部署流程很简单:
systemd配置文件这样写:
启动服务:
这样配置之后,就算服务器重启,Freqtrade也会自动启动。进程挂了会自动重启,很省心。
我还配置了一个监控脚本,每5分钟检查一次进程状态:
用crontab定时执行:
*/5 * * * * /usr/bin/python3 /home/ubuntu/check_freqtrade.py
常见的坑和解决方案
搞量化这么久,踩过的坑真不少。我把一些典型的问题记录下来,希望能帮你少走弯路。
坑1:回测过拟合
症状:回测表现特别好,实盘一塌糊涂。
原因:参数优化过度,策略只适合历史数据。
解决:
-
用Walk Forward方法验证
-
在多个时间段测试
-
避免过多的参数和条件
坑2:滑点和手续费
症状:实盘收益比回测差很多。
原因:回测时没考虑交易成本。
解决:
坑3:资金管理不当
症状:单笔亏损过大,爆仓风险高。
原因:没有合理的仓位控制。
解决:
-
单笔风险控制在2%以内
-
总仓位不超过80%
-
使用凯利公式计算仓位
坑4:网络问题
症状:经常断线、订单失败。
原因:网络不稳定或延迟高。
解决:
-
选择靠近交易所机房的服务器
-
配置重连机制
-
使用WebSocket而不是REST API
坑5:数据质量
症状:策略信号异常、订单价格偏差大。
原因:K线数据有缺失或错误。
解决:
监控和告警:别让策略失控
再稳定的系统也需要监控。我配置了多层告警机制:
第一层:Telegram实时通知所有交易动作、异常情况都会推送到手机。
第二层:邮件日报每天早上会收到前一天的交易总结,包括盈亏、胜率、持仓情况。
第三层:Grafana可视化实时看板显示关键指标,异常时会触发告警。
我配置的告警规则:
-
单日亏损超过5%
-
连续5单亏损
-
持仓超过10个
-
可用余额低于初始资金的80%
-
系统超过5分钟没有心跳
这些告警让我睡得很安心。就算半夜出问题,手机也会第一时间通知我。
策略迭代:永远在进步的路上
做量化不是一锤子买卖。市场在变,策略也要跟着变。
我的策略迭代流程是这样的:
1. 收集问题每周复盘,记录策略表现不佳的情况。比如连续亏损、单笔大亏这些。
2. 分析原因用数据说话。是市场环境变了?还是策略逻辑有缺陷?
3. 提出假设基于分析结果,提出改进方案。比如"增加波动率过滤能减少震荡市的亏损"。
4. 回测验证用历史数据测试改进方案。看看是不是真的有效。
5. 模拟盘测试在模拟环境跑两周,观察实际表现。
6. 小仓位实盘确认没问题后,用10%的仓位实盘测试一个月。
7. 全面推广验证通过后,逐步增加到正常仓位。
这个流程走一遍通常需要1-2个月。慢是慢了点,但是安全啊。我见过太多人改了策略直接上实盘,结果一天亏了一个月的利润。
给新手的建议
如果你也想开始量化交易,我有几个建议:
1. 从模拟盘开始别急着投真金白银。先在模拟环境跑几个月,熟悉整个流程。
2. 小资金试水开始实盘的时候,用小额资金。几千块就够了。亏了不心疼,赚了也能建立信心。
3. 记录和复盘每次交易都要记录。为什么开仓?为什么平仓?结果如何?定期复盘能帮你快速成长。
4. 控制风险永远把风控放在第一位。策略可以慢慢优化,但是本金不能亏光。
5. 保持学习技术指标、统计方法、编程技巧,这些都要不断学习。订阅一些优质的量化交易内容,关注行业动态。
6. 保持耐心量化交易不是暴富的工具。它是一个稳定获取收益的方式。不要指望一夜翻倍。
7. 找到适合自己的节奏有人喜欢高频交易,有人喜欢长线持有。找到适合自己的方式最重要。
写在最后的话
从Backtrader到Freqtrade,从手动交易到全自动化,这一路走来真的学到了很多。量化交易不只是写代码、调参数这么简单,它涉及金融、统计、计算机等多个领域的知识。
更重要的是,它让我对市场有了更深的理解。通过数据和代码,你能看到市场规律,能发现人性的弱点,能找到稳定盈利的方式。
现在我的系统已经稳定运行快一年了。虽然不能每天都赚钱,但是整体趋势向上。看着资金曲线慢慢往上爬,那种感觉真的很好。
如果你也对量化交易感兴趣,不妨试试Freqtrade。它的学习曲线不陡,功能很全面,社区也很活跃。我相信只要肯花时间研究,你也能搭建出属于自己的全自动量化平台。
记住,市场永远是对的。我们要做的,是找到自己的位置,用正确的方法,稳定地赚钱。