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

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

相关推荐
想吃火锅10051 分钟前
【leetcode】189.轮转数组js
开发语言·javascript·leetcode
郝学胜-神的一滴2 分钟前
AI 编程智能体 02:AI智能体到底是什么
开发语言·人工智能·python·程序人生·pycharm
念何架构之路2 分钟前
go-grpc服务端调用
开发语言·后端·golang
小小、码农5 分钟前
〖Linux文件系统〗:彻底打通文件 IO 全链路
linux·开发语言·数据结构·c++·系统
Guarding and trust9 分钟前
python系列之多线程编程
python
弹简特15 分钟前
【Java项目-企悦抽】13-奖品管理模块-奖品列表和创建奖品的实现
java·开发语言·网络·springboot
Rosanci19 分钟前
从零到合入主线:我的 DeepSeek Harness 开源贡献实战手记
开发语言·前端·开源
弹简特25 分钟前
【Java项目-企悦抽】14-活动管理模块01-创建活动的实现
java·开发语言·springboot
梅雅达编程笔记30 分钟前
03_网页表格数据抓取
爬虫·python·beautifulsoup·pandas·数据采集
迅猛龙办公室30 分钟前
Python实现求两个数字之和
java·开发语言·python