Tushare是一款开源的python财经数据软件包,可以提供中国股市所有股票自2010年以来的所有交易数据。于是,将想到了使用Tushare,将4800余只股票每交易日产生的日线数据,自动更新下载到个人电脑中供数据分析使用。

1 准备工作

python 3.7及以上

Tushare库(pip install tushare)

ubuntu 20.04(每日自动运行python数据下载脚本)

sqlite3数据库(python自带,db格式的数据库文件方便迁移)

在Tushare官方网址Tushare大数据社区注册账号,登陆后,在个人主页可以看到接口token,复制下来。

cron定时任务(sudo apt-get install cron)

2 数据下载的Python脚本(dailyTaskNotice.py)

import tushare as tsimport time, datetime, sqlite3,loggingfrom tqdm import tqdmdef downLoadData(pro):# 查询当前所有正常上市交易的股票列表data = pro.stock_basic(exchange='', list_status='L', fields='ts_code,symbol,name,area,industry,list_date')# 创建sqlite3的股票列表数据表,如果不存在则创建conn = sqlite3.connect("./db/tushare.db")cursor = conn.cursor()try:cursor.execute("DROP TABLE share_index")except:passsql = "CREATE TABLE if not exists share_index(ts_code,symbol,name,area,industry,list_date)"cursor.execute(sql)# 将股票列表数据存入sqlite3的股票列表数据表,如果存在则替换data.to_sql('share_index', conn, if_exists='replace', index = False)conn.commit()# print(data)# 创建sqlite3的股票日线行情数据表,如果不存在则创建# amount:成交额,千元; vol:成交手数,百股sql = "CREATE TABLE if not exists stock_all(ts_code text,trade_date text,open real,high real,low real,close real,pre_close real,\change real,pct_chg real,vol real,amount real,UNIQUE(ts_code, trade_date))"cursor.execute(sql)# 设定获取日线行情的初始日期和终止日期,其中终止日期设定为昨天。start_dt = '20100101'time_temp = datetime.datetime.now() - datetime.timedelta(days=1)end_dt = time_temp.strftime('%Y%m%d')stock_pool = data['ts_code']total = len(stock_pool)# 循环获取单个股票的日线行情for i in tqdm(range(len(stock_pool))):# print("正在更新日线:", i)try:df = pro.daily(ts_code=stock_pool[i], start_date=start_dt, end_date=end_dt)time.sleep(0.121)# print(df.head())# 打印进度info = 'Seq: ' + str(i+1) + ' of ' + str(total) + '   Code: ' + str(stock_pool[i])c_len = df.shape[0]# print("c_len", c_len)except Exception as aa:print(aa)print('No DATA Code: ' + str(i))continuefor j in range(c_len):resu0 = list(df.iloc[c_len-1-j])# print("resu0", resu0)resu = []for k in range(len(resu0)):if str(resu0[k]) == 'nan':resu.append(-1)else:resu.append(resu0[k])# print("resu0[k]", resu0[k])state_dt = (datetime.datetime.strptime(resu[1], "%Y%m%d")).strftime('%Y-%m-%d')# print('state_dt', state_dt)sql = "insert or ignore into stock_all(trade_date,ts_code,open,close,high,low,vol,amount,pre_close,change,pct_chg) VALUES ('%s', '%s', '%.2f', '%.2f','%.2f','%.2f','%i','%.2f','%.2f','%.2f','%.2f')" % (state_dt,str(resu[0]),float(resu[2]),float(resu[5]),float(resu[3]),float(resu[4]),float(resu[9]),float(resu[10]),float(resu[6]),float(resu[7]),float(resu[8]))try:cursor.execute(sql)conn.commit()logging.info(info)except Exception as err:print(err)cursor.close()conn.execute("VACUUM")conn.close()print('All Finished!')ts.set_token('**************************************) #将引号内的*换成自己账号的tokenpro = ts.pro_api()downLoadData(pro)

3 在ubuntu下设置cron定时任务

由于python可能不在ubuntu系统的任意个人目录里,直接在cron里面设置运行python,可能会出现找不到python脚本的问题。这个问题可以通过写一个sh批处理文件来解决。

可以在python程序的同级目录下新建dailyTask.sh文件,用chmod 777 命令将文件权限设置为可执行 。(笔者的sh文件路径为/root/shareResearch/dailyTask.sh,而python文件的路径为/root/shareResearch/dailyTaskNotice.py)

sh文件的内容为:

cd /root/shareResearch
python3 /root/shareResearch/dailyTaskNotice.py >> /root/shareResearch/record.log

先cd到python脚本所在路径,再执行python脚本,并将运行情况保存到og日志文件。

接下来,再cron工具里设置sh脚本的运行规则。

在ubuntu终端运行 crontab -e,即可进入cron的规则编辑环境,增加一行规则:

15 00 * * 2-6 sh /root/shareResearch/dailyTask.sh

上述脚本代表每周二到周六的00:15,运行一次sh脚本(官网上介绍tushare的数据更新时间是交易日的晚上21:00,发现不是很准时,干脆设置到次日凌晨)。

设置好cron规则后,可以用service cron restart重启cron服务,使之生效。

常用的cron服务指令如下:

service cron start -- 启动
service cron restart -- 重启
service cron stop -- 停止
service cron status -- 检查状态
service cron -- 查询cron可用命令
crontab -l -- 检查crontab工具是否安装/查看所有定时任务

4 关于定时运行下载的用时

由于服务器的使用成本巨大,tushare对的初级用户的数据接口访问频次进行了限速。

初级用户第一次运行本文中程序,会从零开始下载2010年以来的数据,笔者测试了耗时约为8h。

第一次下载完成历史数据后,接下来的每次只需要下载当日新增的数据,运行时间会大幅减少,笔者测试了大约为70分钟(凌晨00:15开始,凌晨01:25结束)。每日早上醒来时,所需数据也在电脑里了。

更进一步,可以将数据分析的策略程序,也做成定时任务,并将策略结果推送至个人邮箱,这样,就做成一个自动化的量化分析工具的雏形。

定时使用Tushare下载日线交易数据到Sqlite3数据库相关推荐

  1. [62量化交易] tushare下载行情所有数据

    # 导入tushare import tushare as ts import pymongo import json import time import random import sys # 初 ...

  2. tushare数据存入mysql代码_下载股票的历史日交易数据并存入数据库——基于tushare...

    tushare是一个非常神奇的Python模块包,基于新浪的API,可提供并不限于股票的历史数据. 数据库选用的是sqlite3,单文件,轻量化,不需要配置. 以下是完整代码,且使用的是多线程的方式. ...

  3. 下载股票的历史日交易数据并存入数据库——基于tushare

    https://www.jianshu.com/p/81cc8daea0eb tushare是一个非常神奇的Python模块包,基于新浪的API,可提供并不限于股票的历史数据. 数据库选用的是sqli ...

  4. 使用python将数据存入SQLite3数据库

    Python从网站上抓取的数据为了可以重复利用,一般都会存储下来,存储方式最简单的会选择存储到文本文件,常见的有方式TXT.CSV.EXCEL等,还有一种方式是将数据存储到数据库,这样也方便管理,常见 ...

  5. 使用SQLiteManager将Excel表格中的数据导入sqlite3数据库

    1. 将Excel表格保存为csv格式文件(逗号分隔值文件):​ 2. 用记事本打开csv文件,另存为UTF-8编码:​ 3. 用SQLiteManager打开要导入的数据库,使用import功能导入 ...

  6. 使用tushare下载指定股票日线数据并存为excel文件

    freepy下载 前一篇介绍转换本机通达信软件下载的个股日线数据,这一篇内容是从网络下载个股数据并存为excel文件. 也是使用freepy工具,这个工具的优点是不需要安装庞大的python开发环境, ...

  7. python利用tushare下载数据并计算当日收益率

    python利用tushare下载数据并计算当日收益率 计算股票收益率的程序主要有以下几部分构成: 1.获取股票接口数据函数:pro_daily_stock() 2.计算收益率函数:cal_stock ...

  8. 通过tushare获取贵州茅台和中国平安历史交易数据并使用plotly进行可视化分析

    通过tushare获取贵州茅台和中国平安历史交易数据并使用plotly进行可视化分析 贵州茅台:赤水河永流淌 贵州茅台酒股份有限公司总部位于中国贵州省遵义市茅台镇,其主导产品贵州茅台酒历史悠久.源远流 ...

  9. Tushare如何获取股票历史交易数据

    以从Tushare财经数据库调取上证180股票指数为例,介绍获取方式,代码如下: #从tushare财经数据库调取上证180股票指数的基础数据,并完成数据存储 #调用tushare import tu ...

最新文章

  1. 搜索推荐炼丹笔记:评论是怎么影响推荐的?
  2. Maven——Maven概述
  3. 几个免费高质量图标搜索引擎。
  4. http请求中的Query String Parameters、Form Data、Request Payload
  5. 什么是微服务?为什么你要用微服务?
  6. mmdnn tensorflow 转 caffe
  7. apache phoenix 入门_实现Phoenix入门
  8. java 虚拟机类加载 及内存结构
  9. JS判断相等或者不等于(==、===、!=、!==)运算符
  10. 蓝桥杯 ADV-9 算法提高 递归倒置字符数组
  11. 物联网培训总结(C#)
  12. 股票基本知识入门提纲
  13. java国际化转换_java 实现国际化 中英文语言切换
  14. 【一 DE1-SOC】quartus II下载程序步骤
  15. 漫画主动学习:人工智能居然被PUA了?
  16. JS解构和 ... 运算符
  17. Geoffrey Hinton获得时间检验奖;AI预测世界杯荷兰夺冠;Galactica不靠谱,ChatGPT又如何……...
  18. 一文盘点NeurIPS'22杰出论文亮点!英伟达AI大佬一句话总结每篇重点,一并看透今年技术趋势...
  19. 做网络推广怎么换IP地址?
  20. git垃圾箱的使用方法

热门文章

  1. BlackBerry视频播放编程
  2. 人员管理KPI和OKR
  3. 汽车维修企业管理【4】
  4. Kettle中“Switch/case“组件的使用
  5. 结构体问题探究_12_18.c
  6. Ubuntu12.04不能连接小米开发
  7. 计算机毕业设计springboot晋中学院失物招领系统的设计与实现unst3源码+系统+程序+lw文档+部署
  8. 华为云桌面Workspace,让云上工作更高效
  9. iApp后台带PHP文件源码全开源
  10. 联创系统服务器信息设置有误,联创自助服务系统