Python绘制单只股票及其20日移动平均线的相关公式查询
Python绘制单只股票及20日移动平均线完整方案
前置准备
你需要先安装3个常用Python库,执行以下命令即可:
pip install pandas matplotlib yfinance
- pandas:用于处理时间序列数据,自带滑动窗口计算方法,可直接算出均线值
- matplotlib:用于绘制可视化图表
- yfinance:免费调取公开的全球股票交易历史数据,如果你已经有本地股票数据可以不用安装
20日移动平均线基础说明
20日移动平均线(20MA)本质是连续20个交易日收盘价的算术平均值,每日更新时剔除20个交易日前的旧收盘价、加入当日新收盘价重新计算即可。它可以过滤掉股价的短期随机波动,更直观反映股价的中期运行趋势。
完整可运行代码
import pandas as pd import matplotlib.pyplot as plt import yfinance as yf # 1. 拉取股票数据,替换代码即可更换标的 # A股标的需加后缀:.SS代表上交所,.SZ代表深交所,比如600519.SS是贵州茅台 stock_code = "AAPL" # 拉取最近1年的日度交易数据 stock_data = yf.download(stock_code, period="1y") # 2. 核心:计算20日移动平均线,仅需1行代码 stock_data['20MA'] = stock_data['Close'].rolling(window=20).mean() # 3. 绘制图表 plt.figure(figsize=(12,6), dpi=100) # 绘制收盘价曲线 plt.plot(stock_data['Close'], label=f'{stock_code} 收盘价', color='#1f77b4', linewidth=1) # 绘制20日均线曲线 plt.plot(stock_data['20MA'], label='20日移动平均线', color='#ff7f0e', linewidth=2) # 图表样式配置 plt.title(f'{stock_code} 股价及20日均线走势', fontsize=14) plt.xlabel('日期', fontsize=12) plt.ylabel('价格(元/美元)', fontsize=12) plt.legend() plt.grid(alpha=0.3) plt.rcParams['font.sans-serif'] = ['SimHei'] # 解决Windows下中文显示问题 plt.rcParams['axes.unicode_minus'] = False plt.show()
关键说明
- 均线计算的核心逻辑是
rolling(window=20).mean(),如果要计算5日、60日等其他周期的均线,把window参数改成对应数值即可 - 如果你有本地存储的股票数据,直接用
pd.read_csv()读取后,确保有一列是收盘价,再执行均线计算逻辑即可 - 若图表中文显示异常,可根据你的操作系统替换对应的中文字体配置
内容的提问来源于stack exchange,提问作者Angelo
相关产品推荐
相关产品推荐

