当前位置:首页>python>量化系列(九十四) 不用炒股软件!Python 一键获取股票实时分时图、日 K 走势图完整代码

量化系列(九十四) 不用炒股软件!Python 一键获取股票实时分时图、日 K 走势图完整代码

  • 2026-10-11 06:35:30
量化系列(九十四) 不用炒股软件!Python 一键获取股票实时分时图、日 K 走势图完整代码

一. 认真学完这一章节,你可以做什么?

这一章节,我们来获取一下股票的 实时分时图和实时日K图图形。

有了这个图形,就可以很方便的预览出某个板块下所有的股票对应的图形信息,

可以更快地找到符合某个板块下的股票。

这一章节,我们先学习一下 获取某个股票对应的分时图和实时日K图。

有个这个功能,我们以后就可以做这样的功能了:

这个功能,是非常强大的,大家一定要学会应用。

本文含系统自动匹配的广告,广告收入用于支持持续创作,感谢理解

二.    数据源和响应信息

股票的 分时图信息  从  POST   

 https://www.yueshushu.top/StockApi/stockCrawler/getStockKline?sign=stock 

 进行获取

请求参数   post json

 {  "code": "sz000001",  "type": 1}

code 表示股票编码,  type 表示类型  1为分时图,2为日k图, 3为 周K图, 4为 月K图。

响应参数是:

{  "code": 20000,  "success": true,  "message": null,  "timestamp": 1783762640916,  "traceId": "45f17903-53e5-4f21-b23b-6d36611ee1a2",  "timestampStr": "2026-07-11 17:37:20",  "exceptionMessage": null,  "customInfo": "如果你对我的接口感兴趣,请联系我:+v: yueshushu_top",  "data": "data:image/png;base64,R0aj8ikcslsOp/QqHRKrVqv2Kx2y+16v+......"}

三.   Python 实现获取股票的实时分时图,日K图数据。

为了方便大家理解和使用, 小亥将采用 streamlit  进行编写相关的脚本, 这样有页面,也方便点击

大家可以通过 AI 自行实现,  小亥这儿提供一个简单的版本。

脚本名称为   stock_kline_chart.py

直接复制粘贴即可

"""===================================================================================股票K线图查询工具===================================================================================功能:输入股票编码,展示分钟K、日K、周K、月K线图接口:POST https://www.yueshushu.top/StockApi/stockCrawler/getStockKline?sign=stockK线类型:    type=1: 分钟K线    type=2: 日K线    type=3: 周K线    type=4: 月K线作者:AI助手日期:2026-07-11==================================================================================="""import streamlit as stimport requestsimport base64from io import BytesIO# ===================== 接口配置 =====================# K线图接口地址KLINE_URL = "https://www.yueshushu.top/StockApi/stockCrawler/getStockKline?sign=stock"# ===================== 页面配置 =====================st.set_page_config(    page_title="金亥跃江_K线图查询工具",    layout="wide",    page_icon="📈")# ===================== K线图获取函数 =====================def fetch_kline_image(code: str, kline_type: int) -> bytes:    """    获取K线图图片数据    参数:        code: 股票代码,格式如 "sz000001" 或 "sh600000"        kline_type: K线类型            1 = 分钟K线            2 = 日K线            3 = 周K线            4 = 月K线    返回:        图片的二进制数据,失败返回None    """    # 构建请求体    payload = {        "code": code,        "type": kline_type    }    try:        # 发送POST请求        response = requests.post(KLINE_URL, json=payload, timeout=30)        result = response.json()        # 检查响应状态        if result.get("code") == 20000 and result.get("success"):            # 获取base64编码的图片数据            base64_data = result.get("data")            if not base64_data:                return None            # 处理base64数据(可能包含前缀)            if "base64," in base64_data:                img_data = base64_data.split("base64,")[1]            else:                img_data = base64_data            # 解码base64为二进制            image_bytes = base64.b64decode(img_data)            return image_bytes        else:            st.error(f"获取K线图失败: {result.get('message', '未知错误')}")            return None    except Exception as e:        st.error(f"请求异常: {str(e)}")        return None# ===================== 主程序 =====================def main():    """    Streamlit应用主函数    """    # ---------- 页面标题 ----------    st.title("📈 金亥跃江_K线图查询工具")    st.divider()    # ---------- 侧边栏:查询条件 ----------    with st.sidebar:        st.header("🔍 查询条件配置")        # ---------- 股票代码输入 ----------        stock_code_input = st.text_input(            label="股票代码",            value="",            placeholder="请输入股票代码,如:sz000001"        )        # ---------- 查询按钮 ----------        query_btn = st.button("🚀 开始查询", type="primary", use_container_width=True)        st.divider()        # ---------- K线图类型说明 ----------        with st.expander("📖 K线图类型说明"):            st.markdown("""            **K线图类型:**            - 🕐 **分钟K**:显示日内分钟级别的走势            - 📅 **日K线**:以每日为单位显示股价走势            - 📆 **周K线**:以每周为单位显示股价走势            - 📆 **月K线**:以每月为单位显示股价走势            **股票代码格式:**            - 深圳股票:`sz` 前缀,如 `sz000001`            - 上海股票:`sh` 前缀,如 `sh600000`            """)    # ---------- 执行查询 ----------    if query_btn:        # ---------- 输入验证 ----------        if not stock_code_input or len(stock_code_input.strip()) == 0:            st.warning("请输入股票代码!")            return        # 获取股票代码(去除空格并转为小写)        raw_code = stock_code_input.strip().lower()        # 自动添加交易所前缀        if raw_code.startswith('sz') or raw_code.startswith('sh'):            stock_code = raw_code        else:            # 纯数字代码,根据规则自动添加前缀            # 6开头 -> 上海(sh)            # 其他 -> 深圳(sz)            if raw_code.startswith('6'):                stock_code = f"sh{raw_code}"            else:                stock_code = f"sz{raw_code}"        st.success(f"✅ 正在查询股票: **{stock_code.upper()}** 的K线图...")        # ---------- 定义四种K线图 ----------        # key: K线类型编号, value: (标题, 类型名称)        kline_types = {            1: ("🕐 分钟K线", "分钟K"),            2: ("📅 日K线", "日K"),            3: ("📆 周K线", "周K"),            4: ("📆 月K线", "月K"),        }        # ---------- 批量获取K线图 ----------        # 使用4列布局,每种K线图一列        cols = st.columns(4)        # 存储获取的图片数据        kline_images = {}        for kline_type, (title, short_name) in kline_types.items():            with st.spinner(f"正在加载{short_name}..."):                image_data = fetch_kline_image(stock_code, kline_type)                kline_images[kline_type] = image_data        # ---------- 展示K线图 ----------        st.divider()        # 第一行:分钟K + 日K        st.subheader(f"📊 {stock_code.upper()} K线图展示")        row1_cols = st.columns(2)        with row1_cols[0]:            if kline_images.get(1):                st.image(kline_images[1], caption="🕐 分钟K线", use_container_width=True)            else:                st.warning("暂无分钟K线数据")        with row1_cols[1]:            if kline_images.get(2):                st.image(kline_images[2], caption="📅 日K线", use_container_width=True)            else:                st.warning("暂无日K线数据")        # 第二行:周K + 月K        row2_cols = st.columns(2)        with row2_cols[0]:            if kline_images.get(3):                st.image(kline_images[3], caption="📆 周K线", use_container_width=True)            else:                st.warning("暂无周K线数据")        with row2_cols[1]:            if kline_images.get(4):                st.image(kline_images[4], caption="📆 月K线", use_container_width=True)            else:                st.warning("暂无月K线数据")    # ---------- 空状态提示 ----------    else:        st.info("👈 请在左侧输入股票代码并点击「开始查询」")        # 显示示例        with st.expander("💡 使用示例", expanded=True):            st.markdown("""            **查询示例:**            | 股票名称 | 股票代码 | 输入格式 |            |---------|---------|---------|            | 平安银行 | 000001 | `000001` 或 `sz000001` |            | 贵州茅台 | 600519 | `600519` 或 `sh600519` |            | 宁德时代 | 300750 | `300750` 或 `sz300750` |            **操作步骤:**            1. 在左侧输入股票代码            2. 点击「开始查询」按钮            3. 自动加载四种K线图:               - 🕐 分钟K线               - 📅 日K线               - 📆 周K线               - 📆 月K线            """)# ===================== 程序入口 =====================if __name__ == "__main__":    main()

运行前 需要先安装一下 依赖

pip install streamlit requests pandas -i https://pypi.tuna.tsinghua.edu.cn/simple

运行方式是:

streamlit run stock_kline_chart.py

Google 浏览器会自动打开

免责声明:本文仅供技术交流,不构成任何投资建议。股市有风险,投资需谨慎。

如果你觉得这篇文章说到了心坎里,请点个“在看”,点个关注,并转发给身边的朋友,让更多人支持小亥!

#Python量化   #股票量化  #实时分时图 #实时日K图  #金亥跃江聊量化 #金亥跃江

最新文章

随机文章