金融实时行情推送至聊天平台解决方案

有哪些金融行情相关的API数据接口
这些实时行情如何更新到一个聊天社区,有解决方案的请回复下

对于数据源端:
可以通过爬虫技术从同花顺或者其他平台抓取数据,这里需要确定数据分析规则,然后通过mq推送给聊天平台。

对于聊天端:
聊天平台可以从mq中消费数据,然后通过客户端连接的消息推送机制进行客户端的行情数据更新

优势:
服务之间解耦
将数据可靠性保证移交给mq

劣势:
中间件会增加系统复杂度,提高运维成本

  • 有哪些金融行情相关的API数据接口
    富途牛牛API接口,特别好用,我一直在使用。
  • 实时行情更新到一个聊天社区的方法:将获取的股票数据存储到内存,对外提供API接口,聊天社区请求你这个API即可。

下面的代码是我写的上证指数的爬虫,实际上只要再加上发送的模块就能推送至聊天平台了
当然,你必须提供聊天平台的数据接口,这样一来就能发送。
实际上,我原本的完整代码也有发送的部分,只不过原本的是判断了可能上涨的股票代码后直接通过邮件把相应的代码发送到邮箱


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()
            




爬虫获取到数据
数据通过中间件发送至热存储
社区消费热存储数据实时打印到社区

可以使用富途牛牛API接口,或者通过爬虫(有危险)

可以通过爬虫抓取数据推送到kafka,再通过flink处理流数据,最后再推送后端使用

可以搭建MQTT消息服务器,基于MQTT进行实时消息推送。

一般都是定时任务推GDP,然后kafka,再通过flink处理流数据,最后再推送后端使用

1、金融行情相关的API,这个不太清楚你的需求偏向哪方面。
直接开放的API估计很少,需要找一下相关受欢迎的网站或者APP自己抓取
可以查看下这些网站来排查下哪个符合你的需求,


金融界—投资者信赖的财经金融门户网站,以证券交易为核心的互联网综合理财平台 金融界网站成立于1999年8月,是中国金融在线(NASDAQ:JRJC)旗下成员之一,是目前中国领先的以证券交易为核心的互联网综合理财平台。金融界网站在'让投资更简单'的使命驱动下,凭借庞大的用户群,及业界领先的服务团队,为中国日益庞大的投资者打造、并不断拓展和优化互联网综合理财平台。作为财经类媒体的权威代表,金融界网站潜心聚力为广大投资者与机构用户服务,提供7*24小时、专业、立体、精准、及时的全球财经数据与资讯服务。 http://www.jrj.com.cn/

2、至于后边的这个解决方案,
解决方案
找到对应网站或者APP后

  1. 可以采取爬虫的方式来进行实时数据的抓取,
  2. 进行数据筛选和数据处理,
  3. 更新到这个聊天社区的数据库,或直接提供一个REST API接口
  4. 聊天社区调用即可

去聚宽投资了解下吧,主要是做量化交易策略的,当然你要的信息肯定有,主要用python,https://www.joinquant.com/

股票、期货交易及行情等API接口汇总
https://zhuanlan.zhihu.com/p/373690013
世上最全期货股票金融api数据接口
https://blog.csdn.net/m0_46520816/article/details/111739556
推送到论坛估计没有接口,但可以在浏览器用F12查看网页请求,根据网页请求实现推送。

方案如下:
1、首先确定你要推送金融实时行情的平台是哪些
2、确定好平台之后,在浏览器中找到行情信息的链接,如下图所示

img

3、项目中写一个定时器接口,然后你可以定时把这些链接推送到群里或者循环请求每一个链接,获取对应数据,从数据中抽取出有效信息,进行群聊推送

将实时行情如何更新到一个聊天社区
1、需要调用金融证券机构的API的
2、采取爬虫进行实时数据的抓取,然后处理数据,最后发送到聊天社区就行了,但这种方式会稍微慢一点点,有数据爬取和处理的过程
金融数据api接口
https://zhuanlan.zhihu.com/p/363844620

可以分成两部分,一部分是金融API,https://zhuanlan.zhihu.com/p/458889137
可以在这里参考,
第二部分例如获取了数据之后,类似微信公众号的平台获取数据,进行推送

下面这个方案跟你需求比较符合,可以看看

两个问题:

  1. 金融实时行情获取

个人推荐 tushare ,开发体验是最好的。

  1. 推送消息到聊天社区

具体看是什么聊天社区。 Tg、飞书、企业微信都有 Bot API

爬虫爬取,然后推送就行了

直接证券交易所抓数据自己汇总啊

你可以看下这一个https://www.docin.com/p-70549143.html
调用接口后爬虫爬取。

用的什么语言呢?你是开发者还是想要实现这个需求

1、tushare
https://tushare.pro/document/2

Tushare,是目前知名度比较高的免费量化数据接口,同时支持python2.x和python3.x。有比较稳定的用户群,数据经过一段时间的考验之后,比较可靠了。Tushare提供股票行情数据和基本面数据,宏观经济数据,还有龙虎榜,信息地雷,票房排行,财经新闻等功能。给用户提供了多维数据构建量化模型,还提供多种获取数据的方式。不论是初学者还是量化老鸟,都能在里面找到自己需要的信息。因为其数据是从网络实时爬取,所以需要等待一段时间,比较考验网速。

2、akshare
https://akshare.readthedocs.io/

AkShare 是基于 Python 的开源金融数据接口库, 目的是实现对股票, 期货, 期权, 基金, 外汇, 债券, 指数, 数字货币等金融产品的基本面数据、实时和历史行情数据、衍生数据从数据采集, 数据清洗, 到数据落地的一套开源工具, 满足金融数据科学家, 数据科学爱好者在金融数据获取方面的需求

3、证券宝http://www.baostock.com是一个免费、开源的证券数据平台
http://baostock.com/baostock/index.php/%E9%A6%96%E9%A1%B5

国外有几个不错的官方数据库,国内的以商业机构为主

1.国外
global financial data:全球财经数据库,同时提供相关的数据服务
quandl:比较全面的金融数据api网站
IMF: 国际货币基金组织统计数据库
UNdata:联合国数据库,官方统计数据
World Bank: 世界银行,有统计数据库
OCED:财经数据库

2.国内
综合数据库类:Wind、巨灵、国泰安、高校财经数据库、中国资讯行、CEIC全球经济数据库
阿里云:api数据市场,含金融api
数粮:数据交易平台,有各行业api
新浪财经:数据维度不少,免费
统计局:宏观数据还是可以查到不少
另外还有很多数据公司另外还有很多数据公司

通过调这些API获取数据,然后写入聊天社区。

花了很多时间收集资料,
如有帮助,请采纳,十分感谢!