遇事不决,可问春风
量化之路(二):从零到一搭建Python量化交易系统
上一篇写了量化入门的基础知识,从数据获取到双均线策略回测。但老实说,写完那篇之后我自己用着总觉得差点意思——零散的函数、手动跑代码、看结果还得翻终端。于是决定把这个项目认真整一整,从几个零散的脚本演进成一个完整可用的量化交易系统。
这篇文章记录完整开发流程。
一、环境准备:PyCharm + Python 3.14 + 虚拟环境
系统:Windows 11,Python 3.14.6,PyCharm 2025.3,venv虚拟环境
依赖:numpy, pandas, matplotlib, scipy, akshare, streamlit, ta-lib, baostock
踩坑:Windows GBK编码不认emoji,safe_print()解决
二、项目结构设计
层级结构:data_fetcher.py → indicators.py → strategies/ → backtest/engine.py → app/dashboard.py
三、技术指标库
从5个到15个:MA, MACD, RSI, KDJ, WR, CCI, BOLL, ATR, ADX, OBV, PSY, BIAS, ROC, SAR
四、策略库:从2个到8个
均线交叉、MACD、布林带反转、RSI超买超卖、KDJ、海龟交易、CCI、ADX趋势跟踪。每个策略返回带position列的DataFrame。
核心代码示例:均线金叉买入死叉卖出策略,海龟交易用唐奇安通道突破+ATR止损。
五、回测引擎
轻量级回测引擎BacktestEngine,自动计算总收益率、年化收益率、夏普比率、最大回撤、胜率、交易次数。
六、Web看板
Streamlit四个标签页:K线分析、策略回测(8策略对比)、绩效报告、情绪分析。
七-八、功能优化与情绪分析
优化:点获取数据自动跑全部策略、情绪绑定左侧、策略联动股票。情绪分析通过东方财富接口获取参与意愿、关注指数等数据。
九、Bug修复
Bug1: 信号函数必须返回position列。Bug2: ImportError缓存污染清pycache。Bug3: GBK编码加safe_print()。
十、策略排名
平安银行2026上半年测试:布林带反转胜率100%居首,趋势策略全亏损。原因是震荡行情(ADX均值18.3<25)。
技术感悟:不要为了用框架而用框架。自己写的更灵活。
遇事不决,可问春风 —— 小monster 🐱