Python 股票历史分笔数据读取

Tushare 是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。


使用 Tushare ,可以查询股票的历史数据、当日数据、实时数据,包括交易数据、股票分类数据,基本面数据等。


现在主要是读取历史详细分笔数据到数据库中,记录其历史成交情况或成交分布,可估计大户散户分布、当前存在多少大户、买卖的详情、交易者买卖规律等。


主要涉及的调用函数:

import tushare as ts

#历史分笔
ts.get_tick_data('600848',date='2014-01-09')

#当日历史分
ts.get_today_ticks('601333')

#实时分笔
ts.get_realtime_quotes('000581') 

#历史分笔 和 当日历史分 返回结果
time:时间
price:成交价格
pchange:涨跌幅
change:价格变动
volume:成交手
amount:成交金额(元)
type:买卖类型【买盘、卖盘、中性盘】


先创建数据库,保持到 sql server 中:

CREATE TABLE [dbo].[Fenbi](
	[index] [INT] IDENTITY(1,1) NOT NULL,
	[code] [varchar](10) NULL,
	[date] [date] NULL,
	[time] [time] NULL,
	[price] [float] NULL,
	[change] [float] NULL,
	[volume] [int] NULL,
	[amount] [bigint] NULL,
	[type] [varchar](10) NULL
) ON [PRIMARY]
GO

脚本:

#-*- coding: utf-8 -*-
# python 3.5.0
__author__ = 'HZC'

import pymssql
import sqlalchemy
import numpy as np
import pandas as pd
import tushare as ts
import datetime as dt

class STOCK:
	def __init__(self):
		self.engine = sqlalchemy.create_engine("mssql+pymssql://kk:kk@HZC/DemoDB")
		
	def getDateToStr(self,date):
		return dt.datetime.strftime(date,'%Y-%m-%d')
	
	def getStrToDate(self,str):
		return dt.datetime.strptime(str,'%Y-%m-%d')
	
	#返回日期之间的所有日期列表
	def getRangeDateList(self,startdate,enddate):
		list = []
		py_start = self.getStrToDate(startdate)
		py_end = self.getStrToDate(enddate)
		py_now = pd.datetime.now()
		
		#日期大于等于今天的排除
		if (py_now-py_end).days <= 0:
			py_end = py_now + dt.timedelta(days = -1)
		
		day_diff = (py_end-py_start).days + 1
		for d in range(day_diff):
			day_curr = py_start + dt.timedelta(days=d)
			#周末排除
			if day_curr.weekday()<5:
				list.append(self.getDateToStr(day_curr))
		return list
	
	#一只股票当天的分笔数据
	def getTodayTicksByCode(self,code):
		try:
			df = ts.get_today_ticks(code)
		except Exception as err:
			print("读取当天分笔失败:%s" % err)
		return df
	
	#一只股票某天的分笔数据
	def getHistoryTicksByCodeAndDate(self,code,datestr):
		try:
			df = ts.get_tick_data(code,date=datestr,pause=1)
		except Exception as err:
			print("读取历史分笔失败:%s" % err)
		return df
	
	
	#当天分笔数据处理
	def getOneHistoryTicks(self,codelist):
		dtn = self.getDateToStr(pd.datetime.now())
		if len(codelist)!=0:
			for c in range(len(codelist)):
				df = self.getTodayTicksByCode(codelist[c])
				if df.empty:
					pass
				else:
					print("code: %s , date: %s" % (codelist[c], dtn))
					df['change'] = df['change'].replace('--', '')
					df['code'] = codelist[c]
					df['date'] = dtn
					df = df[['code','date','time','price','change','volume','amount','type']]
					df.to_sql("Fenbi", self.engine, index=False, if_exists='append')
	
	
	#遍历所有历史股票和日期数据处理
	def getAllHistoryTicks(self,codelist,startdate,enddate):
		datelist = self.getRangeDateList(startdate,enddate)
		if len(codelist)!=0 and len(datelist)!=0:
			for c in range(len(codelist)):
				for d in range(len(datelist)):
					try:
						df = self.getHistoryTicksByCodeAndDate(codelist[c], datelist[d])
						if df.empty:
							pass
						else:
							print ("code: %s , date: %s" % (codelist[c], datelist[d]))
							df['change'] = df['change'].replace('--', '')
							df['code'] = codelist[c]
							df['date'] = datelist[d]
							df.to_sql("Fenbi", self.engine, index=False, if_exists='append')
							#print(df[['code','date','time','price','change','volume','amount','type']])
					except Exception as err:
						print("读取失败:%s" % err)
		else:
			print("请输入有效查询信息!")
		
if __name__ == "__main__":
	st = STOCK()
	codelist = ['600543']
	st.getAllHistoryTicks(codelist,'2017-12-01','2017-12-28')#历史所有分笔
	#st.getOneHistoryTicks(codelist) #当天所有分笔

读取一段时间后可能出现网络连接失败,读取不了!!~这是可以手动终止,重新设置日期,等会再次执行。

也许是有限制了吧。部分结果如下:




参考:Tushare 财经数据接口包



  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要读取通达信股票数据,首先需要安装并导入相关的Python库,例如`pandas`和`re`。 步骤如下: 1. 导入所需的库: ```python import pandas as pd import re ``` 2. 创建一个空的DataFrame来存储数据: ```python df = pd.DataFrame(columns=['日期', '开盘价', '最高价', '最低价', '收盘价', '成交量']) ``` 3. 使用正则表达式找到通信达股票数据文件的路径,然后读取文件: ```python data_path = '通信达股票数据文件路径' with open(data_path, 'r') as file: lines = file.readlines() ``` 4. 遍历文件的每一行数据: ```python for line in lines: if not line.startswith('日期'): # 跳过表头 data_list = re.split(r'\s+', line) # 使用正则表达式分割数据 data_dict = { '日期': data_list[0], '开盘价': data_list[1], '最高价': data_list[2], '最低价': data_list[3], '收盘价': data_list[4], '成交量': data_list[5] } df = df.append(data_dict, ignore_index=True) # 将数据字典添加到DataFrame中 ``` 5. 将DataFrame保存为CSV文件或进行其他操作: ```python df.to_csv('保存路径', index=False) ``` 通过上述步骤,就可以使用Python读取通达信股票数据,并进行进一步的处理和分析。请注意替换代码中的文件路径和保存路径为实际的路径。 ### 回答2: Python可以使用多种方法来读取通达股票数据。以下是一种常见的方法,使用pandas库来读取数据: 首先,需要在Python环境中安装pandas库。可以使用以下命令在命令行中安装pandas: ``` pip install pandas ``` 安装完成后,可以在Python脚本中导入pandas库: ```python import pandas as pd ``` 接下来,可以使用pandas的`read_csv`函数来读取通达股票数据文件。假设数据文件名为`stock_data.csv`,位于当前工作目录下,可以使用以下代码来读取数据: ```python data = pd.read_csv('stock_data.csv') ``` 这将把数据读取到一个pandas的DataFrame对象中,可以通过`data`变量来访问数据。 如果数据文件没有标题行,默认情况下`read_csv`会把第一行作为列名。如果数据文件中有其他列名行,可以使用`header`参数来指定要使用的行号。 除了`read_csv`函数,pandas还提供了一系列函数来读取其他类型的数据文件,例如Excel、JSON等。 读取到的数据可以进行各种操作和分析,例如筛选特定条件的股票数据、计算统计指标、画图等。 总之,使用Python和pandas库可以方便地读取通达股票数据,并对数据进行分析和处理。 ### 回答3: Python可以使用通信达提供的API接口来读取股票数据。 首先,我们需要先注册一个账号并获取API密钥。通过该密钥,我们可以在Python中使用相应的库来进行数据的获取与处理。 接下来,我们导入必要的库,比如requests库用于发送HTTP请求和json库用于解析返回的数据。然后,我们可以使用API的URL来构建请求,并在请求头中添加我们的API密钥。发送请求后,我们可以得到响应数据,并使用json库进行解析。 通信达提供了许多不同的API接口,可以获取股票的基本信息、历史交易数据、实时行情等等。我们可以根据自己的需求选择合适的接口进行数据获取。 例如,如果我们想获取某个股票的实时行情,我们可以使用实时行情接口,并在请求时提供股票代码作为参数。返回的数据中包含了股票的实时价格、涨跌幅等信息。 一旦我们获取到了股票数据,我们可以根据需要进行数据处理和分析。比如,可以计算某个股票的平均价格、最高最低价等统计指标,或者根据数据进行可视化展示。 总之,使用Python可以方便地读取通信达股票数据,通过合适的API接口获取所需的数据,并进行进一步处理和分析。 Python的简洁和灵活使其成为获取和处理股票数据的理想工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值