这篇文章是上一篇的补充
以中国石油股票为例,代码601857
1.获取从2018年5月1日到2018年5月4日的数据
import tushare as ts data=ts.get_hist_data('601857',start='2018-05-01',end='2018-05-04') print(data)
还有两个函数
ts.get_h_data #该函数只返回开盘价(open)、最高价(high)、收盘价(close)、最低价(low)、成交量(volume)、成交金额(amount)六列 ts.get_k_data #这个函数获取数据的速度很明显要快很多,而且可以返回每一只股票从上市开始到当前交易日的所有日线数据
结果如下
open high close low volume price_change p_change ma5 \ date 2018-05-04 7.67 7.71 7.70 7.65 198814.75 0.00 0.00 7.644 2018-05-03 7.61 7.72 7.70 7.57 329403.06 0.09 1.18 7.630 2018-05-02 7.65 7.66 7.61 7.56 232936.98 -0.04 -0.52 7.632 ma10 ma20 v_ma5 v_ma10 v_ma20 turnover date 2018-05-04 7.654 7.617 256535.02 279011.03 329645.21 0.01 2018-05-03 7.647 7.615 256410.19 288602.43 336304.65 0.02 2018-05-02 7.630 7.612 267643.88 277844.68 335077.15 0.01
- date:日期
- open:开盘价
- high:最高价
- close:收盘价
- low:最低价
- volume:成交量
- price_change:价格变动
- p_change:涨跌幅
- ma5:5日均价
- ma10:10日均价
- ma20:20日均价
- v_ma5:5日均量
- v_ma10:10日均量
- v_ma20:20日均量
- turnover:换手率[注:指数无此项]
2.此外还有
ts.get_hist_data('601857', ktype='W') #获取周k线数据 ts.get_hist_data('601857', ktype='M') #获取月k线数据 ts.get_hist_data('601857', ktype='5') #获取5分钟k线数据 ts.get_hist_data('601857', ktype='15') #获取15分钟k线数据 ts.get_hist_data('601857', ktype='30') #获取30分钟k线数据 ts.get_hist_data('601857', ktype='60') #获取60分钟k线数据 ts.get_hist_data('sh')#获取上证指数k线数据,其它参数与个股一致,下同 ts.get_hist_data('sz')#获取深圳成指k线数据 ts.get_hist_data('hs300')#获取沪深300指数k线数据 ts.get_hist_data('sz50')#获取上证50指数k线数据 ts.get_hist_data('zxb')#获取中小板指数k线数据 ts.get_hist_data('cyb')#获取创业板指数k线数据
ts.get_today_all()#获取实时行情数据
ts.get_tick_data()#获取历史分笔数据,获取当前分笔数据用ts.get_today_ticks()
3.数据的存储
mysql的安装与连接花费了很长时间,对于一个新手来说很有挫败感
- name:表名,pandas会自动创建表结构
- con:数据库连接,最好是用sqlalchemy创建engine的方式来替代con
- flavor:数据库类型 {‘sqlite’, ‘mysql’}, 默认‘sqlite’,如果是engine此项可忽略
- schema:指定数据库的schema,默认即可
- if_exists:如果表名已存在的处理方式 {‘fail’, ‘replace’, ‘append’},默认‘fail’
- index:将pandas的Index作为一列存入数据库,默认是True
- index_label:Index的列名
- chunksize:分批存入数据库,默认是None,即一次性全部写人数据库
- dtype:设定columns在数据库里的数据类型,默认是None
from sqlalchemy import create_engine import tushare as ts df = ts.get_tick_data('601857', date='2018-05-04') engine = create_engine('mysql://user:[email protected]/db_name?charset=utf8') #存入数据库 df.to_sql('tick_data',engine) #追加数据到现有表 #df.to_sql('tick_data',engine,if_exists='append')
另外在mysql中创建一个空的表,表名t_user,int为整数类型,date是日期类型,decimal可以设置精度
create table t_user( id int auto_increment primary key, date date not null , open decimal(3,2) not null, high decimal(3,2)not null, close decimal(3,2)not null, low decimal(3,2)not null, volume decimal(9,1)not null, amount decimal(9,1)not null );
但是,总是出现error :[42000][1049] Unknown database,这个还需要在思考一下