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) #当天所有分笔

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

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

python获取股票历史数据并保存_Python 股票历史分笔数据读取相关推荐

  1. 用python获取的一季报优秀的股票!

    自学量化,用python获取的一季报优秀的股票,获取条件,毛利30%以上,净资产收益1.25%,净资产增长,总资产增长,年历史低点,7-16获取日收盘价,与历史低点的百分比! 股票代码 毛利 净资产收 ...

  2. 股票历史数据-股票价格查询,股票历史交易价格查询

    共享一个股票价格查询的工具,可以在线股票价格查询,查询的股票历史交易价格的是:股票从成立到最近一天的所有股票历史价格数据,亲测手机在线就能查询所有个股的股票价格数据,A股.港股.美股所有个股的股票历史 ...

  3. python获取cookie值的方法_Python获取Cookie、设置Cookie的N种方法

    方法一通过python的requests包: import requests url = "https://fanyi.baidu.com" res = requests.get( ...

  4. python获取系统时间为字符串_python怎么获取系统当前的时间

    python获取系统当前的时间的方法:可以利用datetime.datetime.now()函数来获取.具体方法:1.导入datetime包:2.获取当前的时间,如[curr_time = datet ...

  5. python获取一个月之前日期_Python 获取几天前的时间

    Python 获取几天前的时间 计算几天前并转换为指定格式.import time import datetime # 先获得时间数组格式的日期 threeDayAgo = (datetime.dat ...

  6. python获取当前路径和上一层路径_python获取当前路径和上一级路径

    围观人数: 3 标签:getc   当前目录   路径   print   bsp   获取   目录   dir   dirname """获取当前目录"&q ...

  7. python爬取音乐并保存_python爬取QQ音乐歌单歌曲保存到本地,json解析

    序:python强大的功能,可以爬取网上的某些信息,本次主要是通过爬歌单信息熟悉下python基础. 用到知识点: 1.python3.urllib.request.openurl 2.json (j ...

  8. python获取汉字拼音查询翻译器_python获取汉字的拼音

    #coding:utf-8 #基于python2.6 table = 'a,-20319;ai,-20317;an,-20304;ang,-20295;ao,-20292;ba,-20283;bai, ...

  9. python 获取文件夹名称大全_python 获取指定文件夹下所有文件名称并写入列表的实例...

    如下所示: import os import os.path rootdir = "./pic_data" file_object = open('train_list.txt', ...

最新文章

  1. grunt-connect-proxy解决开发时跨域问题
  2. CISCO ACL的匹配数问题
  3. Python3基础知识之运算符
  4. 成功解决ValueError: Invalid format string
  5. 给Linux添加新用户,新建用户,新建帐号
  6. 异常解决(二)-- AttributeError: cannot assign module before Module.__init__() call
  7. 理解JavaScript继承(二)
  8. 巧用Calendar求解黑色星期五问题(洛谷P1202题题解,Java语言描述)
  9. 浅谈c#中使用lock的是与非
  10. 向高端应用进军 杰和推高计算四路服务器
  11. CTPN_论文阅读总结
  12. 将数据加载到datagridview_JVM系列(一)-- Java类的加载机制
  13. 3.2.3节:特权级(转载)
  14. vue项目遇到error This line has a length of 108. Maximum allowed is 100 max-len的解决办法
  15. table 表格,table表格细边框设置,table表格禁止内容换行设置,table表格斑马线设置
  16. CF卡插到时显示函数不正确请问咋才能修复?
  17. IText生成PDF
  18. Apache部署超详细教程
  19. java opts utf 8_Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
  20. (转)计算机领域的顶级会议和期刊

热门文章

  1. 【黑马程序员pink老师前端】JavaScript对象
  2. Servlet模板修改
  3. 《Imperfect C++中文版》——1.2 编译期契约:约束
  4. 机器人布罩_铝型材机器人防护罩案例
  5. 【CSS】770- 多层嵌套的CSS 3D动画技术详解
  6. Conexant ADSL USB 三步走猫
  7. Springboot毕设项目老年健康数据管理及分析平台t46d0(java+VUE+Mybatis+Maven+Mysql)
  8. python sort给字母排序_python sort、sorted高级排序技巧
  9. 汉字怎么利用计算机处理,汉字信息在计算机中的处理
  10. Hive系列 (一):Hive搭建