首页 > 其他分享 >实时股票数据API接口websocket接入方法

实时股票数据API接口websocket接入方法

时间:2024-05-08 23:23:09浏览次数:23  
标签:API websocket quote self 接口 volume api ws 数据

一、使用websocket的协议提升传输速度

实时金融股票API接口对于投资者和交易员来说至关重要。通过使用WebSocket接入方法,可以轻松获取实时金融股票API接口的数据并及时做出决策。WebSocket是一种高效的双向通信协议,它允许数据的实时推送,避免了不断的轮询请求。这种接入方法具有多个优势。

1、首先,它提供了快速的股票数据传输速度,确保您获取到最新的市场行情数据。其次,WebSocket允许您订阅特定的股票数据源或股票数据产品,只接收您感兴趣的信息,提高了数据的效率和可用性。
2、此外,股票API接口的WebSocket协议通常具有稳定的连接性,能够处理大量的数据推送,满足高频交易和实时分析的需求。
3、通过使用实时金融股票API接口的WebSocket接入方法,您可以更好地监测市场数据动态,及时抓住交易机会,为您的金融决策提供有力支持。

二、接入步骤

1、通过API地址传参建立连接

先按照下面地址申请token: https://alltick.co

也可以到github上申请:https://github.com/alltick/realtime-forex-crypto-stock-tick-finance-websocket-api

按照下面代码建立连接

github: https://github.com/alltick/realtime-forex-crypto-stock-tick-finance-websocket-api
token申请:https://alltick.co
把下面url中的testtoken替换为您自己的token
外汇,数字币,贵金属的api址:
wss://quote.tradeswitcher.com/quote-b-ws-api
港美股api地址:
wss://quote.tradeswitcher.com/quote-stock-b-ws-api
建立连接:
wss://quote.tradeswitcher.com/quote-stock-b-ws-api?token=testtoken

建立连接之后,就可以订阅具体的接口数据了,具体调用方式看第二步

2、查看code产品列表

支持以下产品品类:

美股数据 港股数据 A股数据 外汇数据 贵金属数据 商品数据 数字币数据

3、开始真正的订阅实时行情数据源报价

当你选择好产品code列表后就可以开始真正的订阅实时行情数据源报价了。请看下面的实例代码:

import json
import websocket    # pip install websocket-client

'''
# 特别注意: 
# github: https://github.com/alltick/realtime-forex-crypto-stock-tick-finance-websocket-api
# token申请:https://alltick.co
# 把下面url中的testtoken替换为您自己的token
# 外汇,数字币,贵金属的api址:
# wss://quote.tradeswitcher.com/quote-b-ws-api
# 港美股api地址:
# wss://quote.tradeswitcher.com/quote-stock-b-ws-api
'''

class Feed(object):

    def __init__(self):
        self.url = 'wss://quote.tradeswitcher.com/quote-stock-b-ws-api?token=testtoken'  # 这里输入websocket的url
        self.ws = None

    def on_open(self, ws):
        """
        Callback object which is called at opening websocket.
        1 argument:
        @ ws: the WebSocketApp object
        """
        print('A new WebSocketApp is opened!')

        # 开始订阅(举个例子)
        sub_param = {
            "cmd_id": 22002, 
            "seq_id": 123,
            "trace":"3baaa938-f92c-4a74-a228-fd49d5e2f8bc-1678419657806",
            "data":{
                "symbol_list":[
                    {
                        "code": "700.HK",
                        "depth_level": 5,
                    },
                    {
                        "code": "UNH.US",
                        "depth_level": 5,
                    }
                ]
            }
        }
        
        #如果希望长时间运行,除了需要发送订阅之外,还需要修改代码,定时发送心跳,避免连接断开,具体查看接口文档
        sub_str = json.dumps(sub_param)
        ws.send(sub_str)
        print("depth quote are subscribed!")

    def on_data(self, ws, string, type, continue_flag):
        """
        4 argument.
        The 1st argument is this class object.
        The 2nd argument is utf-8 string which we get from the server.
        The 3rd argument is data type. ABNF.OPCODE_TEXT or ABNF.OPCODE_BINARY will be came.
        The 4th argument is continue flag. If 0, the data continue
        """

    def on_message(self, ws, message):
        """
        Callback object which is called when received data.
        2 arguments:
        @ ws: the WebSocketApp object
        @ message: utf-8 data received from the server
        """
        # 对收到的message进行解析
        result = eval(message)
        print(result)

    def on_error(self, ws, error):
        """
        Callback object which is called when got an error.
        2 arguments:
        @ ws: the WebSocketApp object
        @ error: exception object
        """
        print(error)

    def on_close(self, ws, close_status_code, close_msg):
        """
        Callback object which is called when the connection is closed.
        2 arguments:
        @ ws: the WebSocketApp object
        @ close_status_code
        @ close_msg
        """
        print('The connection is closed!')

    def start(self):
        self.ws = websocket.WebSocketApp(
            self.url,
            on_open=self.on_open,
            on_message=self.on_message,
            on_data=self.on_data,
            on_error=self.on_error,
            on_close=self.on_close,
        )
        self.ws.run_forever()


if __name__ == "__main__":
    feed = Feed()
    feed.start()

4、解析推送数据

最新成交报价解析

{
    "cmd_id":22998,
    "data":{
    "code": "1288.HK",
        "seq": "1605509068000001",
        "tick_time": "1605509068",
        "price": "651.12",
        "volume": "300",
        "turnover": "12345.6",
        "trade_direction": 1,
    }
}

最新5档深度数据解析

{
“cmd_id”:22999,
“data”:{
“code”: “1288.HK”,
“seq”: “1605509068000001”,
“tick_time”: “1605509068”,
“bids”: [
{
“pric”: “9.12”,
“volume”: “9.12”,
},
{
“pric”: “9.12”,
“volume”: “9.12”,
},
{
“pric”: “9.12”,
“volume”: “9.12”,
},
{
“pric”: “9.12”,
“volume”: “9.12”,
},
{
“pric”: “9.12”,
“volume”: “9.12”,
}
],
“asks”: [
{
“price”: “147.12”,
“volume”: “147.12”,
},
{
“price”: “147.12”,
“volume”: “147.12”,
},
{
“price”: “147.12”,
“volume”: “147.12”,
},
{
“price”: “147.12”,
“volume”: “147.12”,
},
{
“price”: “147.12”,
“volume”: “147.12”,
}
],
}
}


三、总结

通过实时金融数据API接口的WebSocket接入方法,您可以享受到及时、高效的金融数据API服务。这种接入方式为投资者和交易员提供了许多优势和便利。
1、首先,实时数据的获取使您能够紧跟市场的变化,及时获取到最新的股票价格、交易量等关键信息。这对于制定交易决策和执行高频交易策略至关重要。其次,WebSocket的双向通信特性使您能够实时订阅和接收您感兴趣的数据源或产品,避免了不必要的数据冗余和网络资源浪费。
2、此外,WebSocket接口通常具有较低的延迟和可靠的连接性,能够处理大规模的数据推送,确保您获取到准确的实时数据。
3、最重要的是,这种接入方法为您提供了强大的灵活性和定制化能力,您可以根据自己的需要和策略要求订阅特定的数据,进行个性化的数据分析和决策支持。

综上所述,实时金融数据API接口的WebSocket接入方法是现代金融交易和投资领域中不可或缺的工具,它为用户提供了快速、可靠的数据传输和个性化的数据订阅服务,帮助他们在竞争激烈的市场中抢占先机,实现更好的投资回报。

标签:API,websocket,quote,self,接口,volume,api,ws,数据
From: https://www.cnblogs.com/api-store/p/18181137

相关文章

  • websocket-sharp:.NET平台上的WebSocket客户端与服务器开源库
    1.简介:websocket-sharp提供WebSocket客户端和服务器库,基于C#开发的,并遵循WebSocket协议规范,使得开发人员能够轻松地在.NET应用程序中实现WebSocket通信。https://github.com/sta/websocket-sharpwebsocket-sharp特色功能有:1、简洁易用的API:提供清晰且直观的API接......
  • 用友接口对接怎么做,U8API接口对接,轻松应对复杂集成场景!
    在企业上云的大趋势下,U8+全面转向互联网方向,深入融合云应用,一站式提供财务、营销、制造、采购、设计、协同、人力等领域的“端+云”服务,并通过软硬一体化、产业链协同的策略全面赋能成长型企业在技术、供应链、生产、财税、营销等领域的创新升级。为成长型企业提供基于互联网的......
  • SciTech-BigDataAIML-Tensorflow-Keras API-Layers的API
    https://keras.io/api/layers/KeraslayersAPILayersarethebasicbuildingblocksofneuralnetworksinKeras.Alayerconsistsofatensor-intensor-outcomputationfunction(thelayer'scallmethod)andsomestate,heldinTensorFlowvariables(th......
  • Java护照识别接口开发示例、文字识别、证件识别
    护照是我们出国旅行时所必要的证件之一,他是我国公民去外国的旅行和工作的时候所代表的一个合法的身份证件。在护照上面也有不少关于我们个人身份的信息,而手动去录入如此多的身份信息这绝对是灾难。不仅证件,有的场景还需要录入很多文字信息。翔云API可识别图片上的身份证、护......
  • Java实名认证API、婚恋网实名认证
    中国网络婚恋交友行业发展近20年,电脑端网络婚恋服务已经较为成熟,商业模式也较为完善。但随着移动互联网的快速发展,移动端成为婚恋交友企业核心用户新的来源渠道。网络婚恋交友移动端人群覆盖规模逐渐超过电脑端人群,标志着以移动端为主导的婚恋交友服务正式来临,整体行业迎来了......
  • SciTech-BigDataAIML-Tensorflow-Keras是用在Tensorflow的高层API
    [https://tensorflow.google.cn/guide/keras](Keras:Thehigh-levelAPIforTensorFlow)https://tensorflow.google.cn/guide/kerasThecoredatastructuresofKerasarelayersandmodels.Alayerisasimpleinput/outputtransformation,andamodelisadirec......
  • Pdoc:轻量级生成 API 文档
    pdoc是一个轻量级的库,专注于为Python项目生成API文档。它通过扫描指定的模块和包,自动提取文档字符串,快速转化为易于浏览的HTML文档。这项技术尤其适用于需要快速生成文档的现代Python项目。与市面上其他文档生成库例如Sphinx相比,pdoc的特色在于其轻量级和......
  • rapidjson
    一、简介RapidJSON是腾讯开源的一个高效的C++JSON解析器及生成器,它是只有头文件的C++库。RapidJSON是跨平台的,支持Windows、Linux、MacOSX及iOS、Android。writer和prettywriter都是将JSON数据打包为字符串的方法。官网:https://rapidjson.org/zh-cn/index.html1.1write和pr......
  • 在Gitlab Runner中调用Web Api写入Directory.Build.props需要的版本号文件
    摘要本文介绍了在Windows上的GitlabRunner,如何调用webapi更新版本号定义文件。PowerShellfunctionUpdate-Version{ param( [string]$WEB_API_URL, [string]$NAMESPACE, [string]$VERSION_ID )echo"能生成或写入.props文件的webapi的网站地址:"$WEB_API_URLe......
  • java虚拟机内存结构——类加载器,运行时数据区,执行引擎,本地方法接口。《深入理解JAVA虚
    ##类加载器类加载器当Java程序需要使用某个类时,类加载子系统负责找到对应的.class文件,并将其加载到JVM的方法区中每一个类加载器,都拥有一个独立的类名称空间。只有在这两个类是由同一个类加载器加载的前提下才有意义##运行时数据区###线程共享####堆:内......