task03
股票数据获取
调用证券宝API查询
-
安装 :
pip install baostock
-
数据范围:
- 股票数据
日、周、月K线数据,时间范围:1990-12-19至今。
5、15、30、60分钟K线数据,时间范围:1999-07-26至今。 - 指数数据
日、周、月K线已经包含指数:综合指数,规模指数,一级行业指数,二级行业指数,策略指数,成长指数,价值指数,主题指数,基金指数,债券指数。
时间范围:2006-01-01至今。 - 季频财务数据
已经包含的财务数据:部分上市公司资产负债信息、上市公司现金流量信息、上市公司利润信息、上市公司杜邦指标信息。
时间范围:2007年至今。 - 季频公司报告
上市公司业绩预告信息,时间范围:2003年至今。
上市公司业绩快报信息,时间范围:2006年至今。
- 股票数据
-
基本过程:
import baostock as bs
import pandas as pd
from IPython.display import display
#### 登陆系统 ####
lg = bs.login()
# 显示登陆返回信息
print('login respond error_code:'+lg.error_code)
print('login respond error_msg:'+lg.error_msg)
#### 获取沪深A股历史K线数据 ####
# 分钟线指标:date,time,code,open,high,low,close,volume,amount,adjustflag
# 周月线指标:date,code,open,high,low,close,volume,amount,adjustflag,turn,pctChg
rs = bs.query_history_k_data_plus("sh.600000",
"date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,isST",
start_date='2022-07-01', end_date='2022-12-31',
frequency="d", adjustflag="3")
print('query_history_k_data_plus respond error_code:'+rs.error_code)
print('query_history_k_data_plus respond error_msg:'+rs.error_msg)
#### 打印结果集 ####
data_list = []
while (rs.error_code == '0') & rs.next():
# 获取一条记录,将记录合并在一起
data_list.append(rs.get_row_data())
result = pd.DataFrame(data_list, columns=rs.fields) #数据存到dataframe里
#### 结果集输出到csv文件 ####
result.to_csv("./history_A_stock_k_data.csv", index=False)
display(result)
#### 登出系统 ####
bs.logout()
常见指数:
#获取指数(综合指数、规模指数、一级行业指数、二级行业指数、策略指数、成长指数、价值指数、主题指数)K线数据
- 综合指数,例如:sh.000001 上证指数,sz.399106 深证综指 等;
- 规模指数,例如:sh.000016 上证50,sh.000300 沪深300,sh.000905 中证500,sz.399001
- 深证成指等; 一级行业指数,例如:sh.000037 上证医药,sz.399433 国证交运 等; 二级行业指数,例如:sh.000952
- 300地产,sz.399951 300银行 等; 策略指数,例如:sh.000050 50等权,sh.000982 500等权 等;
- 成长指数,例如:sz.399376 小盘成长 等; 价值指数,例如:sh.000029 180价值 等;
- 主题指数,例如:sh.000015 红利指数,sh.000063 上证周期 等;
具体函数接口见文档:http://baostock.com/baostock/index.php/%E9%A6%96%E9%A1%B5
股票数据
1. 技术面数据
分析股票大盘,主要关注股票价格的变动和市场趋势,大致分为指标类、切线类、形态类、K 线类和波浪类五大类别。
指标类
- 常用的指标:移动平均线(MA)、相对强弱指标(RSI)、MACD指标,随机指标(KDJ)、趋向指标(DMI)、平滑异同移动平均线(MACD)、能量潮(OBV)、心理线(PSY)、乖离率(BIAS)等
1. 移动平均线(MA)
简单移动平均线(SMA):将一段时间内的股票收盘价相加,然后除以时间段的天数
指数移动平均线(EMA):近期价格权重更高
2. 相对强弱指数(Relative Strength Index, RSI)
RSI 的计算基于一定时期内股票价格的平均涨幅和跌幅。通常情况下,RSI的取值范围在0到100之间。
RSI 指标的常用参数为14,计算步骤如下:
- 首先,计算14个交易周期内涨幅和跌幅的平均值。
- 计算涨幅平均值与跌幅平均值的相对强弱比率(RS,Relative Strength)。 RS = (14个交易周期内涨幅平均值) / (14个交易周期内跌幅平均值)
- 计算相对强弱指数(RSI): RSI = 100 - (100 / (1 + RS))
RSI 的数值解读如下:
- RSI在0到30之间:表示股票市场被超卖,可能存在价格反弹的机会。
- RSI在70到100之间:表示股票市场被超买,可能存在价格下跌的机会。
- RSI在30到70之间:表示股票市场相对平稳,没有明显的超买或超卖信号。
3. 随机指标(Stochastic Oscillator)
用于判断股票价格的超买和超卖情况,以及价格反转的可能性
计算步骤如下:
-
首先,计算一定时间段(常见为14个交易日)内的最高价和最低价。
-
计算当前收盘价与该时间段内最低价的差值(收盘价-最低价),并除以最高价和最低价的差值(最高价-最低价)。 %K = (收盘价 - 最低价)/ (最高价 - 最低价) * 100
-
计算%K的移动平均值作为%D线的值,通常使用3日平均。 %D = %K的3日简单移动平均线
随机指标的数值解读如下: -
当 %K 线从下方穿越%D线时,被视为买入信号,可能预示着价格的反转和上涨。
-
当 %K 线从上方穿越%D线时,被视为卖出信号,可能预示着价格的反转和下跌。
-
当 %K 线位于高位(一般超过80)时,表示市场可能超买,价格的下跌风险增加。
-
当 %K 线位于低位(一般低于20)时,表示市场可能超卖,价格的上涨机会增加。
4. 成交量指标(Volume)
即某一时间周期内的总成交量,衡量了股票交易的活跃程度
5. MACD 指标(Moving Average Convergence Divergence)
通过比较两条移动平均线的差异,来判断股票价格的趋势以及价格的买卖信号
元素组成:
- DIF 线(Difference Line):是短期指数移动平均线(如12日 EMA)减去长期指数移动平均线(如26日 EMA)得到的差值线。DIF 线可以较为敏感地反应价格的短期波动。
- DEA 线(Signal Line):是对 DIF 线进行平滑处理,一般使用DIF线的9日移动平均线得到。DEA 线可以平滑 DIF 线的波动,更好地体现价格的中期趋势。
- MACD 柱(MACD Histogram):是 DIF 线与 DEA 线的差值,可将价格的快速波动变化显示为柱状图。柱状图的红色柱代表 DIF 线在 DEA 线上方,表示价格可能上涨;绿色柱代表 DIF 线在 DEA 线下方,表示价格可能下跌。
较长时间的移动平均线会导致滞后性
切线类
体现股市的趋势:
①支撑线和压力线的作用
- 支撑线又称为抵抗线。当股价跌到某个价位附近时,股价停止下跌,甚至有可能回升。这个起着阻止股价继续下跌或暂时阻止股价继续下跌的价格就是支撑线所在的位置。
- 压力线又称为阻力线。当股价上涨到某个价位附近时,股价会停止上涨,甚至回落。这个起着阻止或暂时阻止股价继续上升的价位就是压力线所在的位置。
K 线类
以交易时间为横坐标、股票价格为纵坐标,每根 K 线(柱状)表示一定时间内价格波动的范围
- 阴阳数量代表总体趋势
- 实体大小表示内在动力和趋势强弱
- 影线长短反映转折意愿
bs.query_history_k_data_plus()
查询指定股票在指定时间范围内的 K 线数据,参数:code
股票代码,fields
指定返回数据中包含哪些指标,半角逗号分隔,start
指定查询的起始日期,end
结束日期,frequency
指定查询的数据类型,返回日线(d),周线(w),数字表示分钟线的周期,如"5"代表5分钟线。
指数只支持日线数据。周线数据只能选择每周最后一个交易日查询,月线数据只能选择每月最后一个交易日查询。
返回数据说明:
参数名称 | 参数描述 | 算法说明 |
---|---|---|
date | 交易所行情日期 | |
code | 证券代码 | |
open | 开盘价 | |
high | 最高价 | |
low | 最低价 | |
close | 收盘价 | |
preclose | 前收盘价 | 见表格下方详细说明 |
volume | 成交量(累计 单位:股) | |
amount | 成交额(单位:人民币元) | |
adjustflag | 复权状态(1:后复权, 2:前复权,3:不复权) | |
turn | 换手率 | [指定交易日的成交量(股)/指定交易日的股票的流通股总股数(股)]*100% |
tradestatus | 交易状态(1:正常交易 0:停牌) | |
pctChg | 涨跌幅(百分比) | 日涨跌幅=[(指定交易日的收盘价-指定交易日前收盘价)/指定交易日前收盘价]*100% |
peTTM | 滚动市盈率 | (指定交易日的股票收盘价/指定交易日的每股盈余TTM)=(指定交易日的股票收盘价*截至当日公司总股本)/归属母公司股东净利润TTM |
pbMRQ | 市净率 | (指定交易日的股票收盘价/指定交易日的每股净资产)=总市值/(最近披露的归属母公司股东的权益-其他权益工具) |
psTTM | 滚动市销率 | (指定交易日的股票收盘价/指定交易日的每股销售额)=(指定交易日的股票收盘价*截至当日公司总股本)/营业总收入TTM |
pcfNcfTTM | 滚动市现率 | (指定交易日的股票收盘价/指定交易日的每股现金流TTM)=(指定交易日的股票收盘价*截至当日公司总股本)/现金以及现金等价物净增加额TTM |
isST | 是否ST股 | 1是,0否 |
2. 基本面数据
看公司财报等数据,判断宏观经济形势。 (就是试图从公司角度找出股票的“ 内在价值 ”)
通过经济因素评估证券价值的分析方法,着重于对影响证券价格及其走势的各项因素的分析,以此决定何时投资购买何种证券
基本要素:
- ①经济因素
- ②政治因素
- ③公司自身因素
- ④行业因素
- ⑤市场因素
公司自身因素
公司财报中应关注数据:
- (1)市盈率
市盈率 = 每股市价 / 每股收益 - (2)每股收益
每股收益 = 税后净利润 / 总股本 - (3)每股净资产
每股净资产 = 股东权益 / 总股本。在会计计算上,相当于资产负债表中的总资产减去全部债务后的余额。公司净资产除以发行总股本,即得到每股净资产。 - (4)市净率
市净率 = 每股市价 / 每股净资产。反映了普通股东愿意为每一元净资产支付的价格,说明市场对公司资产质量的评价。 - (5)净资产收益率
净资产收益率 = 净利润 / 平均股东权益。净资产收益率可以衡量公司对股东投入资本的利用效率,体现了自有资本盈利的能力。 - (6)成本费用率
成本费用率 = 利润总额 / 成本费用总额 - (7)销售净利润
销售净利润 = 净利润 / 销售收入 - (8)流动比率
流动比率 = 流动资产 / 流动负债 - (9)应收账款周转率
应收账款周转率 = 销售收入 /应收账款平均余额 - (10)负债权益比率
负债权益比率 = 企业负债 /所有者权益。 反映了公司负债占总资产的比例(财务杠杆) - (11)现金比率
现金比率 =(货币资金 + 交易性金融资产)/ 流动负债 - (12)股息收益率
股息收益率 = 每股股息 / 股票价格