基于python 的股票行情查询系统开发(二)

基于python 的股市行情查询系统开发(二)


拖更的我终于回来了,这一周lz上班上的是心力憔悴啊,工作日都没什么时间继续开发,忙于各种蛋疼的事,进度缓慢呐。。。(插一句,这周股票回暖,牛市是不是又回来了?截止到lz目前,比特币也突破了60000刀!)
废话不多说了,书接上回,我们获取了股票名称和股票代码:

在这里插入图片描述
那么,我们就可以通过股票代码,使用爬虫进行历史的数据的获取啦。
getstockdata.py

import urllib.request
import urllib
import requests as re
import datetime 
url = 'http://quotes.money.163.com/service/chddata.html?code='  #网易的历史行情数据api
urlend = 'fields=TCLOSE;HIGH;LOW;TOPEN;CHG;PCHG;TURNOVER;VOTURNOVER;VATURNOVER;TCAP;MCAP' #代表数据的最高价,最低价,开盘价,收盘价,涨跌幅等等
path = "D:\\股票数据\\"   #存取路径
def get_todaydate(): #获取最新日期
    date = datetime.datetime.now().strftime('%Y%m%d')
    return date
def get_stockdata(): #获取
    date = get_todaydate()
    stock_list = sub.read_from_csv("D:\\投资\\stocklist.csv") #路径填写股票代码文件的路径 
    for stock in stock_list:
        stock_name = stock[0]   #文件名称
        if '股票名称' in stock_name: #第一行我们不需要
            continue
        if "*" in stock_name:
            stock_name = stock_name.replace('*',"(星)")  #windows文件不能以*开头命名,所以在下出此下策代替- -    
        r = re.get(url+'0'+stock[1]+'&end='+date+urlend) #上证股票代码前加0开头 深证股票代码加1开头
        with open(path+stock_name+'.csv','w',newline='',encoding='utf-8') as csvfile:
            print('正在写入股票'+ stock_name) #写入文件
            csvfile.write(r.text)

好啦 ,我们执行以下,看看怎么样:在这里插入图片描述
正在跑,开始写入文件了,看看对不对:
在这里插入图片描述
文件大小不是0kb,有数据了,打开看看数据完整不,这里我们点个中远海控的数据看看:
在这里插入图片描述
数据是有了,成交笔数测试了很久,好像目前是没有的。。。
上证目前有1700多只股票,数据一般要下一个多小时,目前我已经把数据打包上传资源了,链接在这上证A股历史股票数据.
在这里插入图片描述
好了,我们已经获取了上证A股历史数据了。那么就要用这些数据进行分析了,首先,导入pandas包,不用过多解释,强大的数据统计分析模块,可以快速地对数据进行分类分组等等。
首先,一个股票最基本的通过它的价格就应该得出他的均线,比如说5日线啊,10日线啊,30日,60日等等,这里我就举例上证指数来画均线。
首先,导入上证指数的数据,上证的代码为000001,同理获取数据。
drawplot.py

import requests
import time
import re
import csv
import pandas as pd
from pylab import mpl
import pil
import datetime
import matplotlib.pyplot as plt
import numpy as np 
df = pd.read_csv('D:\\股票数据\\上证指数.csv',header=0,index_col=0)#index_col指定索引,默认我们选择是日期
df1 = df.iloc[::-1] #由于数据是从大到小的,我们应该将其倒序,pandas中的dataframe支持数据的各类操作。
df0 = df1[['收盘价']] #计算均线我们只需要收盘价
stockcode = df.iloc[0,0]  #获取股票名字和代码
stockname = df.iloc[1,1]
df_mean5 = df1.rolling(window=5).mean()  #5日线 rolling方法计算出均值
df_mean5 =df_mean5.rename(columns={'收盘价':'MA5'})
df_mean10 = df1.rolling(window=10).mean()  #10日线
df_mean10 =df_mean10.rename(columns={'收盘价':'MA10'})
df_mean20 = df1.rolling(window=20).mean()#20日线
df_mean20 =df_mean20.rename(columns={'收盘价':'MA20'})
df_mean60 = df1.rolling(window=60).mean()#60日线
df_mean60 =df_mean60.rename(columns={'收盘价':'MA60'})
print(df_mean5)  # 输出5日均线数据

看看输出数据:
在这里插入图片描述
看看财经网站上的大盘日k线数据,验证一下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
完全正确,成功!接下来我们进行收盘价的曲线描绘:

#concat表示拼接多个dataframe
df_new = pd.concat([df1,df_mean10,df_mean20,df_mean60,df_mean240],axis=1) #axis=1表示按行进行拼接两个dataframe
df_new.plot(kind = 'line',sharex = True,sharey = True,figsize=(50,8),title=stockcode+stockname,grid=True,fontsize=13)
#pandas中plot进行画图 
plt.show()

生成的图标如图:
在这里插入图片描述
额,由于是从1990到最新日期的大盘点数,比较密集,我们放大看一下2015年左右的数据:
在这里插入图片描述
传说中的大牛市就呈现在我们面前啦!

(未完待续。。。)

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SharlockYu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值