目标:画创业板指数

最近有个奇怪的现象:大盘涨基金不涨,大盘跌基金更迭,有同事怀疑是不是指数有问题,所以我们就自己动手画一个指数。
这次选取创业板来画,因为股票数量少,比较适合学习。
可后来才发现这个指数有坑。浪费了1天时间的自我摸索,后来通过女神的帮助,才彻底搞清楚原委。


学习内容:

指数有一套标准的计算公式,深圳创业板的指数计算公式深交所官网公布有,还可以下载PDF和excel,告诉你成分股和权重,而且每半年优胜劣汰一次,进行一次调整,可能指数基金没有这么快调整过来,所以指数跟踪应该有偏离偏差。
网站地址如下:
下载成分股excel
指数计算公式
之前有个疑问解不开:价格按照公式折算能匹配官网数据,但是成交量死活和官网的数据合不上,无论是直接累加还是权重累加。后来经问SJS,才知道这里的成交量是整个创业板的成交量,也就是:算价格的时候,选取最优的100个成分股,算成交量的时候,又用的整个创业板股票的成交量,这明显不符合逻辑啊。
但目前创业板多个指数就是这么算的。一切还不是为了.。。。


效果:

自己画的效果如下:

深交所官网公布的数据如下:

价格跟深交所的行情能吻合。
同花顺行情网站公布成交量:

可以看到,成交量终于对上号了。打印的数据也能可深交所公布的分钟成交量对上。

成交量谜题终于解开。真的是KD。


代码部分:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from jqdatasdk import *auth('*','*')    #这里用户名密码需要前往聚宽官网自行申请
is_auth = is_auth()
if is_auth == True:print("登录成功")
else:print("连接失败")
#print(__version__)cyb_Cons = pd.read_excel('399006_cons.xlsx')    #获取创业板的成分股
cyb_ConsNow = cyb_Cons[cyb_Cons['日期']=='2020-12-31']    #获取最新的一期成分股
#print(len(cyb_ConsNow))
#print(cyb_ConsNow.head)
zqdmList = np.array(cyb_ConsNow['样本代码'].values)     #成分股代码
#print(zqdmList)
quanzhong = np.array(cyb_ConsNow['权重(%)'].values)   #权重
quanzhong=quanzhong.copy()/100
#print(quanzhong)#昨天的收盘价,是今天指数的基准
yestedayCYB = get_price(security='399006.XSHE', start_date='2021-01-15 14:58:00', end_date='2021-01-15 14:58:00', frequency='minute',fq='pre', fields=['close','volume','money'])
print(yestedayCYB)#基数--昨天的收盘价,是今天指数的基准
jishu = float(yestedayCYB['close'].values)
#voljisu =  int(yestedayCYB['volume'].values)
print('基数值为:' + str(jishu))temp = pd.DataFrame()     #用来缓存计算变量
tempyes = pd.DataFrame()    #用来缓存昨天的计算变量
volumetemp = pd.DataFrame()     #用来缓存计算变量
volumeYesTemp = pd.DataFrame()     #用来缓存计算变量
moneyTemp = pd.DataFrame()     #用来缓存计算金额
#获取股票每分钟信息
for zqdm in zqdmList:#print(type(zqdm))df = get_price(security=str(zqdm)+'.XSHE', start_date='2021-01-18 09:30:00', end_date='2021-01-18 15:00:00', frequency='minute', fields=['open', 'close','money','volume'])dfyes = get_price(security=str(zqdm) + '.XSHE', start_date='2021-01-15 14:58:00', end_date='2021-01-15 14:58:00', frequency='minute', fields=['close','money','volume'])qz = cyb_ConsNow[cyb_ConsNow['样本代码']==zqdm]['权重(%)'].values   #权重#print(qz)#print(df['close']*qz)temp[zqdm] = df['close'] * qz / 100tempyes[zqdm]=dfyes['close']*qz/100volumetemp[zqdm] = df['volume']/100/10000   #万手moneyTemp[zqdm] = df['money']/ 100000000   #亿元print(temp.head(2))
print(tempyes.head(1))
print(temp.sum(axis=1))
print(tempyes.sum(axis=1))
jintian = pd.DataFrame()
zuotian = pd.DataFrame()
jintian['jq'] = temp.sum(axis=1)
zuotian['jq'] = tempyes.sum(axis=1)
zs = jishu*jintian['jq']/zuotian['jq'].values
print(zs)x=np.array(df.index)    #时间序列
xx=np.arange(0,len(x),1)  # X轴长度
#画图参数
fig = plt.figure()
ax1 = fig.add_subplot(211)
plt.rcParams['font.sans-serif']=['SimHei']  #解决中文乱码
plt.rcParams['axes.unicode_minus'] = Falseax1.set_title('行情')
ax1.plot(xx,zs,c='blue')
plt.xlabel('交易时间(分钟)')
plt.ylabel('成交价格(元)')
ax1.legend('成交价格')
plt.grid()#plt.show()#画成交量
dfall=get_all_securities(types='stock', date='2021-01-18')
print(dfall['display_name'].index)
dfcyb= dfall[dfall['display_name'].index>='300000.XSHG']     #只要创业板股票
dfcyb2 = dfcyb[dfcyb['display_name'].index<='309999.XSHG']   #只要创业板股票
#print(dfcyb2.index)
cyblist = np.array(dfcyb2.index)
#print(cyblist)
vol = pd.DataFrame()     #用来缓存计算金额
for cybzqdm in cyblist:dfcyb = get_price(security=cybzqdm, start_date='2021-01-18 09:30:00', end_date='2021-01-18 15:00:00',frequency='minute', fields=['volume'])vol[cybzqdm[0:6]]=dfcyb['volume']#print(vol.head())
volsum = pd.DataFrame()     #用来缓存计算金额
volsum['volume'] = vol.sum(axis=1)
print(volsum.head())
print(np.round(volsum['volume'].values/1000000,2))   #单位换算成万手,保留两位小数ax2 = fig.add_subplot(212)
ax2.bar(xx,np.round(volsum['volume'].values/1000000,2),color='red',label='left')
ax2.set_ylabel('成交量(万手)')
plt.xlabel('交易时间(分钟)')
plt.grid()
ax2.legend('成交量')
#plt.subplots_adjust(left=0.01)
plt.show()

重点:数据的获取和筛选
1、 DataFrame和array的相互转换。
2、画图工具
3、 获取股票行情
4、折算股票成交量

Python重现创业板指数行情相关推荐

  1. python中requests库获取东方财富网动态指数行情数据

    利用python中requests获取动态股市指数行情数据 这里数据来源为东方财富网,代码如下: #coding="utf-8" import requests from time ...

  2. Windows下利用python+selenium+firefox爬取动态网页数据(爬取东方财富网指数行情数据)

    由于之前用urlib和request发现只能获取静态网页数据,目前爬取动态网页有两种方法, (1)分析页面请求 (2)Selenium模拟浏览器行为(霸王硬上弓),本文讲的就是此方法 一.安装sele ...

  3. python a股行情_使用Python下载A股行情的几种方法

    使用Python下载A股行情的几种方法 1. tushare Tushare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从数据采集.清洗加工 到 数据存储的过程,能够为金融分 ...

  4. python重现 mysql server has gone away错误以及解决方案

    文章目录 一.前言 二.了解wait_timeout 和interactive_timeout 两个参数 1.命令行操作 2.wait_time 设置失效问题 3.参考手册概念,解释两个参数 4.那么 ...

  5. python 身体BMI指数判断

    3.30 python身体BMI指数判断 代码: height,weight=eval(input("请输入身高(米)体重(公斤):")) bim=weight/pow(heigh ...

  6. python 实时获取股票行情脚本

    本人股坛菜鸡,15年股灾全身而退,是不可能的,亲身上场体验1.0,2.0,3.0版本股灾.终身难忘. 优秀的我最近又兴起了畅游股海的念头,但是为了避免又一次卖血下海的后果,这次打算运用一点python ...

  7. Python float输出指数形式和小数形式切换(即科学计数法和完整数值切换)

    Python float输出指数形式和小数形式切换(即科学计数法和完整数值切换) (本文数字全部瞎编,仅作举例之用,请勿相信. 另,本人Python初学者,写个文章作为笔记,也希望可以对他人有所帮助, ...

  8. A股常见的宽基指数:沪深300,中证500,和创业板指数

    沪深300指数:是国内最具代表性的指数 指数简介: 沪深300指数是由中证指数公司开发的,从上海证券交易所和深圳证券交易所挑选的规模最大,流动性最好的 300 只股票组成 其实指数的命名规则还是挺有意 ...

  9. python获取期货实时行情_量化投资者是如何获取实时行情数据的呢?

    使用Python下载A股行情的几种方法 这几种方法如下:聚宽jqdatasdk 网址:joinquant.com 蜂鸟数据trochil 网址:trochil.cn 1. tushare Tushar ...

最新文章

  1. 转载:JMS-ActiveMQ浅析
  2. git pull 默认拉取远端其他分支 问题解决
  3. cmd 控制台 提示:请求的操作须要提升!
  4. mysql忘记密码解决方法
  5. python3.6下载百度云_Python3.6零基础入门与爬虫案例开发教程
  6. url中携带中文乱码问题
  7. OpenCV 中的绘制功能
  8. python 去除所有的中文 英文标点符号
  9. 【opencv 学习】仿射变换(图像的旋转、缩放、平移)
  10. find找多个单元格的文本_灵活套用LEFT、RIGHT、MID、FIND函数,解决90%的信息提取问题...
  11. Mac的搜狗输入法和QQ输入法加入⌘⌥⌃⇧自定义短语
  12. 女神相册密码忘记了,我只用Python写了20行代码
  13. Echarts:Vue3中引入地图,展示不同省市数据
  14. java 常用汉字_中国常用汉字有多少
  15. java毕业设计新能源汽车故障分析2021Mybatis+系统+数据库+调试部署
  16. moto+早期android手机,七款摩托罗拉早期经典机型回顾
  17. 如何安装perl模块
  18. css完美参考手册 chm,css4.0参考手册
  19. 2023广州大米展会
  20. Lintcode51:上一个排列

热门文章

  1. 计算机专业颈椎有问题,出现这4个表现,你的颈椎病已经很严重了!上班族尤需警惕_39健康网...
  2. 操作 神通数据库_国产数据库最好的时代
  3. c语言结构体位定义,C语言结构体位域
  4. json.stringify()与json.parse()的区别,json.stringify()的妙用
  5. Android开发之PCM音频流采集| 音频流录制与PCM音频流播放的实现方法
  6. c语言在文本每一行末尾追加字符串,c语言在末尾添加 C语言 在链表尾部添加节点...
  7. c语言中数组大小10000,C语言,怎么存一个很大的数,比方说10000的阶乘
  8. 查找数组是否有重复元素
  9. Docker搭建NSQ实时分布式消息集群
  10. html5--switch选择结构的优化