用爬虫分析沪深300指数超长走势

news2024/11/29 0:33:56

我们知道,一个股市里面有非常多的股票,我们如何能够量化整个股市整体的行情呢,答案是通过一些综合性的指数。本文所选用的沪深300就是这类指数中的一个。我们先来看一下百度百科对于沪深300的解释。

由于股票价格起伏无常, 投资者必然面临市场价格风险。对于具体某一种股票的价格变化,投资者容易了解,而对于多种股票的价格变化,要逐一了解,既不容易,也不胜其烦。为了适应这种情况和需要,一些金融服务机构就利用自己的业务知识和熟悉市场的优势,编制出股票价格指数,公开发布,作为市场价格变动的指标。投资者据此就可以检验自己投资的效果,并用以预测股票市场的动向。同时,新闻界、公司老板乃至政界领导人等也以此为参考指标,来观察、预测社会政治、经济发展形势。

emmm,说的有点复杂,简单说就是选择了市场上比较有代表性的300只股票,按照权重计算的一个加权和,而且指数会根据市场的变化调整所选用的股票,因此可以认为沪深300就是股市的晴雨表。更有甚者,假如我们买了一只基金,这个基金还跑不过沪深300指数,那么有几种可能:

  • 第一种就是这只基金选取的股票是低于市场的平均收益的,可能是基金经理的技术不够好;
  • 第二种可能是这只基金所选择的赛道目前都处于被低估的状态

总而言之,我们在选股的时候可以根据类似沪深300这样的指数进行参考。

在网上查数据的时候,很容易查到沪深300最近一段时间的表现,但是如果想看看超长时间的表现则会比较困难。但是其实,很多网站都有历史数据,只不过没有直接进行整合然后展示出来,我们需要自己用爬虫爬取数据,然后绘图。

这里使用搜狐证券的接口,我直接将接口和参数放出来。

https://q.stock.sohu.com/hisHq?code=zs_399300&start=20190102&end=20200101&stat=1&order=D&period=w&callback=historySearchHandler&rt=jsonp

这是一个get类型的接口,下面介绍各个参数的含义

  • code:股票代码,zs_399300是沪深300的代码
  • start:开始时间,20190102表示2019年1月2日
  • end:结束时间,20200101表示2020年1月1日
  • stat:不明
  • order:排序顺序,D表示倒叙排序
  • period:表示周期,d表示天,w表示周,m表示月
  • callback:不明
  • rt:不明

以上信息中比较需要我们填写的就是code,start和end,由于我们统计的是超长周期的走势,因此period可以选择w,获取周信息即可看,下面是拼接url的代码

# 组装url
def packurl(stockcode, starttime, endtime):
    url = "https://q.stock.sohu.com/hisHq?"
    url += "code="
    url += stockcode
    url += "&start="
    url += starttime
    url += "&end="
    url += endtime
    url += "&stat=1"
    url += "&order=D"
    url += "&period=w"
    url += "&callback=historySearchHandler"
    url += "&rt=jsonp"
    print(url)
    return url

我们需要传入股票代码,开始时间和结束时间。

知道了接口后,其实就是非常简单了,我们将数据爬下来,然后使用matplotlib绘制出来就行。

下面就是所有的代码,我们从2005年的数据统计到2023年的数据,大概是18年左右。

import requests
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import json

xAxis = []
yAxis = []

YLIMMIN = 500
YLIMMAX = 6000

plt.rcParams['font.sans-serif']=['SimHei']
MAJOR_LOCATOR = 20

font1 = {
    'size' : 30,
}
FONTSIZE = 30
# 颜色字典
cnames = {
'aliceblue':            '#F0F8FF',
'antiquewhite':         '#FAEBD7',
'aqua':                 '#00FFFF',
'aquamarine':           '#7FFFD4',
'azure':                '#F0FFFF',
'beige':                '#F5F5DC',
'bisque':               '#FFE4C4',
'black':                '#000000',
'blanchedalmond':       '#FFEBCD',
'blue':                 '#0000FF',
'blueviolet':           '#8A2BE2',
'brown':                '#A52A2A',
'burlywood':            '#DEB887',
'cadetblue':            '#5F9EA0',
'chartreuse':           '#7FFF00',
'chocolate':            '#D2691E',
'coral':                '#FF7F50',
'cornflowerblue':       '#6495ED',
'cornsilk':             '#FFF8DC',
'crimson':              '#DC143C',
'cyan':                 '#00FFFF',
'darkblue':             '#00008B',
'darkcyan':             '#008B8B',
'darkgoldenrod':        '#B8860B',
'darkgray':             '#A9A9A9',
'darkgreen':            '#006400',
'darkkhaki':            '#BDB76B',
'darkmagenta':          '#8B008B',
'darkolivegreen':       '#556B2F',
'darkorange':           '#FF8C00',
'darkorchid':           '#9932CC',
'darkred':              '#8B0000',
'darksalmon':           '#E9967A',
'darkseagreen':         '#8FBC8F',
'darkslateblue':        '#483D8B',
'darkslategray':        '#2F4F4F',
'darkturquoise':        '#00CED1',
'darkviolet':           '#9400D3',
'deeppink':             '#FF1493',
'deepskyblue':          '#00BFFF',
'dimgray':              '#696969',
'dodgerblue':           '#1E90FF',
'firebrick':            '#B22222',
'floralwhite':          '#FFFAF0',
'forestgreen':          '#228B22',
'fuchsia':              '#FF00FF',
'gainsboro':            '#DCDCDC',
'ghostwhite':           '#F8F8FF',
'gold':                 '#FFD700',
'goldenrod':            '#DAA520',
'gray':                 '#808080',
'green':                '#008000',
'greenyellow':          '#ADFF2F',
'honeydew':             '#F0FFF0',
'hotpink':              '#FF69B4',
'indianred':            '#CD5C5C',
'indigo':               '#4B0082',
'ivory':                '#FFFFF0',
'khaki':                '#F0E68C',
'lavender':             '#E6E6FA',
'lavenderblush':        '#FFF0F5',
'lawngreen':            '#7CFC00',
'lemonchiffon':         '#FFFACD',
'lightblue':            '#ADD8E6',
'lightcoral':           '#F08080',
'lightcyan':            '#E0FFFF',
'lightgoldenrodyellow': '#FAFAD2',
'lightgreen':           '#90EE90',
'lightgray':            '#D3D3D3',
'lightpink':            '#FFB6C1',
'lightsalmon':          '#FFA07A',
'lightseagreen':        '#20B2AA',
'lightskyblue':         '#87CEFA',
'lightslategray':       '#778899',
'lightsteelblue':       '#B0C4DE',
'lightyellow':          '#FFFFE0',
'lime':                 '#00FF00',
'limegreen':            '#32CD32',
'linen':                '#FAF0E6',
'magenta':              '#FF00FF',
'maroon':               '#800000',
'mediumaquamarine':     '#66CDAA',
'mediumblue':           '#0000CD',
'mediumorchid':         '#BA55D3',
'mediumpurple':         '#9370DB',
'mediumseagreen':       '#3CB371',
'mediumslateblue':      '#7B68EE',
'mediumspringgreen':    '#00FA9A',
'mediumturquoise':      '#48D1CC',
'mediumvioletred':      '#C71585',
'midnightblue':         '#191970',
'mintcream':            '#F5FFFA',
'mistyrose':            '#FFE4E1',
'moccasin':             '#FFE4B5',
'navajowhite':          '#FFDEAD',
'navy':                 '#000080',
'oldlace':              '#FDF5E6',
'olive':                '#808000',
'olivedrab':            '#6B8E23',
'orange':               '#FFA500',
'orangered':            '#FF4500',
'orchid':               '#DA70D6',
'palegoldenrod':        '#EEE8AA',
'palegreen':            '#98FB98',
'paleturquoise':        '#AFEEEE',
'palevioletred':        '#DB7093',
'papayawhip':           '#FFEFD5',
'peachpuff':            '#FFDAB9',
'peru':                 '#CD853F',
'pink':                 '#FFC0CB',
'plum':                 '#DDA0DD',
'powderblue':           '#B0E0E6',
'purple':               '#800080',
'red':                  '#FF0000',
'rosybrown':            '#BC8F8F',
'royalblue':            '#4169E1',
'saddlebrown':          '#8B4513',
'salmon':               '#FA8072',
'sandybrown':           '#FAA460',
'seagreen':             '#2E8B57',
'seashell':             '#FFF5EE',
'sienna':               '#A0522D',
'silver':               '#C0C0C0',
'skyblue':              '#87CEEB',
'slateblue':            '#6A5ACD',
'slategray':            '#708090',
'snow':                 '#FFFAFA',
'springgreen':          '#00FF7F',
'steelblue':            '#4682B4',
'tan':                  '#D2B48C',
'teal':                 '#008080',
'thistle':              '#D8BFD8',
'tomato':               '#FF6347',
'turquoise':            '#40E0D0',
'violet':               '#EE82EE',
'wheat':                '#F5DEB3',
'white':                '#FFFFFF',
'whitesmoke':           '#F5F5F5',
'yellow':               '#FFFF00',
'yellowgreen':          '#9ACD32'}


# 发送get请求
def find(url, A):
    result = A.get(url, timeout=7, allow_redirects=False)
    print(result.text)
    return result.text

# 组装url
def packurl(stockcode, starttime, endtime):
    url = "https://q.stock.sohu.com/hisHq?"
    url += "code="
    url += stockcode
    url += "&start="
    url += starttime
    url += "&end="
    url += endtime
    url += "&stat=1"
    url += "&order=D"
    url += "&period=w"
    url += "&callback=historySearchHandler"
    url += "&rt=jsonp"
    print(url)
    return url


# 将响应结果变成json
def changeResp(str):
    str = str.replace("historySearchHandler(", "")
    str = str.replace(")", "")
    dict = json.loads(str)
    x = []
    y = []
    for i in range(len(dict[0]["hq"])):
        x.append(dict[0]["hq"][i][0])
        y.append(float(dict[0]["hq"][i][2]))
    x.reverse()
    y.reverse()
    for i in range(len(x)):
        xAxis.append(x[i])
        yAxis.append(y[i])


# 绘图
def draw(filename, title):
    # xAxis.reverse()
    # yAxis.reverse()
    print(xAxis)
    print(yAxis)
    plt.figure(figsize=(100, 25))
    plt.title(title, font1)
    plt.plot(xAxis, yAxis, color=cnames["cadetblue"],label=title)
    # 隐藏部分x轴坐标
    plt.gca().xaxis.set_major_locator(ticker.MultipleLocator(MAJOR_LOCATOR))
    plt.ylim(YLIMMIN, YLIMMAX)
    plt.xticks(rotation=30)
    # 设置刻度的字体大小
    plt.xticks(fontsize=FONTSIZE)
    plt.yticks(fontsize=FONTSIZE)
    plt.grid()
    plt.rcParams.update({'font.size': FONTSIZE})  # 设置图例字体大小
    plt.legend()
    plt.savefig("./" + filename + ".png")
    plt.savefig("./" + filename + ".svg")
    #plt.show()



if __name__ == "__main__" :
    headers = {
        'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
        'Connection': 'keep-alive',
        'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0',
        'Upgrade-Insecure-Requests': '1'
    }
    A = requests.Session()
    A.headers = headers

    title_list = ["沪深300"]
    code_list = ["zs_399300", ]
    starttime_list = ["20050101", "20060102", "20070102", "20080102", "20090102", "20100102", "20110102", "20120102", "20130102", "20140102",
                      "20150102", "20160102", "20170102", "20180102", "20190102",
                      "20200102", "20210102", "20230102"]
    endtime_list = ["20060101", "20070101", "20080101", "20090101", "20100101", "20110101", "20120101", "20130101", "20140101", "20150101",
                    "20160101", "20170101", "20180101", "20190101", "20200101",
                    "20210101", "20220101", "20230520"]

    for i in range(len(code_list)):
        codestock = code_list[i]
        title = title_list[i]
        for j in range(len(starttime_list)):
            str = find(packurl(codestock, starttime_list[j], endtime_list[j]), A)
            changeResp(str)
        draw(codestock, title)

以上是python代码,你安装好三方库后直接运行就行了,下面来看一下走势图

这是一张超长图,不知道能不能看的清楚。

看到上面走势图一开始我也是比较惊讶的,从图中可以总结出几个信息:

  • 2005年到2006年指数都是比较低的,都不到1000点,一直到2007年左右开始起飞
  • 2007年到2008年初指数几乎冲到了历史最高点,达到将近6000点
  • 2008年中指数开始腰斩,期间发生了什么,估计也不需要我多说了
  • 2008年年末指数达到了最低点,随后开始拉升,估计是政府的救市计划起作用了,中国开始了基建狂魔模式
  • 指数到2014年都还是不温不火的状态,随后迎来了一个小高峰,但很快又开始回落
  • 到了2020年又是一个小高峰,但是今年2023年又开始回落

我写这篇文章的时候,沪深300指数大概是3900多点,不到4000点。不知道大家看到这个指数是什么感觉,我的感觉是这个指数波动很大,非常大,总是大起大落,高的时候很高,低的时候又很低;然后,目前的话,肯定是处于一个高位的状态,我们不否认经济相比于过去有了非常大的进步,但是股市终究也是充满了泡沫。

这是我对于宏观数据的第一次数据分析,其实互联网上是可以查询到非常多的宏观经济数据的,借助这些数据可以很好的观察整个经济的形式,以及相互之间的关联,后续的话我也会努力去学习一下宏观经济学,然后结合所学知识加深自己对于世界的认知。

最后提醒一句

入市有风险,投资需谨慎

本文不提供任何投资建议。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/550553.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

跟姥爷深度学习6 卷积网络的数学计算

一、前言 前面简单用TensorFlow的全连接网络做了气温预测然后深入了解了一下全连接网络的数学计算,接着用CNN(卷积)网络做了手写数字识别,本篇就接着这个节奏来看卷积网络的数学计算。 二、卷积网络回顾 前面我们使用卷积网络时…

setContentHuggingPriority和setContentCompressionResistancePriority的使用

需求&#xff1a; 两个label并排显示&#xff0c;文字内容由服务器返回&#xff0c;label宽度以文字内容自适应&#xff0c;label之间间距大于等于10. 需要考虑以下情况&#xff1a; 当两个label的宽度和 < 屏幕宽度时&#xff0c;各自设置约束&#xff0c;无需处理&#…

【数据结构】Bloom Filter 布隆过滤器

背景 在分布式系统中&#xff0c;比如缓存Redis中&#xff0c;当出现缓存击穿问题&#xff0c;同时访问缓存和数据库都查询不到数据时&#xff0c;对缓存和数据库压力比较大&#xff0c;那么有没有好的数据结构可以快速查询一个数据是否在数据库中&#xff0c;而这个就是大名鼎…

韦东山驱动大全:第四篇 基础-Makefile

1、mount -t nfs -o nolock,vers3 192.168.1.137:/home/book/nfs_rootfs(服务器目录) /mnt(板子目录) 2、gcc -o hello hello.c -v 3、 4、

golang 微服务中的断路器 hystrix

之前说到过微服务容错处理&#xff0c;可以使用 断路器 使用断路器的原因是&#xff1a; 当下游的服务因为过载或故障&#xff0c;无法提供服务&#xff0c;我们需要及时的让上游服务知悉&#xff0c;且暂时 熔断 调用方和提供方的调用链&#xff0c;这是为了避免服务雪崩现象…

二层交换机与三层交换机区别

这两种类型交换机的工作方式有所不同&#xff1a; 二层交换机可以识别数据包中的MAC地址&#xff0c;根据MAC地址进行转发&#xff0c;并将这些MAC地址与对应的端口记录在自己内部的一个地址表中。二层交换机不遵循路由算法。三层交换机转发基于目标 IP 地址&#xff0c;数据包…

143. 重排链表

题目描述&#xff1a; 主要思路&#xff1a; 没有找到什么特殊的捷径&#xff0c;主要就是链表的一些基础操作。 实现了三个函数&#xff0c;一个是找到链表的中心结点&#xff0c;一个是将中心结点之后的链表进行翻转&#xff0c;另一个就是两段链表进行拼接。 class Soluti…

庄懂的TA笔记(十四十六)<特效:火焰 + 水流>

庄懂的TA笔记&#xff08;十四&十六&#xff09;&#xff1c;特效&#xff1a;火焰 水流&#xff1e; 目录 一、作业展示&#xff1a; 二、示范&#xff1a;火: 参考资料&#xff1a; 实现思路&#xff1a; 实践操作&#xff1a; 三、示范&#xff1a;水: 实现思路&am…

Mybatis Plus 使用@TableLogic实现逻辑删除

文章目录 步骤1:修改数据库表添加deleted列步骤2:实体类添加属性步骤3:运行删除方法知识点1&#xff1a;TableLogic 接下来要讲解是删除中比较重要的一个操作&#xff0c;逻辑删除&#xff0c;先来分析下问题: 这是一个员工和其所签的合同表&#xff0c;关系是一个员工可以签多…

如何用 ChatGPT 帮你10分钟读完数据库论文

本周&#xff0c;OpenAI 向所有 ChatGPT Plus 用户开放了两个重要功能&#xff1a; Web Browsing 和 Plugins 它俩都需要用户自己开启&#xff0c;才能使用&#xff0c;如下&#xff1a; 作为对数据库论文的爱好者&#xff0c;我第一款挑选的 Plugin 便是 ChatWithPDF,毕竟真的…

基于脉冲神经网络的物体检测

访问【WRITE-BUG数字空间】_[内附完整源码和文档] 研究的意义在于探索脉冲神经网络在目标检测上的应用&#xff0c;目前主流的脉冲神经网络训练算法有直接BP训练、STDP无监督训练和训练好的ANN的转化&#xff0c;虽然训练算法众多&#xff0c;但是SNN仍然没有一套成熟的训练算…

games101作业3

作业要求 修改函数 rasterize_triangle(const Triangle& t) in rasterizer.cpp: 在此 处实现与作业 2 类似的插值算法&#xff0c;实现法向量、颜色、纹理颜色的插值。 修改函数 get_projection_matrix() in main.cpp: 将你自己在之前的实验中 实现的投影矩阵填到此处&am…

【JUC基础】08. 三大工具类

1、前言 JUC包中包含了三个非常实用的工具类&#xff1a;CountDownLatch&#xff08;倒计数器&#xff09;&#xff0c;CyclicBarrier&#xff08;循环栅栏&#xff09;&#xff0c;Semaphore&#xff08;信号量&#xff09;。 2、倒计数器&#xff1a;CountDownLatch 2.1、…

基于Java+SpringBoot+Vue前后端分离机票预定/订购系统设计与实现(视频讲解)

博主介绍&#xff1a;✌全网粉丝3W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

章节2 Matplotlib 绘图基础

目录 课时 2 Matplotlib简介及绘制简单线型图 课时 3 图例和标题 课时 4 自定义图形样式 课时 4 绘制条形图 课时 2 Matplotlib简介及绘制简单线型图 线的画法 plt.plot&#xff0c;同时提供x轴坐标和y轴坐标 课时 3 图例和标题 x 轴数据默认即可&#xff0c;如下所示 x轴代…

SimpleDateFormat非线程安全问题

文章目录 1. SimpleDateFormat介绍2. 测试SimpleDateFormat的非线程安全性3. 解决方案一4. 解决方案二 1. SimpleDateFormat介绍 SimpleDateFormat是Java中的一个类&#xff0c;用于将日期对象格式化为特定的字符串表示形式&#xff0c;或者将特定格式的字符串解析为日期对象。…

netstat 连接通信的信息和状态、以及ss

netstat 常用参数 t 只显示tcpu只显示udpnnum 数字形式显示地址和端口号l listen 显示监听端口 pprogram 显示进程aall 所有连接和监听r显示路由表 netstat -lnp 显示服务监听端口tcpudpsocket &#xff0c;socket 文件也用来同一台服务器的进程之间通信的…

Spring中的MergedBeanDefinitionPostProcessor有什么作用 ?

Spring中的MergedBeanDefinitionPostProcessor有什么作用 ? 引言调用时机加载bean定义的几种方式postProcessMergedBeanDefinition接口作用小结 引言 MergedBeanDefinitionPostProcessor这个Bean后置处理器大家可能关注的比较少,其本身也只提供了一个bean生命周期回调接口: …

iptable 防火墙一

目录 iptables概述netfilter/iptables 关系四表五链四表&#xff1a;五链&#xff1a; 规则链之间的匹配顺序主机型防火墙&#xff1a;规则链内的匹配顺序&#xff1a; iptables 安装iptables防火墙的配置方法&#xff1a;iptables 命令行配置方法&#xff1a;常用的控制类型&a…

一文读懂大语言模型

以ChatGPT为代表的大语言模型被很多人认为是新一轮科技革命的起点&#xff0c;本文旨在通过概念性介绍&#xff0c;让普通人能够尽可能理解人工智能以及大语言模型的基本概念&#xff0c;从而了解这些技术能做以及不能做什么。原文: A Very Gentle Introduction to Large Langu…