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

举报
yd_213394503 发表于 2024/04/10 14:00:28 2024/04/10
【摘要】 一、使用websocket的协议提升传输速度实时金融数据对于投资者和交易员来说至关重要。通过使用WebSocket接入方法,可以轻松获取实时金融数据并及时做出决策。WebSocket是一种高效的双向通信协议,它允许数据的实时推送,避免了不断的轮询请求。这种接入方法具有多个优势。1、首先,它提供了快速的数据传输速度,确保您获取到最新的市场行情数据。其次,WebSocket允许您订阅特定的数据...

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

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

二、接入步骤

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

先申请token:
https://alltick.co
按照下面代码建立连接

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股数据
  • 外汇数据
  • 贵金属数据
  • 商品数据
  • 数字币数据

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

当你选择好产品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.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接入方法是现代金融交易和投资领域中不可或缺的工具,它为用户提供了快速、可靠的数据传输和个性化的数据订阅服务,帮助他们在竞争激烈的市场中抢占先机,实现更好的投资回报。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。