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 线数据
  • 产品分类
  • 产品订阅代码

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

相关推荐
2301_803538957 分钟前
Java读取Word图片的两种实用方法
java·开发语言·word
EntyIU16 分钟前
mineru从安装部署到测试使用完整指南
python·ocr
安替-AnTi1 小时前
厚朴 APK 搜索接口分析
python·apk·解析·taobao
山川湖海1 小时前
AI时代快速学编程语言的陷阱(以Python为例)
大数据·人工智能·python
H Journey1 小时前
Supervisor 进程管理工具介绍
python·supervisor·linux 运维
春日见2 小时前
5分钟入门强化学习之动态规划算法与实现
大数据·人工智能·python·算法·机器学习·计算机视觉
bug和崩溃我都要2 小时前
Qt 封装 libmpv 全功能视频播放器开发指南
开发语言·qt·音视频
郝学胜-神的一滴2 小时前
Qt 高级开发 018:复刻经典登录界面布局与窗口美化全解析
开发语言·c++·qt·程序人生·用户界面
郝亚军2 小时前
IEEE 754 单精度浮点的SEM表示
开发语言·c++·算法
zhangjw342 小时前
第15篇:Java多线程零基础入门,进程线程、线程创建方式、线程生命周期、线程安全彻底吃透
java·开发语言·面试