python从tushare获取股票历史数据

2023-10-29

使用前提: 

  • 安装Python
  • 安装pandas
  • lxml也是必须的,正常情况下安装了Anaconda后无须单独安装,如果没有可执行:pip install lxml

         建议安装Anaconda,一次安装包括了Python环境和全部依赖包,减少问题出现的几率。

  • 安装tushare并更新

         pip install tushare

         pip install tushare --upgrade

import tushare as ts
import MySQLdb


''' 
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日均量
'''
def parse(code, codeName, cursor, num_temp):
    
    #sql语句
    sql = "insert into stock_info (stockId,code,stockName,stockDate,stockOpen,stockHigh,close,stockLow,stockVolume,price_change,p_change,ma5,ma10,ma20,v_ma5,v_ma10,v_ma20) values {SQL} ;"
    sql_value = "({StockId},'{Code}','{StockName}','{StockDate}','{StockOpen}','{StockHigh}','{StockClose}','{StockLow}','{StockVolume}','{StockPrice_change}','{StockP_change}','{StockMa5}','{StockMa10}','{StockMa20}','{StockV_ma5}','{StockV_ma10}','{StockV_ma20}')"
    #df存储当前代码所有的股票数据
    df = ts.get_hist_data(code)  
    print("-----------------------------------------")
    #print(df)
    #根据股票数据的字段取数据
    stockOpen = df[u'open']
    stockHigh=df[u'high']
    close = df[u'close']
    stockLow= df[u'low']
    stockVolume= df[u'volume']
    price_change= df[u'price_change']
    p_change= df[u'p_change']
    ma5= df[u'ma5']
    ma10= df[u'ma10']
    ma20 = df[u'ma20']
    v_ma5= df[u'v_ma5']
    v_ma10= df[u'v_ma10']
    v_ma20= df[u'v_ma20']
    #idx:表示当前代码的股票数据条数
    idx = len(ma20)
    temp = ""
    sum_temp = num_temp + idx

    print(sum_temp)
    print(num_temp)
    print(idx)
    
    for x in range(sum_temp, num_temp, -1):   
        idx -=1
        stockId=x
        code_val=code
        stockName_val=codeName
        stockDate_val = close.keys()[idx]
        stockOpen_val = stockOpen[idx]
        stockHigh_val = stockHigh[idx]
        close_val = close[idx]
        stockLow_val = stockLow[idx]
        stockVolume_val = stockVolume[idx]
        price_change_val = price_change[idx]
        p_change_val = p_change[idx]
        ma5_val =  ma5[idx]
        ma10_val = ma10[idx]
        ma20_val = ma20[idx]
        v_ma5_val =  v_ma5[idx]
        v_ma10_val =  v_ma10[idx]
        v_ma20_val =  v_ma20[idx]

        if idx > 0:
            temp = temp + sql_value.format(StockId=stockId,Code=code_val,StockName=stockName_val,StockDate=stockDate_val,StockOpen=stockOpen_val,StockHigh=stockHigh_val,StockClose=close_val,StockLow=stockLow_val,StockVolume=stockVolume_val,StockPrice_change=price_change_val,StockP_change=p_change_val,StockMa5=ma5_val,StockMa10=ma10_val,StockMa20=ma20_val,StockV_ma5=v_ma5_val,StockV_ma10=v_ma10_val,StockV_ma20=v_ma20_val)
            temp = temp + ","
        elif idx <= 0:
            temp = temp + sql_value.format(StockId=stockId,Code=code_val,StockName=stockName_val,StockDate=stockDate_val,StockOpen=stockOpen_val,StockHigh=stockHigh_val,StockClose=close_val,StockLow=stockLow_val,StockVolume=stockVolume_val,StockPrice_change=price_change_val,StockP_change=p_change_val,StockMa5=ma5_val,StockMa10=ma10_val,StockMa20=ma20_val,StockV_ma5=v_ma5_val,StockV_ma10=v_ma10_val,StockV_ma20=v_ma20_val)
            
        
    sql = sql.format(SQL=temp)
    #print(sql)
    cursor.execute(sql)
        
    # 使用 fetchone() 方法获取一条数据
    data = cursor.fetchone()

    return sum_temp

   
if __name__ == '__main__':
    # 打开数据库连接
    db = MySQLdb.connect("127.0.0.1", "root", "root", "stock", charset='utf8' )

    # 使用cursor()方法获取操作游标 
    cursor = db.cursor()
    #STOCK存储公司名称和代码,需要添加其他股票,则在后面追加
    STOCK = {'600000' :"浦发银行",'000001':"平安银行",'600519':"贵州茅台",'600007':"中国国贸",'600009':"上海机场"}
    #StockLen=len(STOCK)
    num_temp = 0

    '''
        code:股票代码
        codeName:公司名称
        sum_temp:股票数据记录累积和
        num_temp:股票数据记录
    '''
    for code, codeName in STOCK.items():
        num_temp = parse(code, codeName, cursor, num_temp)
    db.commit()
 
    # 关闭数据库连接
    db.close()


    

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python从tushare获取股票历史数据 的相关文章

  • 下载 PyQt6 的 Qt Designer 并使用 pyuic6 将 .ui 文件转换为 .py 文件

    如何下载 PyQt6 的 QtDesigner 如果没有适用于 PyQt6 的 QtDesigner 我也可以使用 PyQt5 的 QtDesigner 但是如何将此 ui 文件转换为使用 PyQt6 库而不是 PyQt5 的 py 文件
  • 如何在python中读取多个文件中的文本

    我的文件夹中有许多文本文件 大约有 3000 个文件 每个文件中第 193 行是唯一包含重要信息的行 我如何使用 python 将所有这些文件读入 1 个文本文件 os 模块中有一个名为 list dir 的函数 该函数返回给定目录中所有文
  • 使用 openCV 对图像中的子图像进行通用检测

    免责声明 我是计算机视觉菜鸟 我看过很多关于如何在较大图像中查找特定子图像的堆栈溢出帖子 我的用例有点不同 因为我不希望它是具体的 而且我不确定如何做到这一点 如果可能的话 但我感觉应该如此 我有大量图像数据集 有时 其中一些图像是数据集的
  • 如何在android上的python kivy中关闭应用程序后使服务继续工作

    我希望我的服务在关闭应用程序后继续工作 但我做不到 我听说我应该使用startForeground 但如何在Python中做到这一点呢 应用程序代码 from kivy app import App from kivy uix floatl
  • DreamPie 不适用于 Python 3.2

    我最喜欢的 Python shell 是DreamPie http dreampie sourceforge net 我想将它与 Python 3 2 一起使用 我使用了 添加解释器 DreamPie 应用程序并添加了 Python 3 2
  • Flask 和 uWSGI - 无法加载应用程序 0 (mountpoint='')(找不到可调用或导入错误)

    当我尝试使用 uWSGI 启动 Flask 时 出现以下错误 我是这样开始的 gt cd gt root localhost uwsgi socket 127 0 0 1 6000 file path to folder run py ca
  • 更改自动插入 tkinter 小部件的文本颜色

    我有一个文本框小部件 其中插入了三条消息 一条是开始消息 一条是结束消息 一条是在 单位 被摧毁时发出警报的消息 我希望开始和结束消息是黑色的 但被毁坏的消息 参见我在代码中评论的位置 插入小部件时颜色为红色 我不太确定如何去做这件事 我看
  • 打破嵌套循环[重复]

    这个问题在这里已经有答案了 有没有比抛出异常更简单的方法来打破嵌套循环 在Perl https en wikipedia org wiki Perl 您可以为每个循环指定标签 并且至少继续一个外循环 for x in range 10 fo
  • Spark的distinct()函数是否仅对每个分区中的不同元组进行洗牌

    据我了解 distinct 哈希分区 RDD 来识别唯一键 但它是否针对仅移动每个分区的不同元组进行了优化 想象一个具有以下分区的 RDD 1 2 2 1 4 2 2 1 3 3 5 4 5 5 5 在此 RDD 上的不同键上 所有重复键
  • 为 pandas 数据透视表中的每个值列定义 aggfunc

    试图生成具有多个 值 列的数据透视表 我知道我可以使用 aggfunc 按照我想要的方式聚合值 但是如果我不想对两列求和或求平均值 而是想要一列的总和 同时求另一列的平均值 该怎么办 那么使用 pandas 可以做到这一点吗 df pd D
  • keras加载模型错误尝试将包含17层的权重文件加载到0层的模型中

    我目前正在使用 keras 开发 vgg16 模型 我用我的一些图层微调 vgg 模型 拟合我的模型 训练 后 我保存我的模型model save name h5 可以毫无问题地保存 但是 当我尝试使用以下命令重新加载模型时load mod
  • Pandas Dataframe 中 bool 值的条件前向填充

    问题 如何转发 fill boolTruepandas 数据框中的值 如果是当天的第一个条目 True 到一天结束时 请参阅以下示例和所需的输出 Data import pandas as pd import numpy as np df
  • HTTPS 代理不适用于 Python 的 requests 模块

    我对 Python 还很陌生 我一直在使用他们的 requests 模块作为 PHP 的 cURL 库的替代品 我的代码如下 import requests import json import os import urllib impor
  • 如何将 PIL 图像转换为 NumPy 数组?

    如何转换 PILImage来回转换为 NumPy 数组 这样我就可以比 PIL 进行更快的像素级转换PixelAccess允许 我可以通过以下方式将其转换为 NumPy 数组 pic Image open foo jpg pix numpy
  • 检查所有值是否作为字典中的键存在

    我有一个值列表和一本字典 我想确保列表中的每个值都作为字典中的键存在 目前我正在使用两组来确定字典中是否存在任何值 unmapped set foo set bar keys 有没有更Pythonic的方法来测试这个 感觉有点像黑客 您的方
  • 如何从没有结尾的管道中读取 python 中的 stdin

    当管道来自 打开 时 不知道正确的名称 我无法从 python 中的标准输入或管道读取数据 文件 我有作为例子管道测试 py import sys import time k 0 try for line in sys stdin k k
  • 用于运行可执行文件的python多线程进程

    我正在尝试将一个在 Windows 上运行可执行文件并管理文本输出文件的 python 脚本升级到使用多线程进程的版本 以便我可以利用多个核心 我有四个独立版本的可执行文件 每个线程都知道要访问它们 这部分工作正常 我遇到问题的地方是当它们
  • 对输入求 Keras 模型的导数返回全零

    所以我有一个 Keras 模型 我想将模型的梯度应用于其输入 这就是我所做的 import tensorflow as tf from keras models import Sequential from keras layers imp
  • 在python中,如何仅搜索所选子字符串之前的一个单词

    给定文本文件中的长行列表 我只想返回紧邻其前面的子字符串 例如单词狗 描述狗的单词 例如 假设有这些行包含狗 hotdog big dog is dogged dog spy with my dog brown dogs 在这种情况下 期望
  • Pandas 与 Numpy 数据帧

    看这几行代码 df2 df copy df2 1 df 1 df 1 values 1 df2 ix 0 0 我们的教练说我们需要使用 values属性来访问底层的 numpy 数组 否则我们的代码将无法工作 我知道 pandas Data

随机推荐

  • 关于常量指针的用法

    一 指向常量的指针 例1 int main int num 5 const int fun 100 int pi const int pci pi num pci fun printf num addr p value d n num nu
  • LocalDateTime、LocalDate、Date的相互转换

    目录 使用背景 转换方法 LocalDateTime 转 LocalDate LocalDate 转 LocalDateTime LocalDate 转 Date Date转LocalDate LocalDateTime转Date Date
  • 跑一跑NeuralAnnot

    GitHub 传送阵 一 运行 这东西标注器代码西八兄弟没开源 我搞完之后才发现是标注结果展示 1 环境 西八兄弟好像没给环境配置 和环境有关的就这句话 1 python 3 8或以上 不然会报错 2 pycocotools 3 libgl
  • Vue3 引入Element Plus

    Element Plus 是为适配 Vue3 而对 Element UI 进行重构后产生的前端组件库 包含丰富的基础组件 下面先贴出 官方文档 里面的介绍已经十分全面和详细 大家遇到的很多问题都可以在上面找到答案 假设现在我们已经用 vue
  • 社区发现算法(二)

    GN算法 本算法的具体内容请参考Finding and evaluating community structure in networks Newman and Girvan 重要概念 边介数 betweenness 网络中任意两个节点通
  • linux与centos的区别与联系

    linux与centos的区别与联系 1 centos是基于linux建立的操作系统 2 linux属于内核系统 只有终端命令界面 无图形界面 3 centos同时拥有终端命令界面和图形界面 4 linux和centos都是属于开源系统 一
  • 计算机视觉与图像处理学习笔记之人脸识别的三种方法

    人脸检测是指在图像中完成人脸定位的过程 而人脸识别是在人脸检测的基础上进一步判断人的身份 OpenCV提供了三种人脸识别的方法 EigenFaces 特征脸 FisherFaces 人鱼脸 Local Binary Patterns His
  • Linux-安装命令01:apt-get命令详解(超详细)【apt-get是Ubuntu默认的包管理工具】

    简介 apt get 是一条linux命令 适用于deb包管理式的操作系统 例如Ubuntu系统 主要用于自动从互联网的软件仓库中搜索 安装 升级 卸载软件或操作系统 sudo apt get y update sudo apt get y
  • JSP九大作用域

    jsp的九大作用域 request 请求对象 类型 javax servlet ServletRequest 作用域 Request response 响应对象 类型 javax servlet SrvletResponse 作用域 Pag
  • 增长黑盒

    大家好 我是Alan 增长黑盒 增长黑盒 是一家专注研究企业增长的公司 近两年来我们输出了数十篇企业增长策略和案例的深度研究报告 并建立了国内最大的增长黑客社区 今天的这篇文章将结合自己从零搭建了一整套增长工程的案例 谈一谈增长驱动力的研究
  • Java 网络编程(大全)

    前言必读 读者手册 必读 云边的快乐猫的博客 CSDN博客 一 1网络通信的基本模式分为两种 1 CS模式 Client 客户端 Server 服务端 客户端是需要程序员去开发的 例如日常使用的各种的APP 服务端就是服务器 例子 端游 依
  • fedora 8 声音问题解决方案

    症状 1 通过system config soundcard测试 可以正确识别声卡 2 普通用户无法调节音量 无法播放声音文件 解决方法 lax liulantao sudo less etc security console perms
  • unity 3D打飞碟游戏,虚拟现实大作业

    unity 3D打飞碟游戏 下载链接在文末 包含游戏菜单 按钮 分数记载等等 点我下载资源 https download csdn net download weixin 43474701 34839915
  • 信捷总线Xnet-速度模式使用总结

    XDC类型的PLC的串口配置 主要是串口1与串口4 串口1 X Net RS232 32768 2 OMMS 57600 串口4 X Net RS485 32768 2 OMMS 3000000 周期通讯 PLC配置 N为站号 可参考Xne
  • Neo4j 环境配置及问题解决

    问题目录 1 环境配置 Jdk环境配置 Neo4j下载地址 环境变量 2 遇到的问题 jdk版本不匹配 在配置neo4j install service时失败 1 环境配置 Jdk环境配置 jdk配置这里就不说啦 Neo4j下载地址 官网下
  • Rxjs的flatMap使用

    Rxjs的flatMap使用 flatMap是Rxjs比较绕的一个概念 这里我们只是讲解如何使用 在Rxjs 4 0版本时叫flatMap 在Rxjs 5 0时被更名为margeMap 现在flatMap作为margeMap的别名使用 这是
  • 3D车道线单目检测方法ONCE-3DLanes

    3D车道线检测论文 ONCE 3DLanes Building Monocular 3D Lane Detection 上传arXiv于2022年5月 是华为诺亚和复旦大学的工作 由于道路不平 传统的单目图像2D车道线检测在自动驾驶的跟踪规
  • Linux系统Load average负载详细解释

    我们知道判断一个系统的负载可以使用top uptime等命令去查看 它分别记录了一分钟 五分钟 以及十五分钟的系统平均负载 例如我的某台 服务器 root ccidcom uptime 13 14 32 up 79 days 4 00 1
  • 数组——筛选数组

    将数组 2 0 6 1 77 0 52 0 25 7 中大于等于10的元素选出来 放入新数组 实现分析 1 声明一个新的空数组 用来存放 gt 10 的元素 2 for循环遍历数组中的每个元素 判断是否大于等于10 将其存到声明的空数组中
  • python从tushare获取股票历史数据

    使用前提 安装Python 安装pandas lxml也是必须的 正常情况下安装了Anaconda后无须单独安装 如果没有可执行 pip install lxml 建议安装Anaconda 一次安装包括了Python环境和全部依赖包 减少问