博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python获取股票机构调研数据
阅读量:4210 次
发布时间:2019-05-26

本文共 4118 字,大约阅读时间需要 13 分钟。

最近听了一个线上讲座,讲座的内容大概就是讲解量化投资的。因为本人目前没做过相关的实践,但是对于老师提出的思路很赞同,老师的思路是股票市场往往都是机构说了算,但是机构具体想要拉升那只股票,就不得而知。那么有没有一种类似阴谋论的现实现象来串通一气,然后拉升股票的价格。确实是有这种操作。当然不能说是串通一气了,但是多少有那种意思。而这种所谓串通一气的方式就叫做“机构调研”,也就是说机构管理者会在持股前与上市公司进行沟通,表达机构想要持有该上市公司的股票的想法。当然也不能说这么明白的话,机构调研除了投资的成分还有现场观摩等,相当于机构了解了该公司运作,当然具体的调研结果也是会通过报表的方式向外进行暴露。一个潜在的现象是调研后的股票会有一定的异动,所以这也是一般投资者应该关注的地方。

所以这块作者就通过天天基金网站来拉取股票的机构调研信息。具体代码如下

配置文件

[Mysql-Database]host=localhostuser=rootpasswd=tianjingledb=nouncharset=utf8[Email]pass=1user=1062879@qq.comsender=2695062879@qq.comreceiver=2695062879@qq.com,1640910489@qq.com[System]syn=Truescans=4000[Jgdy]fetchUrl=http://datainterface3.eastmoney.com/EM_DataCenter_V3/api/JGDYHZ/GetJGDYMX?js=datatable435798&tkn=eastmoney&secuCode={0}&sortfield=4&sortdirec=1&pageNum={1}&pageSize={2}&cfg=jgdyhz&p=2&pageNo={3}&_=1610583145484

配置文件初始化

import configparserclass Connection:    host = 'localhost'    port = 3307    user = 'root'    passwd = ''    db = 'noun'    charset = 'utf8'    emailPass=''    emaialUser=''    sender=''    receivers=''    jgdyUrl=''    syn=False    scans=2000    def __init__(self):        cf = configparser.ConfigParser()        cf.read("config.ini")          self.emailPass = cf.get("Email","pass")         self.emaialUser = cf.get("Email","user")          self.sender = cf.get("Email","sender")        self.receivers = cf.get("Email","receiver")        self.host = cf.get("Mysql-Database", "host")          self.user = cf.get("Mysql-Database", "user")          self.passwd = cf.get("Mysql-Database", "passwd")         self.db = cf.get("Mysql-Database", "db")          self.charset = cf.get("Mysql-Database", "charset")         self.syn=cf.get("System","syn")        self.scans=cf.get("System","scans")        self.jgdyUrl=cf.get("Jgdy","fetchUrl")

获取数据相关代码

import jsonimport uuidimport pymysqlimport requestsfrom prettytable import PrettyTablefrom src.NewTun.Connection import Connectionclass JgdyQuery:    connection = None    cursor = None    #解析数据    def __init__(self):        self.connection = Connection()    #解析数据    def printJgdyInfo(self,code,page):        url = self.connection.jgdyUrl        url=url.format(code,page,10,page)        datas = self.get_url(url)        # 取出json        datas = datas[datas.find('{'):datas.find('}') + 3]  # 从出现第一个{开始,取到第三个花括号}        jsonBody = json.loads(datas)        jsonDatas = jsonBody['Data']        realData=jsonDatas[0]        splitStr=realData["SplitSymbol"]        FieldName=realData["FieldName"]        FieldNames=FieldName.split(',')        myData=realData['Data']        fundsArray=[]        for data in myData:            fundsArray = data.split(splitStr)            self.save2DB(fundsArray)    #获取数据    def get_url(self, url, params=None, proxies=None):        rsp = requests.get(url, params=params, proxies=proxies)        rsp.raise_for_status()        return rsp.text    def save2DB(self,item):        connect = pymysql.Connect(            host=self.connection.host,            port=self.connection.port,            user=self.connection.user,            passwd=self.connection.passwd,            db=self.connection.db,            charset=self.connection.charset        )        cursor=connect.cursor()        #去重        sql = "select * from ajgdy where CompanyCode='%s' and Licostaff='%s' and NoticeDate='%s'"        data = (item[0], item[15],item[7])        cursor.execute(sql % data)        if len(list(cursor)) == 0:            #入库            sql = "INSERT INTO ajgdy (id, CompanyCode,CompanyName,OrgCode,OrgName,OrgSum,SCode,SName,NoticeDate,StartDate,EndDate,Place,Description,Orgtype,OrgtypeName,Personnel,Licostaff,Maincontent,ChangePercent,Close) " \                  "VALUES ( '%s', '%s','%s', '%s','%s', '%s', '%s','%s', '%s','%s','%s', '%s','%s', '%s','%s', '%s', '%s','%s', '%s','%s')"            data = (uuid.uuid1(), item[0], item[1], item[2], item[3], item[4], item[5], item[6], item[7],item[8], item[9], item[10], item[11],item[12], item[13], item[14], item[15],item[16], item[17], item[18])            cursor.execute(sql % data)            connect.commit()# tianjl = JgdyQuery()# tianjl.printJgdyInfo("300232",1)

        如下图所示为作者拉取部分上市公司的机构调研数据的结果。

转载地址:http://prkmi.baihongyu.com/

你可能感兴趣的文章
NandFlash驱动超详细分析
查看>>
inf文件解析
查看>>
MOSFET结构及其工作原理详解
查看>>
android开源社区
查看>>
手机摄像头工作原理
查看>>
手机电容触摸屏技术简介
查看>>
led子系统 及 内核中led触发器实例
查看>>
Android USB Tethering的实现以及代码流程
查看>>
有关电池充电和LCD驱动的好地方
查看>>
USB规范浏览--设备和主机规范
查看>>
男人的品位--我们自己的最求
查看>>
Android (Linux) Suspend流程
查看>>
LINUX时间管理
查看>>
定时器的使用
查看>>
为Android加入busybox工具
查看>>
使用技巧busybox
查看>>
如何查看与/dev/input目录下的event对应的设备
查看>>
Linux系统时间与RTC时间
查看>>
TF卡和SD卡理解
查看>>
在 Java 中应用设计模式 - Factory Method .
查看>>