一、核心概念: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 rollingrolling(window=5).mean()是计算滚动均值(均线)的核心;
  • 交易信号:通过对比当日和前一日的均线位置,判断金叉 / 死叉,生成买卖信号;
  • Matplotlib:把价格、均线、买卖点可视化,直观看到策略效果。

五、进阶方向(入门后可学)

  1. 用 Backtrader/VnPy 做专业回测(计算收益率、最大回撤、夏普比率等);
  2. 对接券商 API 实现模拟 / 实盘交易(需要券商支持);
  3. 编写更复杂的策略(比如多因子策略、趋势策略、套利策略);
  4. 学习量化风控(比如设置止损、仓位管理)。

总结

  1. Python 量化核心是数据获取→策略编写→回测验证→实盘交易的闭环,入门先掌握 Tushare+Pandas+Matplotlib;
  2. 均线策略是最基础的量化策略,适合新手理解核心逻辑;
  3. 量化交易≠稳赚,回测盈利不代表实盘盈利,实盘前一定要充分模拟和风控。
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐