第一章:策略开发环境搭建
做量化交易,第一件事不是写策略,而是搭环境。
我见过太多人,策略逻辑想得挺完美,结果一跑代码报错——库没装、版本冲突、路径不对。折腾半天,热情全没了。
所以这一章,咱们把地基打牢。后面30章,你只管写策略,环境问题不会再烦你。
1.1 Anaconda:量化交易者的瑞士军刀
Anaconda是什么?说白了,它是一个Python发行版,帮你把Python解释器、包管理器、常用科学计算库打包在一起。你不需要一个个去官网下载,装一个Anaconda,基本就齐活了。
为什么选Anaconda?
- 环境隔离:每个项目可以建一个独立环境,互不干扰。我有个策略用pandas 0.25,另一个用1.3,放在不同环境里,各跑各的,不会打架。
- conda包管理器:比pip更智能,能自动处理依赖冲突。我在项目中遇到过pip装包装到一半报错,换成conda一次搞定。
- 预装常用库:numpy、pandas、matplotlib这些,装完Anaconda就有了,省去不少时间。
安装步骤:
- 打开Anaconda官网,下载对应操作系统的安装包(Windows/Mac/Linux)。
- 双击安装,一路默认选项就行。但注意:安装路径不要有中文,否则后面会出一些莫名其妙的错误。
- 安装完成后,打开终端(Windows叫Anaconda Prompt),输入
conda --version,看到版本号就说明装好了。
1.2 Jupyter Notebook:交互式开发的利器
Jupyter Notebook是量化策略开发的标配。为什么?因为你可以一边写代码,一边看结果,还能加注释、画图表。调试策略时特别方便。
配置Jupyter:
- 安装完成后,终端输入
jupyter notebook,浏览器会自动打开一个页面。 - 如果想换个工作目录,可以先生成一个配置文件:
jupyter notebook --generate-config。 - 然后找到配置文件,修改
c.NotebookApp.notebook_dir为你想要的路径。
嗯,这里要注意:Jupyter默认的端口是8888。如果你同时开多个项目,可以用 jupyter notebook --port 9999 指定不同端口。
1.3 常用Python量化库安装
量化策略离不开几个核心库。我按使用频率排个序,你照着装就行。
| 库名 | 用途 | 安装命令 |
|---|---|---|
| pandas | 数据处理、时间序列分析 | conda install pandas |
| numpy | 数值计算、矩阵运算 | conda install numpy |
| matplotlib | 数据可视化、画K线图 | conda install matplotlib |
| tushare | A股数据接口(免费版够用) | pip install tushare |
| akshare | 全市场数据接口(股票、期货、基金) | pip install akshare |
安装注意事项:
- pandas、numpy、matplotlib用conda装,因为conda会帮你处理好底层依赖(比如BLAS库)。
- tushare和akshare用pip装,因为它们更新频繁,conda源可能不是最新版。
- 装完后,在Python里
import pandas as pd试试,不报错就说明成功了。
我的经验: 刚开始做量化时,我直接用pip装所有库。结果有一次pandas和numpy版本不兼容,回测结果全是NaN。排查了两天才发现是版本问题。从那以后,核心科学计算库一律用conda,数据接口库用pip。这个习惯我一直保持到现在。
1.4 验证环境:跑一个简单的量化示例
环境搭好了,咱们跑个简单的例子验证一下。用tushare获取贵州茅台的历史数据,画个收盘价走势图。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import tushare as ts
# 获取贵州茅台历史数据
df = ts.get_k_data('600519', start='2023-01-01', end='2023-12-31')
# 计算20日均线
df['ma20'] = df['close'].rolling(window=20).mean()
# 画图
plt.figure(figsize=(12, 6))
plt.plot(df['date'], df['close'], label='收盘价')
plt.plot(df['date'], df['ma20'], label='20日均线')
plt.xticks(rotation=45)
plt.legend()
plt.title('贵州茅台 2023年走势')
plt.show()
如果能看到一张漂亮的走势图,恭喜你,环境搭建成功了!
ts.set_token('你的token') 就行。
1.5 本章知识体系
为了让你更直观地理解本章内容,我画了一张结构图。它展示了从安装到验证的完整流程,以及每个环节的关键点。
环境搭建这件事,看起来琐碎,但值得花时间做好。我见过太多人因为环境问题浪费大量时间,最后策略没写几行,全在折腾安装。
你按这个流程走一遍,后面写策略时就不会被环境问题打断思路。嗯,这就是所谓的「磨刀不误砍柴工」。
公众号:蓝海资料掘金营,微信deep3321