用于获得个股MACD数据及每日收盘数据的python程序

2023-11-05

用于获得个股MACD数据及每日收盘数据的python程序

几年前上一波股票牛市的时候,曾经编写了一个判断股价的python程序。最近几日股票市场又开始比较火热,估计有的朋友可能需要进行股票数据的获得和分析。现在把那个程序中用于获得macd数据及收盘数据的部分公布出来,给有需要的朋友。

import urllib.request
import gzip
import json
import re
import socket
import time
import threading

socket.setdefaulttimeout(5)

class ur():   #网络连接类
    def __init__(self):
        pass
    def gethtml(self,url):
        html=urllib.request.urlopen(url)
        html=html.read()
        return html

    def gethtmll(self,url):
        html=self.gethtml(url)
        try:
            html=html.decode('utf-8')
        except:
            try:
                html=html.decode('gbk')
            except:
                try:
                    html=gzip.decompress(html).decode('utf-8')
                except:
                    html=gzip.decompress(html).decode('gbk')
        return html

class update(ur):   #更新股票代码类
    def __init__(self,n):
        self.url=r'http://vip.stock.finance.sina.com.cn/corp/go.php/vRPD_NewStockIssue/page/%d.phtml'
        self.n=int(n)
        self.code=set()
    def get(self):
        for i in range(self.n):
            i+=1
            code=self.url % i
            k=0
            while 1:
                k+=1
                if k==4:
                    break
                try: 
                    html=super().gethtmll(code)
                    break
                except:
                    continue
            reg=re.compile('<div align="center">(......)</div>')
            result=reg.findall(html)
            for i in result:
                try:
                    int(i)
                except:
                    continue
                i+='\n'
                self.code.add(i)
        try:
            for i in open('stock\\list.dat','r'):
                self.code.add(i)
        except:
            pass
        txt=open('stock\\list.dat','w')
        txt.close()
        txt=open('stock\\list.dat','a')
        for i in self.code:
            txt.write(i)
        txt.close()

class api(ur):   #获得个股的json数据类
    def __init__(self,code):
        self.code=str(code).strip('*')
        self.url=r"http://api.finance.ifeng.com/akdaily/?code=%s&type=last"
        self.js=None
        
    def get(self):
        if int(self.code)<600000:
            self.code='sz'+self.code
        else:
            self.code='sh'+self.code
        url=self.url % self.code
        while 1:
            try:
                html=super().gethtmll(url)
                break
            except:
                continue
        self.js=json.loads(html)
        self.js=self.js['record']

class api60(api): #继承api类功能,数据源改为60分钟线数据
    def __init__(self,code):
        self.code=str(code).strip('*')
        self.url=r'http://money.finance.sina.com.cn/quotes_service/api/jsonp_v2.php/a=/CN_MarketData.getKLineData?symbol=%s&scale=60&ma=no&datalen=1023'
    def get(self):
        self.js=None
        if self.code[0]!='s':
            if int(self.code)<600000:
                self.code='sz'+self.code
            else:
                self.code='sh'+self.code
        url=self.url % self.code
        while 1:
            try:
                html=super().gethtmll(url)
                break
            except:
                continue
        reg=re.compile('{(.*?)}')
        self.js=reg.findall(html)
        self.js=[i.split(',') for i in self.js]
        self.js=[i[4] for i in self.js]
        reg=re.compile('"(.*?)"')
        self.js=[reg.findall(i) for i in self.js]
        self.js=[float(i[0]) for i in self.js]
        
class macd(api):     #获得macd类
    def __init__(self,code):
        super().__init__(code)
        super().get()
        self.macd=[]   #macd元组
        self.day=[]    #日收盘数据元组
    def getmacd(self):
        if len(self.js)!=0:
            EMA1=float(self.js[0][3])
            self.day.append(EMA1)
            EMA2=EMA1
            DIF=0
            DEA=0
            self.macd.append((0,DIF,DEA))
            k=0
            for i in self.js[1:]:
                k+=1
                EMA1=EMA1*11/13+float(i[3])*2/13
                EMA2=EMA2*25/27+float(i[3])*2/27
                self.day.append(i[3])
                DIF=round((EMA1-EMA2),3)
                DEA=round((DEA*8/10+DIF*2/10),3)
                self.macd.append((k,DIF,DEA,EMA1,EMA2))

class macd60(api60):  #获得60分钟macd
    def __init__(self,code):
        super().__init__(code)
    def getmacd(self):
        self.macd=[]
        super().get()
        EMA1=self.js[0]
        EMA2=EMA1
        DIF=0
        DEA=0
        self.macd.append((0,DIF,DEA))
        k=0
        for i in self.js[1:]:
            k+=1
            EMA1=EMA1*11/13+i*2/13
            EMA2=EMA2*25/27+i*2/27
            DIF=round((EMA1-EMA2),3)
            DEA=round((DEA*8/10+DIF*2/10),3)
            self.macd.append((k,DIF,DEA,EMA1,EMA2))


aa=macd('600004')
aa.getmacd()
            



aa=macd(‘600004’) 表示获得600004(白云机场)的股票数据,若要获得其它股票的数据直接更改6位股票代码。
aa.getmacd()为获得macd数据。
aa.macd为一个元组由每日的子元组组成,子元组包含 日期序号,Dif数据,Dea数据,Ema1(不需要考虑),Ema2(不需要考虑)。
若要获得60分钟线macd则使用macd60类初始化。
aa.day为一个元组,由每日的收盘价组成。

祝大家好运。

↓这是用于监控近期大盘可能上涨个股的程序,在上述代码获得macd数据后,对数据及即时股价进行分析,从而获得可能上涨的个股。
用于监控近期大盘可能上涨个股的完整程序

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

用于获得个股MACD数据及每日收盘数据的python程序 的相关文章

随机推荐

  • JUnit5学习之六:参数化测试(Parameterized Tests)基础

    项目主页 https github com zq2599 blog demos 该项目在GitHub上的主页 git仓库地址 https https github com zq2599 blog demos git 该项目源码的仓库地址 h
  • 断言(assert)的用法

    我一直以为 assert 仅仅是个报错函数 事实上 它居然是个宏 并且作用并非 报错 在经过对其进行一定了解之后 对其作用及用法有了一定的了解 assert 的用法像是一种 契约式编程 在我的理解中 其表达的意思就是 程序在我的假设条件下
  • MySQL8.0.26安装配置教程(windows 64位)

    目录 一 进入MySQL官网下载安装 二 配置并初始化MySQL 三 配置环境变量 四 检验安装 一 进入MySQL官网下载安装 进入Mysql官网MySQL 点击DOWNLOADS下拉页面点击红框内容 跳转页面后点击红框 下载后并解压到目
  • 8个Python免费网站,一周熟练Python,知道就是赚到!

    前言 Python 已经成为一种再主流不过的编程语言了 许多同学开始学习它 又不知道该如何入手 希望在一周内学习最强大和最流行的编程语言之一 是的 你读得对 如果你有奉献精神 你可以在一周内学习Python 今天呢 我给大家推荐八个免费学习
  • 教你如何有效防止DDos攻击?

    DDos又称分布式拒绝服务 DDos是利用大量合理的请求造成资源过载 导致服务不可用 就比如一个餐馆总共有100个座位 突然有一天某个商家恶意竞争 雇佣了200个人来到这个餐馆坐着不吃不喝 门口还排着长长的队 导致餐馆无法正常营业 这就是D
  • 【Flutter 2-7】Flutter手把手教程UI布局和Widget——垂直布局控件Column

    Column Column是在Flutter中常见的布局控件 它负责垂直方向布局 Row负责水平方向布局 二者都是继承于Flex 类似于iOS里面的UIScrollView 但是又有很多不同 先来看一下Column的构造函数 Column
  • 初级unity开发的重难点知识总结

    生命周期函数 10个 Awake gt OnEnable gt Start gt FixedUpdate gt Update gt LateUpdate gt OnGUI gt Reset gt OnDisable gt OnDestroy
  • 原来的控件delphi7里何处寻?

    经常有朋友提这样的问题 我原来在delphi5或者delphi6中用的很熟的控件到哪里去了 是不是在delphi7中没有了呢 这是不是意味着我以前写的代码全都不能够移植到delphi7中来了呢 是不是我必须学习适应这些新的控件呢 现在我就对
  • 最全的中文编码

    GB18030
  • PTA L2-010 排座位 (25 分)

    include
  • 百亿级数据分表后怎么分页查呢?

    当业务规模达到一定规模之后 像淘宝日订单量在5000万单以上 美团3000万单以上 数据库面对海量的数据压力 分库分表就是必须进行的操作了 而分库分表之后一些常规的查询可能都会产生问题 最常见的就是比如分页查询的问题 一般我们把分表的字段称
  • HCIP VRRP技术

    一 VRRP概述 VRRP Virtual Router Pedundancy Protocol 虚拟路由器冗余协议 既能够实现网关的备份 又能够解决多个网关之间互相冲突的问题 从而提高网络可靠性 局域网中的用户的终端通常采用配置一个默认网
  • osg学习(六十)setTextureMode setTextureAttributeAndModes

    ss setTextureMode unit mode value ss setTextureAttributeAndModes unit tex get osg StateSet cpp void StateSet setTextureM
  • linux系统gpio中断的实现(提供例程)

    该接口基于linux提供的通用中断API接口实现 1 流程 gpio外部引脚发生电平变化 上升沿 下降沿 gt 触发驱动层 driver c 的中断服务函数 gt 在中断服务函数中通过异步消息机制通知到应用层 app c 2 中断响应时间测
  • linux内核SPI总线驱动分析(一)

    原文地址 http www cnblogs com liugf05 archive 2012 12 03 2800457 html SPI总线驱动分析 1 SPI概述 SPI是英语Serial Peripheral interface的缩写
  • ubuntu20.04设置静态ip文件的地址

    旧版本在eth0 新版本在 etc netplan 01 network manager all yaml 可配置关闭hdcp实现静态ip设置及DNS和网关 具体设置内容网上教程很多
  • 设置button按钮背景色,及字体的颜色

    新建一个对话框工程 在对话框中添加一个按钮 然后 从button类继承一个子类 CNewButton 重载 PreSubclassWindow 修改按钮的属性 ModifyStyle 0 BS OWNERDRAW 告诉系统 用户手绘按钮 然
  • python练习

    题目 一个数如果恰好等于它的因子之和 这个数就称为 完数 例如6 1 2 3 编程找出1000以内的所有完数 from sys import stdout for j in range 2 1001 k n 1 s j for i in r
  • 泛统计理论初探——机器学习的欠采样算法

    统计学习 经典欠采样方法简介 机器学习中的欠采样方法 在之前的文章中己经介绍了重采样的方法和使用情况 本次文章将会介绍欠采样方法的原理和经典欠采样算法的步骤以及使用背景 从原理上来说 欠采样方法的思路是和重采样方法刚好相反的 因为重采样是针
  • 用于获得个股MACD数据及每日收盘数据的python程序

    用于获得个股MACD数据及每日收盘数据的python程序 几年前上一波股票牛市的时候 曾经编写了一个判断股价的python程序 最近几日股票市场又开始比较火热 估计有的朋友可能需要进行股票数据的获得和分析 现在把那个程序中用于获得macd数