!pip install baostock
import baostock as bs
import pandas as pd
import matplotlib.pyplot as plt
# login baostock
lg = bs.login()
print(f'error code {lg.error_code}')
print(f'error msg {lg.error_msg}')
# 分钟线指标: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='2023-12-31',
    frequency="d", adjustflag="3")
login success!
error code 0
error msg success
data_list = []
while (rs.error_code == '0') & rs.next():
    # 获取一条记录,将记录合并在一起
    data_list.append(rs.get_row_data())
df_result = pd.DataFrame(data_list, columns=rs.fields)
df_result.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 367 entries, 0 to 366
Data columns (total 14 columns):
 #   Column       Non-Null Count  Dtype 
---  ------       --------------  ----- 
 0   date         367 non-null    object
 1   code         367 non-null    object
 2   open         367 non-null    object
 3   high         367 non-null    object
 4   low          367 non-null    object
 5   close        367 non-null    object
 6   preclose     367 non-null    object
 7   volume       367 non-null    object
 8   amount       367 non-null    object
 9   adjustflag   367 non-null    object
 10  turn         367 non-null    object
 11  tradestatus  367 non-null    object
 12  pctChg       367 non-null    object
 13  isST         367 non-null    object
dtypes: object(14)
memory usage: 40.3+ KB

逐条解释
date: 交易所日期
code:证券代码,sh.600000是上海浦东发展银行股份有限公司,差得2022-07-01收盘价为¥7.99,符合一致
open:开盘价
high:最高价
low:最低价
close:收盘价
preclose:前收盘价,即前一天收盘价用来参考
volume:成交量(股) amount:成交额(人民币)
adjustflag:复权状态(1:后复权, 2:前复权,3:不复权) 复权是为了消除如分红,拆细等操作的影响。
turn:换手率, 也就是成交量在流通量里的占比。这里的换手率低于10%,属于偏低。
tradestatus:交易状态(1:正常交易 0:停牌)
pctChg:涨跌幅,[(指定交易日的收盘价-指定交易日前收盘价)/指定交易日前收盘价]*100%
isST:中国市场上被打上特殊标记(special treatment),表示公司近期出现了一些财务问题,可能会被限制交易

PE 市盈率
PE(Price-to-Earnings Ratio) = 股票当前价格 / 每股盈利
EPS(Earnings Per Share)(每股盈利)= 净利润 / 加权平均普通股数量

PS 市销率
PS(Price-to-Sales Ratio) = 股票市值 / 年销售收入 较低的市销率表示相对便宜,高成长的科技公司比较高,传统行业则比较低

PB 市净率
PB(Price-to-Book Ratio) = 每股股价 / 每股净值
Book指的是净值,即净资产

PC 市现率
PC(Price-to-Cash Flow Ratio) = 股票市值 / 现金流
衡量市值相对于现金流的比例

# Check the close price and rolling 5 / 100 average number
df_result['close'].astype(float).plot()
df_result['close'].astype(float).rolling(window=5).mean().plot()
df_result['close'].astype(float).rolling(window=100).mean().plot()
<Axes: >

png