对接API获取马来西亚历史数据

简介: 本文介绍如何通过API对接获取马来西亚股票市场历史数据。需先获取API密钥,再利用“股票列表”接口查询股票PID,进而调用“K线数据”接口获取OHLCV行情。支持多种周期,提供Python实战示例及缓存、重试等最佳实践建议,助开发者高效集成。

通过API获取马来西亚股票市场的历史数据是许多开发者和分析师的常见需求。下面我将为您梳理基于API的完整对接方案。对接API获取马来西亚历史数据

🔑 准备工作

开始调用接口前,API文档API密钥(API Key) ,这是所有请求进行身份验证的必备凭证。推荐使用 requests(Python)或 axios(Node.js)等HTTP库来简化调用过程。

📊 核心接口详解

获取历史数据主要通过以下两个接口实现,它们返回统一格式的JSON数据,其中 code为200表示成功。

1. 获取历史K线数据

这是最常用的历史数据接口,用于获取股票的开盘价、收盘价、最高价、最低价和成交量等OHLCV信息。

  • 接口地址GET https://api.stocktv.top/stock/kline

  • 关键参数

    • pid: 必填,股票的唯一ID。此ID需要通过“获取股票列表”接口查询得到。

    • interval: 必填,指定K线的时间粒度。可选值包括:

      • PT5M(5分钟)
      • PT15M(15分钟)
      • PT1H(1小时)
      • P1D(日线)
      • P1W(周线)
      • P1M(月线)
    • key: 必填,您的API密钥。

2. 获取股票列表

在查询特定股票的历史数据前,你需要先通过此接口获取市场上所有股票的代码及其对应的唯一PID。

  • 接口地址GET https://api.stocktv.top/stock/stocks

  • 关键参数

    • countryId: 必填,马来西亚的国家ID为 42
    • pageSize& page: 用于分页,可高效获取全部股票数据。

💻 实战代码示例

以下是一个完整的Python示例,演示如何先获取股票列表,再查询某只股票(例如:MAYBANK)的日线历史数据。

import requests

# 配置
API_KEY = "YOUR_API_KEY"  # 请替换为你的真实API Key
BASE_URL = "https://api.stocktv.top"

def get_stock_list():
    """获取马来西亚股票列表,并找到MAYBANK的PID"""
    url = f"{BASE_URL}/stock/stocks"
    params = {
        "countryId": 42,
        "pageSize": 100,  # 假设MAYBANK在第一页
        "key": API_KEY
    }
    try:
        response = requests.get(url, params=params)
        data = response.json()
        if data.get("code") == 200:
            for stock in data["data"]["records"]:
                # 遍历寻找MAYBANK
                if stock.get("symbol") == "MAYBANK":
                    print(f"找到股票: {stock['name']}, PID: {stock['id']}")
                    return stock["id"]  # 返回PID
        else:
            print("获取股票列表失败:", data.get("message"))
    except Exception as e:
        print("请求出错:", e)
    return None

def get_historical_data(pid):
    """根据股票的PID获取历史K线数据(日线)"""
    url = f"{BASE_URL}/stock/kline"
    params = {
        "pid": pid,
        "interval": "P1D",  # 日线数据
        "key": API_KEY
    }
    try:
        response = requests.get(url, params=params)
        data = response.json()
        if data.get("code") == 200:
            kline_data = data["data"]
            print(f"\n获取到 {len(kline_data)} 条K线数据:")
            for i, kline in enumerate(kline_data[:3]):  # 仅打印前3条作为示例
                # 时间戳转换为可读日期
                from datetime import datetime
                date = datetime.fromtimestamp(kline["time"] / 1000).strftime('%Y-%m-%d')
                print(f"日期: {date}, 开盘: {kline['open']}, 最高: {kline['high']}, "
                      f"最低: {kline['low']}, 收盘: {kline['close']}, 成交量: {kline['volume']}")
            return kline_data
        else:
            print("获取K线数据失败:", data.get("message"))
    except Exception as e:
        print("请求出错:", e)
    return None

# 主程序
if __name__ == "__main__":
    # 第一步:获取MAYBANK的PID
    maybank_pid = get_stock_list()

    if maybank_pid:
        # 第二步:使用PID获取历史数据
        historical_data = get_historical_data(maybank_pid)

运行上述代码,你将首先得到MAYBANK的PID,然后获得其历史日线数据列表。

⚠️ 重要提示与最佳实践

为了更可靠地使用API,请注意以下几点:

  • PID是核心:历史数据查询严格依赖pid参数,务必先调用列表接口获取准确的PID。
  • 错误处理:在生产环境中,务必添加完善的异常捕获和重试机制,例如使用tenacity库。
  • 数据缓存:对于不常变动的历史数据,可以考虑在本地进行缓存,以降低API调用次数并提升响应速度。
  • 频率限制:请注意遵守API的请求频率限制,避免过于频繁的调用。

希望这份指南能帮助你顺利对接!如果你在具体操作中遇到问题,比如在寻找特定股票的PID时卡住了,可以告诉我,我们一起看看。

相关文章
|
6天前
|
存储 JavaScript 前端开发
JavaScript基础
本节讲解JavaScript基础核心知识:涵盖值类型与引用类型区别、typeof检测类型及局限性、===与==差异及应用场景、内置函数与对象、原型链五规则、属性查找机制、instanceof原理,以及this指向和箭头函数中this的绑定时机。重点突出类型判断、原型继承与this机制,助力深入理解JS面向对象机制。(238字)
|
5天前
|
云安全 人工智能 安全
阿里云2026云上安全健康体检正式开启
新年启程,来为云上环境做一次“深度体检”
1609 6
|
7天前
|
安全 数据可视化 网络安全
安全无小事|阿里云先知众测,为企业筑牢防线
专为企业打造的漏洞信息收集平台
1333 2
|
1天前
|
消息中间件 人工智能 Kubernetes
阿里云云原生应用平台岗位急招,加入我们,打造 AI 最强基础设施
云原生应用平台作为中国最大云计算公司的基石,现全面转向 AI,打造 AI 时代最强基础设施。寻找热爱技术、具备工程极致追求的架构师、极客与算法专家,共同重构计算、定义未来。杭州、北京、深圳、上海热招中,让我们一起在云端,重构 AI 的未来。
|
6天前
|
缓存 算法 关系型数据库
深入浅出分布式 ID 生成方案:从原理到业界主流实现
本文深入探讨分布式ID的生成原理与主流解决方案,解析百度UidGenerator、滴滴TinyID及美团Leaf的核心设计,涵盖Snowflake算法、号段模式与双Buffer优化,助你掌握高并发下全局唯一ID的实现精髓。
359 160
|
6天前
|
人工智能 自然语言处理 API
n8n:流程自动化、智能化利器
流程自动化助你在重复的业务流程中节省时间,可通过自然语言直接创建工作流啦。
438 6
n8n:流程自动化、智能化利器
|
8天前
|
人工智能 API 开发工具
Skills比MCP更重要?更省钱的多!Python大佬这观点老金测了一周终于懂了
加我进AI学习群,公众号右下角“联系方式”。文末有老金开源知识库·全免费。本文详解Claude Skills为何比MCP更轻量高效:极简配置、按需加载、省90% token,适合多数场景。MCP仍适用于复杂集成,但日常任务首选Skills。推荐先用SKILL.md解决,再考虑协议。附实测对比与配置建议,助你提升效率,节省精力。关注老金,一起玩转AI工具。
|
15天前
|
机器学习/深度学习 安全 API
MAI-UI 开源:通用 GUI 智能体基座登顶 SOTA!
MAI-UI是通义实验室推出的全尺寸GUI智能体基座模型,原生集成用户交互、MCP工具调用与端云协同能力。支持跨App操作、模糊语义理解与主动提问澄清,通过大规模在线强化学习实现复杂任务自动化,在出行、办公等高频场景中表现卓越,已登顶ScreenSpot-Pro、MobileWorld等多项SOTA评测。
1594 7
|
5天前
|
Linux 数据库
Linux 环境 Polardb-X 数据库 单机版 rpm 包 安装教程
本文介绍在CentOS 7.9环境下安装PolarDB-X单机版数据库的完整流程,涵盖系统环境准备、本地Yum源配置、RPM包安装、用户与目录初始化、依赖库解决、数据库启动及客户端连接等步骤,助您快速部署运行PolarDB-X。
262 1
Linux 环境 Polardb-X 数据库 单机版 rpm 包 安装教程
|
10天前
|
人工智能 前端开发 API
Google发布50页AI Agent白皮书,老金帮你提炼10个核心要点
老金分享Google最新AI Agent指南:让AI从“动嘴”到“动手”。Agent=大脑(模型)+手(工具)+协调系统,可自主完成任务。通过ReAct模式、多Agent协作与RAG等技术,实现真正自动化。入门推荐LangChain,文末附开源知识库链接。
717 119