股票的k线
前言:扫盲k线:
K线是一条柱状的线条,由影线和实体组成。影线在实体上方的部分叫上影线,下方的部分叫下影线。实体分阳线和阴线。其中影线表明当天交易的最高和最低价,而实体表明当天的开盘价和收盘价。
5、阴阳线
阴阳代表股价的趋势,在K线图中,阳线表示股价将继续上涨;阴线表示股价继续下跌。股价涨跌本质是由股票买卖的供求关系决定,也可以说是由买卖双方力量来决定。一般来说股价运行具有惯性。特别是大阴线与大阳线,在放量的情况下具有非常大的后市指示作用。
6、实体大小
实体大小代表股价运行内在动力,实体越大,上涨或下跌的趋势越明显,反之趋势越不明显。所以在大部分趋势确认的行情中,实体都比较大;而震荡市中,实体都比较小。由于趋势具有惯性,惯性的结束可以从K线的变化中看出端倪。当连续大阴或大阳以后出现小阴小阳,这说明趋势可能会暂缓,并且进入调整状态。如果在震荡行情中,连续的小阴小阳以后出现大阳大阴,这说明震荡趋势肯能结束,趋势行情将展开
7、影线长短
影线代表股价反转的信号,特别是在重要的支撑位与压力位附近。它构成下一阶段股价继续前进的阻力,无论K线是阳还是阴,向某个方向的影线越长,越不利于股价超整个方向变动。即长上影线越长,越不利于股价上涨,股价调整后下行的可能性越大;下影线越长,越不利于股价下跌,股价调整后上涨可能性大。(仅仅是概率大小的区别,在行情比较稳定的情况下,趋势的惯性仍然会占据主导地位。)
8、K线类型
A,大盘K线图与个股K线图
大盘K线图与个股K线图就K线本身来说是一致的,判断方法也是一致的,只是表达含义的对象不同罢了。
如果大盘K线收阳,而个股K线的阳线小于大盘K线,甚至还收阴线;则说明个股弱于大盘(即弱于市场平均水平)。如果大盘K线收阴,而个股K线的阴线小于大盘K线,甚至收阳线;则说明个股强于大盘(即强于市场平均水平)。
B,月K线,周K线,日K线,60分钟K线。。。。。。
根据K线的计算周期,可以把K线分为年,月,周,日,60分钟。。。。。。K线。一般月,周K线适合作为中长线投资者看盘工具。
日K线对该股短期的历史行情记录最为准确和详尽,是适合短线投资者的看盘工具。由于股票市场缺乏T+0机制,所以60分钟以下的K线图都不太具备太大的参考价值。(超级短线除外)
二、单根k线的含义
k线的基本形态
1、小阳星
全日中股价波动很小,开盘价与收盘价极其接近,收盘价略高于开盘价。小阳星的出现,表明行情正处于混乱不明的阶段,后市的涨跌无法预测,此时要根据其前期K线组合的形状以及当时所处的价位区域综合判断。
2、小阴星
小阴星的分时走势图与小阳星相似,只是收盘价格略低于开盘价格。表明行情疲软,发展方向不明。
3、下影阳线:
它的出现,表明多空交战中多方的攻击沉稳有力,股价先跌后涨,行情有进一步上涨的潜力。
4、上影阳线:
显示多方攻击时上方抛压沉重,涨势不强。表示多方上攻受阻回落,上挡抛盘较重。能否继续上升局势尚不明朗。
5、穿头破脚阳线 :
股价走出如图所示的图形说明多方已占据优势,并出现逐波上攻行情,股价在成交量的配合下稳步升高,预示后市看涨。
6、光头阳线:
光头阳线若出现在低价位区域,在分时走势图上表现为股价探底后逐浪走高且成交量同时放大,预示为一轮上升行情的开始。如果出现在上升行情途中,表明后市继续看好。
7、光脚阳线:
表示上升势头很强。
8、光头光脚阳线:
表明多方已经牢固控制盘面,逐浪上攻,步步逼空,涨势强烈。
9、光脚阴线:
光脚阴线的出现表示股价虽有反弹,但上档抛压沉重。空方趁势打压使股价以阴线报收。
10、光头阴线:
如果这种线型出现于低价位区,说明股价有反弹迹象,但力度不大。
11、大阴线:
如果股价走出如图所示的逐波下跌的行情,这说明空方已占尽优势,多方无力抵抗,后市看淡。
12、十字星
十字星是指收盘价和开盘价在同一价位或者相近,没有实体或者实体极小。十字星的重要程度取决于出现的位置,如果在震荡区域中出现十字星,实战意义不大,如果在连续的趋势行情中突然出现十字星,则需要引起高度关注,因为变盘可能即将发生。
十字星表示着多空双方的力量均等,如果在震荡趋势中,多空双方的对战实力本来就比较平衡,所以震荡中的十字星意义不大。如果在强劲的趋势中突然出现十字星,则表示当前趋势中的优势力量开始减弱或者消失,达到了多空力量平衡的状态,则预示着变盘的可能性将会加大。
十字星运用要点:
1,出现的位置,特别是在重要的支撑位于压力位出现十字星,意义重大
2,反转的确认需要接下来几天K线的表现
股票数据分析是金融领域中非常重要的应用,通过对历史数据的挖掘和可视化,我们可以更好地理解股票走势、成交量变化等关键信息。本案例将涵盖数据获取、预处理、统计分析及可视化等全流程,让我们一步步展开学习。
一、概述
在股票数据分析中,我们通常需要完成以下核心任务:获取股票历史数据、对数据进行预处理(如清洗、归一化)、通过可视化手段展示股票走势图、收盘价趋势、成交量变化、涨跌情况,以及绘制专业的 K 线图。
本次案例将使用多个 Python 库协同完成这些任务:
- Tushare:用于获取股票历史数据,这是一个免费的财经数据接口包,能便捷地获取股票代码、开盘价、收盘价等关键信息。
- Pandas:处理和分析数据的核心库,用于数据清洗、转换和聚合。
- Matplotlib:绘制各类图表,如折线图、成交量时间序列图等。
- Mplfinance:专门用于绘制股票 K 线图的工具库,能生成专业的金融图表。
通过这些工具的结合,我们将实现从数据获取到可视化分析的完整流程,最终得到清晰直观的股票分析结果。
二、案例效果预览
在正式开始前,我们先预览一下本次案例的主要成果,让大家对分析目标有更清晰的认识:
- 可视化股票走势图:展示开盘价、最高价、最低价、收盘价及成交量的归一化走势,便于对比各指标的变化趋
- 股票收盘价格走势图:单独呈现收盘价随时间的变化,直观反映股票价格的整体波动。
- 股票成交量时间序列图:展示成交量的变化情况,成交量往往能反映市场活跃度。
- 股票涨跌情况分析图:通过对数收益率分析股票每日的涨跌幅度,辅助判断短期趋势。
- 股票 K 线走势图:专业的 K 线图,包含开盘价、收盘价、最高价、最低价及成交量,是股票分析的核心图表。
这些图表将从不同维度揭示股票数据的特征,为投资决策提供参考。
三、案例环境与前期准备
1. 环境配置
本次案例需要以下环境和工具:
- 操作系统:Windows 10
- Python 版本:3.9 及以上
- 开发工具:Anaconda3、Jupyter Notebook
- 第三方模块:pandas、openpyxl、xlrd、xlwt、numpy、matplotlib、tushare、mplfinance
确保这些工具和库已正确安装,是顺利完成分析的基础。
2. 前期准备步骤
(1)安装第三方模块
- Tushare 模块:打开 Anaconda Prompt,输入命令pip install tushare,用于获取股票数据。
- Mplfinance 模块:同样在 Anaconda Prompt 中输入pip install mplfinance,用于绘制 K 线图。
其他常用库(如 pandas、matplotlib)通常已包含在 Anaconda 中,若未安装,可使用类似pip install pandas的命令补充安装。
(2)新建 Jupyter Notebook 文件
- 打开 Jupyter Notebook,在界面中点击 “New”→“Python 3” 创建新文件,并命名为 “Python 股票数据分析”,方便后续代码管理和运行。
(3)导入必要的模块
在 Jupyter Notebook 中导入案例所需的库:
import pandas as pd import tushare as ts import matplotlib.pyplot as plt import mplfinance as mpf import numpy as np import matplotlib.dates as mdates |
这些库将分别用于数据处理、数据获取、图表绘制、日期处理等功能。
(4)获取股票历史数据
使用 Tushare 模块获取股票代码为 “600000” 的历史数据(以浦发银行为例),并导出为 Excel 方便后续使用:
# 获取股票历史数据 df = ts.get_hist_data('600000') # 显示前10条数据 df.head(10) # 导出为Excel(可选) df.to_excel('股票历史数据.xlsx') |
获取的数据包含开盘价(open)、最高价(high)、最低价(low)、收盘价(close)、成交量(volume)等关键指标,以及均线(ma5、ma10 等)和换手率(turnover)等辅助信息。
四、数据预处理
获取数据后,需要进行预处理,确保数据质量和可用性,主要包括以下步骤:
1. 数据查看与缺失性分析
- 查看数据集形状:使用df.shape了解数据的行数和列数(本例为 605 行、14 列)。
- 查看摘要信息:通过df.info()查看各列的数据类型、非空值数量,确认是否存在缺失值。本例中所有列均为 605 个非空值,无缺失。
- 检查空值:用df.isnull().any()进一步验证,结果均为 False,说明数据完整。
2. 描述性统计分析
使用df.describe()获取数据的统计信息,包括均值、标准差、最小值、分位数、最大值等。例如:
- 开盘价(open)的均值为 8.835,中位数为 8.75,说明价格分布相对集中。
- 成交量(volume)的最大值达 2034989,远高于均值 414374.6,提示可能存在异常值。
这些统计量能帮助我们快速把握数据的整体分布特征。
3. 数据处理
- 抽取特征数据:本次分析聚焦于 open、high、low、close、volume 这 5 个核心指标,因此抽取这些列:
feature_data = df[['open', 'high', 'low', 'close', 'volume']].sort_values(by='date') |
- 排序数据:按日期升序排序,确保时间序列的连续性。
4. 异常值分析
通过箱形图检测异常值:
feature_data.boxplot() |
结果显示成交量(volume)存在明显异常值,但考虑到股票成交量本身可能出现极端波动,本次分析选择保留异常值,不做处理。
5. 数据归一化处理
为了便于多指标对比(如价格和成交量的量级差异较大),采用 0-1 标准化将数据映射到 [0,1] 区间:
normalize_data = (feature_data - feature_data.min()) / (feature_data.max() - feature_data.min()) |
归一化后,各指标在同一量级上,便于在同一张图表中展示。
五、数据统计分析与可视化
1. 可视化股票走势图
使用归一化后的数据,绘制多指标折线图,对比开盘价、最高价、最低价、收盘价和成交量的走势:
plt.style.use('seaborn-whitegrid') normalize_data.plot(figsize=(9,5)) plt.show() |
图表中,各指标的趋势变化一目了然,例如价格指标(open、high 等)的波动趋势较为一致,而成交量(volume)则呈现独立的波动特征。
2. 股票收盘价格走势图
单独提取收盘价(close)绘制折线图,聚焦价格变化:
plt.subplots(figsize=(9,4)) plt.style.use('seaborn-whitegrid') feature_data['close'].plot(grid=False, color='blue') plt.show() |
从图中可以清晰看到 2020 年 8 月至 2023 年 2 月期间,股票收盘价的整体下行趋势,以及中途的阶段性波动。
3. 股票成交量时间序列图
绘制成交量的时间序列图,分析市场活跃度:
plt.subplots(figsize=(9,4)) plt.rcParams['font.sans-serif'] = ['SimHei'] # 解决中文乱码 plt.gca().get_yaxis().get_major_formatter().set_scientific(False) # 取消科学计数法 feature_data['volume'].plot(color='red') plt.title('2020-2023年股票成交量时间序列图', fontsize=15) plt.ylabel('volume') plt.xlabel('date') plt.show() |
图表显示成交量存在多次峰值,说明期间存在阶段性交易活跃期,可能与市场事件或政策相关。
4. 股票涨跌情况分析图
通过对数收益率分析股票每日涨跌:
- 抽取指定日期范围的收盘价:
mydate1 = feature_data.loc['2022-09-05':'2023-01-31'] mydate_close = mydate1['close'] |
- 计算对数收益率:
log_change = np.log(mydate_close) - np.log(mydate_close.shift(1)) |
对数收益率反映了当日相对于前一日的涨跌幅度,正值为涨,负值为跌。
- 绘制走势图并添加水平线:
fig, ax = plt.subplots(figsize=(11,5)) ax.plot(log_change) ax.axhline(y=0, color='red') # 0轴为涨跌分界线 plt.gca().xaxis.set_major_locator(mdates.WeekdayLocator()) # 按星期定位刻度 plt.gcf().autofmt_xdate() # 自动旋转日期标签 plt.show() |
图中,红线以上为上涨,以下为下跌,能直观反映短期涨跌频率和幅度。
5. 股票 K 线走势图
使用 Mplfinance 绘制专业 K 线图,包含价格和成交量信息:
- 抽取指定日期范围的数据:
mydate2 = feature_data['2023-01-05':'2023-02-15'] mydate2.index = pd.to_datetime(mydate2.index) # 转换索引为日期类型 |
- 自定义颜色和样式:
mc = mpf.make_marketcolors( up='red', # 上涨K线为红色 down='green', # 下跌K线为绿色 edge='i', # 边缘颜色继承自涨跌颜色 volume='i', # 成交量颜色继承自涨跌颜色 wick='i' # 影线颜色继承自涨跌颜色 ) mystyle = mpf.make_mpf_style(base_mpl_style="ggplot", marketcolors=mc) |
- 绘制 K 线图,包含 3 日、6 日、9 日均线和成交量:
mpf.plot(mydate2, type='candle', style=mystyle, volume=True, mav=(3,6,9)) plt.show() |
K 线图中,红色实体表示收盘价高于开盘价(上涨),绿色实体表示收盘价低于开盘价(下跌),上下影线分别对应最高价和最低价,下方柱状图为成交量,均线则帮助识别趋势。
六、总结
本次案例通过 Python 实现了股票数据的全流程分析,从数据获取到可视化呈现,我们掌握了:
- 使用 Tushare 获取股票历史数据的方法;
- 数据预处理的关键步骤(缺失值检查、异常值分析、归一化等);
- 利用 Matplotlib 绘制趋势图、成交量图、涨跌分析图;
- 借助 Mplfinance 生成专业 K 线图。