Python量化
·
一、核心概念:Python 量化是什么?
Python 量化,简单来说就是用 Python 代码实现金融交易的自动化分析、策略回测、实盘交易。相比手动交易,它的优势是:
- 效率高:能快速处理海量行情数据
- 无情绪:严格执行策略,避免人性弱点
- 可回测:用历史数据验证策略是否有效
- 可自动化:7x24 小时监控市场(股票 / 期货 / 数字货币等)
二、Python 量化核心库(入门必学)
表格
| 库名称 | 核心用途 | 难度 |
|---|---|---|
| Tushare | 免费获取股票 / 基金 / 期货等行情数据 | 🌟 |
| Pandas | 数据清洗、分析、计算(比如算均线) | 🌟🌟 |
| NumPy | 数值计算(比如策略指标运算) | 🌟🌟 |
| Matplotlib/Plotly | 可视化行情、策略收益曲线 | 🌟🌟 |
| Backtrader/VnPy | 策略回测、模拟交易、实盘对接 | 🌟🌟🌟 |
三、Python 量化实战核心流程

graph TD
A[获取行情数据] --> B[数据清洗/预处理]
B --> C[编写交易策略]
C --> D[回测(用历史数据验证)]
D --> E{回测达标?}
E -- 是 --> F[模拟交易]
E -- 否 --> C
F --> G{模拟盈利?}
G -- 是 --> H[实盘交易]
G -- 否 --> C
四、入门实战示例(均线策略)
下面是一个极简的 Python 量化入门示例,实现「5 日均线金叉 20 日均线买入,死叉卖出」的经典策略,用 Tushare 获取数据,Pandas 分析,Matplotlib 画图。
1. 前置准备(安装依赖)
bash
运行
pip install tushare pandas matplotlib
注:Tushare 需要注册获取 token(免费),
2. 完整代码(可直接运行)
python
运行
import tushare as ts
import pandas as pd
import matplotlib.pyplot as plt
# 1. 设置Tushare token(替换成你的)
ts.set_token("你的Tushare token")
pro = ts.pro_api()
# 2. 获取股票历史数据(以贵州茅台600519为例,近1年日线数据)
df = pro.daily(ts_code="600519.SH", start_date="20250305", end_date="20260305")
# 3. 数据预处理:按时间排序,计算5日和20日均线
df = df.sort_values(by="trade_date") # 按交易日期升序排列
df["ma5"] = df["close"].rolling(window=5).mean() # 5日均线
df["ma2"] = df["close"].rolling(window=20).mean() # 20日均线
# 4. 生成交易信号:金叉(买入)=1,死叉(卖出)=0
df["signal"] = 0 # 初始化信号
# 金叉:5日均线从下往上穿过20日均线
df.loc[(df["ma5"] > df["ma2"]) & (df["ma5"].shift(1) <= df["ma2"].shift(1)), "signal"] = 1
# 死叉:5日均线从上往下穿过20日均线
df.loc[(df["ma5"] < df["ma2"]) & (df["ma5"].shift(1) >= df["ma2"].shift(1)), "signal"] = 0
# 5. 可视化行情和均线、交易信号
plt.rcParams["font.sans-serif"] = ["SimHei"] # 显示中文
plt.figure(figsize=(12, 6))
# 绘制收盘价
plt.plot(df["trade_date"], df["close"], label="收盘价", color="blue")
# 绘制均线
plt.plot(df["trade_date"], df["ma5"], label="5日均线", color="red")
plt.plot(df["trade_date"], df["ma2"], label="20日均线", color="green")
# 标记买入信号(红色三角)
buy_points = df[df["signal"] == 1]
plt.scatter(buy_points["trade_date"], buy_points["close"], marker="^", color="red", s=100, label="买入")
# 标记卖出信号(绿色三角)
sell_points = df[df["signal"] == 0]
plt.scatter(sell_points["trade_date"], sell_points["close"], marker="v", color="green", s=100, label="卖出")
plt.title("贵州茅台均线策略示例")
plt.xlabel("交易日期")
plt.ylabel("价格(元)")
plt.legend()
plt.xticks(rotation=45) # 日期旋转45度,避免重叠
plt.tight_layout() # 自适应布局
plt.show()
# 6. 简单输出交易信号汇总
print("买入信号数量:", len(df[df["signal"] == 1]))
print("卖出信号数量:", len(df[df["signal"] == 0]))
3. 代码关键解释
- Tushare:核心是
pro.daily()获取日线数据,需要替换自己的 token 才能用; - Pandas rolling:
rolling(window=5).mean()是计算滚动均值(均线)的核心; - 交易信号:通过对比当日和前一日的均线位置,判断金叉 / 死叉,生成买卖信号;
- Matplotlib:把价格、均线、买卖点可视化,直观看到策略效果。
五、进阶方向(入门后可学)
- 用 Backtrader/VnPy 做专业回测(计算收益率、最大回撤、夏普比率等);
- 对接券商 API 实现模拟 / 实盘交易(需要券商支持);
- 编写更复杂的策略(比如多因子策略、趋势策略、套利策略);
- 学习量化风控(比如设置止损、仓位管理)。
总结
- Python 量化核心是数据获取→策略编写→回测验证→实盘交易的闭环,入门先掌握 Tushare+Pandas+Matplotlib;
- 均线策略是最基础的量化策略,适合新手理解核心逻辑;
- 量化交易≠稳赚,回测盈利不代表实盘盈利,实盘前一定要充分模拟和风控。
更多推荐
所有评论(0)