如果大家需要取得股票数据,推荐这个全免费的包。
1.安装包pip install baostock
2.提供的功能
股票数据
指数数据
季频财务数据
季频公司报告
验证自己的炒股规则,取每天10点30分的数据,涨2%以上卖出500股。
跌2%以上买入1000股。 初始资金 100000元。
股市有风险,入市须谨慎❗❗❗
import baostock as bs import pandas as pd #baostock股票免费数据 #### 登陆系统 #### #初始资金和初始股票数。 mymoney=100000 mysocknum=0 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 ''' 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:前复权。已支持分钟线、日线、周线、月线前后复权。 BaoStock提供的是涨跌幅复权算法复权因子,具体介绍见:复权因子简介或者BaoStock复权因子简介。 参数名称 参数描述 算法说明 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否 5、15、30、60分钟线指标参数(不包含指数) 参数名称 参数描述 说明 date 交易所行情日期 格式:YYYY-MM-DD time 交易所行情时间 格式:YYYYMMDDHHMMSSsss code 证券代码 格式:sh.600000。sh:上海,sz:深圳 open 开盘价格 精度:小数点后4位;单位:人民币元 high 最高价 精度:小数点后4位;单位:人民币元 low 最低价 精度:小数点后4位;单位:人民币元 close 收盘价 精度:小数点后4位;单位:人民币元 volume 成交数量 单位:股 amount 成交金额 精度:小数点后4位;单位:人民币元 adjustflag 复权状态 不复权、前复权、后复权 ''' rs = bs.query_history_k_data_plus("sh.600031", "date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,isST", start_date='2020-01-01', end_date='2020-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) #取得600031的全年日线。 #### 打印结果集 #### data_list = [] i=1 while (rs.error_code == '0') & rs.next(): # 获取一条记录,将记录合并在一起 data_list.append(rs.get_row_data()) i+=1 result = pd.DataFrame(data_list, columns=rs.fields) #主要取得股票日期和收盘价 #### 结果集输出到csv文件 #### result.to_csv("D:\\history_A_stock_k_data.csv", index=False) #print(result) for k in range(i-1): sockdate=data_list[k][0] sockclose=float(data_list[k][5]) print(sockdate) print(sockclose) rsm = bs.query_history_k_data_plus("sh.600031", "date,time,code,open,high,low,close,volume,amount,adjustflag", start_date=sockdate, end_date=sockdate, frequency="5", adjustflag="3") data_list5 = [] while (rsm.error_code == '0') & rsm.next(): # 获取一条记录,将记录合并在一起 data_list5.append(rsm.get_row_data()) result = pd.DataFrame(data_list5, columns=rsm.fields) #result.to_csv("D:\\history_A_stock_5_data.csv", index=False) #取5分钟数据的最高价,想知道哪些数据,可以输出csv文件查看。 myprice=float(data_list5[11][4]) print(myprice) if myprice>sockclose: if myprice/sockclose>=0.02: if mysocknum>=500: mysocknum=mysocknum-500 mymoney=mymoney+500*myprice print("卖出价格:",myprice) print(mymoney) print(mysocknum) else: if sockclose/myprice>=0.02: if mymoney>=(1000*myprice): mysocknum=mysocknum+1000 mymoney=mymoney-1000*myprice print("买入价格",myprice) print(mymoney) print(mysocknum) #print(result) print("我的最终金额",mymoney+mysocknum*sockclose) print("年终盈利:",mymoney+mysocknum*sockclose-100000)