Python 实现融通金行情数据对接(实时推送 + K 线 + 产品列表)

前言

在金融量化、行情展示、数据监控等场景中,稳定获取实时行情数据是核心需求。本文基于 Python 完整实现融通金行情数据对接,包含 WebSocket 实时数据推送、HTTP 实时行情、K 线数据、产品分类、订阅代码查询等全套接口,并提供可直接运行的代码示例,适合开发者快速接入与二次开发。

本文仅做技术实现分享,无任何推广意图,所有接口信息来自公开对接文档。


一、对接说明(必读)

  1. 接口分为两大类:WebSocket 实时推送HTTP 拉取接口,功能一致,实现其一即可。
  2. 所有接口支持 gzip 压缩,请求时带上 Accept-Encoding:gzip 可提升速度。
  3. 接口有频率限制,对接时需注意限流逻辑,避免被封禁。

二、环境准备

安装依赖:

python 复制代码
pip install requests websockets python-dotenv

三、接口总览

  1. WebSocket 实时数据推送(自动推送)
  2. HTTP 获取实时行情(主动拉取)
  3. 获取 K 线数据
  4. 查询产品分类
  5. 查询产品订阅代码

四、Python 实现:WebSocket 实时行情推送

python 复制代码
import asyncio
import websockets
import json
import time

def get_timestamp():
    return int(time.time())

async def rongtongjin_ws():
    ws_url = "ws://39.107.99.235/ws"
    
    while True:
        try:
            async with websockets.connect(ws_url) as websocket:
                print("WebSocket 连接成功")

                # 订阅产品(多个用英文逗号分隔)
                subscribe = {"Key": "btcusdt,ethusdt"}
                await websocket.send(json.dumps(subscribe))

                while True:
                    # 心跳:每10秒发一次 ping
                    await asyncio.sleep(10)
                    ping_msg = {"ping": get_timestamp()}
                    await websocket.send(json.dumps(ping_msg))

                    # 接收推送数据
                    try:
                        response = await websocket.recv()
                        data = json.loads(response)
                        print("实时行情:", json.dumps(data, ensure_ascii=False, indent=2))
                    except:
                        continue

        except Exception as e:
            print("断开重连...", e)
            await asyncio.sleep(3)

if __name__ == "__main__":
    asyncio.run(rongtongjin_ws())

功能说明

  • 自动断线重连
  • 10 秒心跳保活
  • 支持多产品同时订阅
  • 实时接收最新价、买卖盘、成交量、涨跌额等数据

五、Python 实现:HTTP 实时行情接口

python 复制代码
import requests

headers = {
    "Accept-Encoding": "gzip"
}

def get_realtime_quote(code="btcusdt"):
    url = f"http://39.107.99.235:1008/getQuote.php?code={code}"
    try:
        resp = requests.get(url, headers=headers, timeout=5)
        if resp.status_code == 200:
            return resp.json()
    except Exception as e:
        print("请求失败:", e)
    return None

if __name__ == "__main__":
    data = get_realtime_quote("btcusdt")
    print(data)

限流规则

  • 单个产品每秒最多 3 次
  • 多产品按数量叠加:N 个产品 → 每秒最多 3*N 次

六、Python 实现:获取 K 线数据

python 复制代码
def get_kline(code="fx_sgbpusd", time_frame="1m", rows=40):
    url = f"http://39.107.99.235:1008/redis.php?code={code}&time={time_frame}&rows={rows}"
    try:
        resp = requests.get(url, headers={"Accept-Encoding": "gzip"}, timeout=5)
        return resp.json()
    except Exception as e:
        print("K线请求失败:", e)
    return None

if __name__ == "__main__":
    kdata = get_kline(code="fx_sgbpusd", time_frame="1m", rows=20)
    print(kdata)

支持周期

  • 1m、5m、15m、30m、1h、1d、1M
  • 各周期数据条数有限制,代码中已做兼容。

七、Python 实现:产品分类 + 订阅代码

1. 获取产品分类

python 复制代码
def get_category():
    url = "http://39.107.99.235:1008/getCategory.php"
    resp = requests.get(url, headers={"Accept-Encoding": "gzip"})
    return resp.json()

2. 获取产品订阅代码

python 复制代码
def get_symbol_list(category=7, page=1, pageSize=20):
    url = f"http://39.107.99.235:1008/getSymbolList.php?category={category}&page={page}&pageSize={pageSize}"
    resp = requests.get(url, headers={"Accept-Encoding": "gzip"})
    return resp.json()

八、返回字段说明(常用)

  • StockCode:产品代码
  • Price:最新价
  • Open:开盘价
  • High:最高价
  • Low:最低价
  • LastClose:昨收价
  • BP1/BV1:买一价 / 买一量
  • SP1/SV1:卖一价 / 卖一量
  • Diff:涨跌额
  • DiffRate:涨跌幅
  • TotalVol:成交量
  • Depth:买卖盘深度
  • BS:逐笔成交

九、注意事项(避坑指南)

  1. WebSocket 必须实现断线重连心跳
  2. HTTP 接口严格遵守限流规则,防止被限制访问。
  3. 头部带上 Accept-Encoding:gzip 提升速度、节省流量。
  4. 多产品订阅用逗号分隔,不要重复订阅。
  5. K 线与实时行情分开获取,WebSocket 不推送 K 线。

十、总结

本文通过 Python 完整实现了融通金行情数据的对接,覆盖:

  • WebSocket 实时推送
  • HTTP 实时行情
  • K 线数据
  • 产品分类
  • 产品订阅代码

代码结构清晰、可直接运行,适合量化系统、行情看板、数据监控等场景快速集成。

相关推荐
wltx16881 小时前
谷歌SEO如何做插床优化?
大数据·人工智能·python
2301_781571422 小时前
JavaScript中Object-getOwnPropertySymbols获取方法
jvm·数据库·python
skywalk81632 小时前
Trae生成的中文编程语言关键字(如“定“、“函“、“印“等)需要和标识符之间用 空格 隔开,以确保正确识别
服务器·开发语言·编程
红色的小鳄鱼2 小时前
前端面试js手写
开发语言·前端·javascript
海盗12342 小时前
C#中的IEqualityComparer<T>使用
开发语言·c#
江公望2 小时前
Qt QSharedPointer用法,10分钟讲清楚
开发语言·qt
倒霉熊dd2 小时前
Python学习(第一部分 语法与数据结构/核心基础)
大数据·python·学习·pip
月落归舟2 小时前
深入理解Java适配器模式,彻底搞懂设计思想
java·开发语言·适配器模式
Mr_pyx2 小时前
【LeetHOT100】二叉树的中序遍历——Java多解法详解
java·开发语言·深度优先