头图

在金融科技领域,实时数据是分析和决策的关键因素。通过AllTick的实时行情API,您可以轻松将实时市场数据集成到数据看板产品中,为用户提供丰富的市场洞察。本文将详细介绍如何使用AllTick API,通过WebSocket协议接收并展示实时市场数据。

1. 什么是实时行情API?

实时行情API提供的行情数据均为实时无延时,而普通的接口则是延时数据,一般是15分钟的延时。AllTick提供全球金融市场的实时行情数据,支持股票、外汇、加密货币、贵金属等多个品种。通过WebSocket连接,AllTick API可以推送实时数据,使数据看板能够实时更新市场信息,帮助用户做出更快速、准确的决策。

准备工作
WebSocket客户端:安装 websocket-client 包来与API服务器建立连接。
API Token:访问 AllTick官网 获取您的API token。

2. 接入实时数据

以下是使用Python和WebSocket实现实时行情订阅的完整代码示例。该示例展示了如何接收并打印实时市场数据。

import json
import websocket    # pip install websocket-client
 
# Token申请:https://alltick.io
# Github地址:https://github.com/alltick/realtime-forex-crypto-stock-tick-finance-websocket-api/blob/main/access_guide_cn.md
 
class Feed(object):
 
    def __init__(self):
        # 替换为您的API Token
        self.url = 'wss://quote.tradeswitcher.com/quote-stock-b-ws-api?token=您的token'
        self.ws = None
 
    def on_open(self, ws):
        """
        WebSocket连接开启后的回调。
        """
        print('WebSocket连接已开启!')
 
        # 订阅市场数据的请求参数
        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("深度行情已订阅!")
 
    def on_message(self, ws, message):
        """
        收到服务器推送的数据时触发。
        """
        # 解析接收到的行情数据
        result = eval(message)
        print(result)
 
    def on_error(self, ws, error):
        """
        WebSocket连接出错时的回调。
        """
        print("发生错误:", error)
 
    def on_close(self, ws, close_status_code, close_msg):
        """
        WebSocket连接关闭时的回调。
        """
        print('WebSocket连接已关闭!')
 
    def start(self):
        """
        开始WebSocket连接。
        """
        self.ws = websocket.WebSocketApp(
            self.url,
            on_open=self.on_open,
            on_message=self.on_message,
            on_error=self.on_error,
            on_close=self.on_close,
        )
        self.ws.run_forever()
 
if __name__ == "__main__":
    feed = Feed()
    feed.start()

代码说明

连接建立:在 on_open 回调中调用了 ws.send() 来发送订阅请求。订阅参数可以灵活设置,支持多种市场和代码。
接收数据:on_message 回调函数用于处理从服务器接收到的消息。示例代码中,eval(message) 被用于将字符串转换为Python对象并进行打印。
错误处理:如果连接中断或发生错误,on_error 会捕获并输出相关信息。
关闭连接:on_close 回调在WebSocket关闭时触发,提示连接已关闭。

3. 数据展示

成功接收到实时数据后,下一步是将数据展示在数据看板中。您可以根据实际需求进行可视化展示,例如将实时价格、交易量等信息显示为折线图或柱状图。以下是一个简单的可视化框架:

# 假设使用 Matplotlib 库来展示数据
import matplotlib.pyplot as plt
from datetime import datetime
 
# 简单示例:绘制实时价格曲线
class DataBoard:
 
    def __init__(self):
        self.prices = []
        self.times = []
 
    def update_data(self, price):
        self.prices.append(price)
        self.times.append(datetime.now())
        self.plot_data()
 
    def plot_data(self):
        plt.plot(self.times, self.prices)
        plt.xlabel('时间')
        plt.ylabel('价格')
        plt.title('实时价格曲线')
        plt.pause(0.05)

在 on_message 中解析接收到的价格信息后,调用 update_data() 即可将数据传入并动态更新图表。

注意事项

  1. 心跳包:长时间运行需要定期发送心跳包以防止连接中断,请参考API文档。
  2. 网络连接:保证WebSocket连接稳定,避免意外中断。
  3. 数据量控制:根据实际需求选择合适的数据订阅深度,避免超出数据看板处理能力。

TickTank
2 声望1 粉丝

高频tick数据行情接口