量化研究最大的问题是无法获取大量免费的行情数据。尤其是格式化,可以存为excel的数据。我这里介绍一个网站,BaoStock,既支持直接下载历史数据为csv,也支持用程序下载数据并生成csv格式。
网站地址是www.baostock.com,如果要下载历史行情数据,进入首页后,选择“A股行情数据”,就进入了历史行情的页面。然后点击下载,就可以下载实例文件。实例文件是浦发银行的历史数据,如果要下载其他股票的历史数据,尤其是前后复权的数据,就需要使用程序了。
首先默认已经安装python,且版本是3.5或者以上。
安装pandas: pip insall pandas
安装numpy: pip install numpy
安装baostock数据接口包:pip installbaostock。
baostock提供免费历史k线的下载,包括前后复权的数据,而且还提供股票实时数据
如果有问题,请去官网下载再安装:http://www.baostock.com,不需要注册。
import baostock as bs
import pandas as pd
#### 登陆系统####
lg = bs.login()
# 显示登陆返回信息
print('login respond error_code:'+lg.error_code)
print('login respond error_msg:'+lg.error_msg)
#### 获取沪深A股历史K线数据 ####
# 详细指标参数,参见“历史行情指标参数”章节
rs = bs.query_history_k_data("sh.600000",
"date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,isST",
start_date='2017-07-01', end_date='2017-12-31',
frequency="d", adjustflag="3")
print('query_history_k_data responderror_code:'+rs.error_code)
print('query_history_k_data 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)
#### 结果集输出到csv文件 ####
result.to_csv("D:\\history_A_stock_k_data.csv",index=False)
print(result)
#### 登出系统####
bs.logout()
参数含义:
· code:股票代码,sh或sz.+6位数字代码,或者指数代码,如:sh.601398。sh:上海;sz:深圳。此参数不可为空;
· fields:指示简称,支持多指标输入,以半角逗号分隔,填写内容作为返回类型的列。详细指标列表见历史行情指标参数章节。此参数不可为空;
· start:开始日期(包含),格式“YYYY-MM-DD”,为空时取2015-01-01;
· end:结束日期(不包含),格式“YYYY-MM-DD”,为空时取最近一个交易日;
· frequency:数据类型,默认为d,日k线;d=日k线、w=周、m=月、5=5分钟、15=15分钟、30=30分钟、60=60分钟k线数据,不区分大小写;周线每周最后一个交易日才可以获取,月线第月最后一个交易日才可以获取。
· adjustflag:复权类型,默认不复权:3;1:后复权;2:前复权。已支持日k线、分钟线前后复权;暂不支持周k线、月k线前后复权。
日线指标参数(包含停牌证券) |
||
参数名称 |
参数描述 |
说明 |
date |
交易所行情日期 |
格式:YYYY-MM-DD |
code |
证券代码 |
格式:sh.600000。sh:上海,sz:深圳 |
open |
今开盘价格 |
精度:小数点后4位;单位:人民币元 |
high |
最高价 |
精度:小数点后4位;单位:人民币元 |
low |
最低价 |
精度:小数点后4位;单位:人民币元 |
close |
今收盘价 |
精度:小数点后4位;单位:人民币元 |
preclose |
昨日收盘价 |
精度:小数点后4位;单位:人民币元 |
volume |
成交数量 |
单位:股 |
amount |
成交金额 |
精度:小数点后4位;单位:人民币元 |
adjustflag |
复权状态 |
不复权、前复权、后复权 |
turn |
换手率 |
精度:小数点后6位;单位:% |
tradestatus |
交易状态 |
1:正常交易 0:停牌 |
pctChg |
涨跌幅 |
精度:小数点后6位 |
peTTM |
动态市盈率 |
精度:小数点后4位 |
psTTM |
市销率 |
精度:小数点后4位 |
pcfNcfTTM |
市现率 |
精度:小数点后4位 |
pbMRQ |
市净率 |
精度:小数点后4位 |
isST |
是否ST |
1是,0否 |