当前位置: 首页 > article >正文

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

一、使用websocket的协议提升传输速度 实时金融股票数据对于投资者和交易员来说至关重要。通过使用WebSocket接入方法,可以轻松获取实时金融股票类数据并及时做出决策。WebSocket是一种高效的双向通信协议,它允许数据的实时推送,避免了不断的轮询请求。这种接入方法具有多个优势。 1、首先,它提供了快速的股票数据传输速度,确保您获取到最新的市场行情数据。其次,WebSocket允许您订阅特定的股票数据源或股票数据产品,只接收您感兴趣的信息,提高了数据的效率和可用性。 2、此外,WebSocket接口通常具有稳定的连接性,能够处理大量的数据推送,满足高频交易和实时分析的需求。 3、通过使用实时金融数据API接口的WebSocket接入方法,您可以更好地监测市场数据动态,及时抓住交易机会,为您的金融决策提供有力支持。

二、接入步骤

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

先按照下面地址申请token: https://alltick.co (需魔法上网)

没有魔法可以访问备用地址:https://alltick.io/

也可以到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

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

二、查看code产品列表

支持以下产品品类:

美股数据

港股数据

A股数据

外汇数据

贵金属数据

商品数据

数字币数据

更详细的产品列表可以看这份谷歌表格:https://docs.google.com/spreadsheets/d/1avkeR1heZSj6gXIkDeBt8X3nv4EzJetw4yFuKjSDYtA/edit?gid=495387863#gid=495387863

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

当你选择好产品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
# 备用地址:https://alltick.io
# 把下面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.1、最新成交报价解析

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

4.2、最新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”,
}
],
}
}

五、整理和总结websocket的优势

通过实时金融数据API接口的WebSocket接入方法,您可以享受到及时、高效的金融数据API服务。这种接入方式为投资者和交易员提供了许多优势和便利。

1、首先,实时数据的获取使您能够紧跟市场的变化,及时获取到最新的股票价格、交易量等关键信息。这对于制定交易决策和执行高频交易策略至关重要。其次,WebSocket的双向通信特性使您能够实时订阅和接收您感兴趣的数据源或产品,避免了不必要的数据冗余和网络资源浪费。

2、此外,WebSocket接口通常具有较低的延迟和可靠的连接性,能够处理大规模的数据推送,确保您获取到准确的实时数据。

3、最重要的是,这种接入方法为您提供了强大的灵活性和定制化能力,您可以根据自己的需要和策略要求订阅特定的数据,进行个性化的数据分析和决策支持。

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


http://www.kler.cn/a/384447.html

相关文章:

  • 《重学Java设计模式》之 工厂方法模式
  • 【测试】【Debug】vscode中同一个测试用例出现重复
  • 机器学习与数据挖掘_使用梯度下降法训练线性回归模型
  • 如何在 Rust 中实现内存安全:与 C/C++ 的对比分析
  • 路见不平 ! 基于tensorlfow快速迭代的户型图分类功能
  • 如何在 Vue.js 中优化 Element UI 长文本显示
  • WRF-LES与PALM模型:风能资源评估、风力发电、大涡模拟、大尺度湍流涡旋、大雾预报、局地环流模拟、城市热岛效应、流场模拟
  • 香港服务器怎么搭建docker加速器
  • flutter 项目初建碰到的控制台报错无法启动问题
  • 地理空间-Java实现航迹稀释
  • 【北京迅为】《STM32MP157开发板嵌入式开发指南》-第七十二章 Debian文件系统
  • Java反射原理及其性能优化
  • C#实战:使用腾讯云识别服务轻松提取火车票信息
  • 科研绘图系列:R语言组合连线图和箱线图(linechart+boxplot)
  • Vue实战学习(2)(Vue快速入门(快速构建一个局部Vue项目))
  • xftp连接中不成功 + sudo vim 修改sshd_config不成功的解决方法
  • 斗破QT编程入门系列之二:GUI应用程序设计基础:UI文件(四星斗师)
  • 【C++】哈希表封装 unordered_map 和 unordered_set 的实现过程
  • 信息安全工程师(80)网络安全测评技术与工具
  • 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-31
  • (十)JavaWeb后端开发——SpringBoot
  • 纯血鸿蒙Native层支持说明
  • 为什么 Allow 配合 meta noindex 比使用Disallow好?
  • 免费数据集网站
  • 如何下载无水印的TikTok视频
  • Linux下的ADC