当前位置: 首页 > article >正文

智能券商平台开发时板块、行业基础数据怎么获取?实操来了

在开发智能券商平台时必然会涉及到板块、行业这些基本数据业务上都会去做热门行业或市场总览等计算所以先要有行业板块的基础数据然后要获取到行业板块下的成分股最后才能根据个股数据进行计算。这个过程不难但还是有些复杂所以记录一下我是怎么获取行业板块基础数据的。下面直接贴具体的Python代码因为有详细的注释就不再另加描述了。同步行业字典表 code_industry实现见 stock_lab.equity.code_industry_sync。 本脚本有两种数据来源二选一 1) 默认 sourcescreeners - 从 OpenBB 拉美股/港股 screenerFinviz、FMP、可选 Yahoo合并去重得到 (sector, industry) 列表再写入 MySQL。 2) --from-code-infosourcecode_info - 不调用任何外部 screener API。 - 从本库表 code_info 中读取「已由 update_code_info_sector_industry 等脚本写入」的 sector环境变量常为 board 列与 industry 列做 SQL DISTINCT 后再按同一套规则 归一化、去重写入 code_industry。 - 适用你已用 profile 把各标的行业写进 code_info希望字典表与之一致、且避免 Yahoo 限流。 - 板块为占位符如 Unknown、空时归一化后与「无板块」一致若字典表里已有 industry 但 sector 仍是 Unknown可用默认 screener 同步加 **--refresh-unknown-sectors**用本次 Finviz/FMP 等合并结果按 industry 名回填真实板块。 --json将 run_sync 返回的统计字典以 JSON 打印到 stdout便于脚本解析不写 --json 则打印人类可读摘要。 --dry-run只计算条数不连接写库见 run_sync 内逻辑。 from __future__ import annotations import argparse import json import sys from pathlib import Path _ROOT Path(__file__).resolve().parents[2] if str(_ROOT) not in sys.path: sys.path.insert(0, str(_ROOT)) from stock_lab.equity.code_industry_sync import run_sync def main() - None: p argparse.ArgumentParser( description( 同步板块/行业字典到 MySQL code_industry。 默认同时拉取美股Finviz可选合并 FMP与港股优先 FMP默认不再自动请求 Yahoo 避免限流。需 Yahoo 时请传 --hk-yahoo-fallback。 按 (sector, industry) 去重合并后写入。 ), ) p.add_argument(--dry-run, actionstore_true, help只统计不写库) p.add_argument(--skip-us, actionstore_true, help不拉美股Finviz仅 screeners 模式有效) p.add_argument(--skip-hk, actionstore_true, help不拉港股仅 screeners 模式有效) p.add_argument(--us-limit, typeint, default10000) p.add_argument(--hk-limit, typeint, default10000) p.add_argument( --hk-yahoo-only, actionstore_true, help港股只用 Yahoo不先尝试 FMPFMP 需在 OpenBB 配置 fmp_api_key, ) p.add_argument( --hk-fmp-only, actionstore_true, help显式港股仅 FMP与默认行为相同与 --hk-yahoo-fallback 互斥, ) p.add_argument( --hk-yahoo-fallback, actionstore_true, helpFMP 无有效 sector/industry 时再请求 Yahoo易触发限流默认关闭, ) p.add_argument( --json, actionstore_true, help将本次同步统计以 JSON 输出到标准输出字段含 source、merged_unique_pairs、inserted 等, ) p.add_argument( --prune-stale, actionstore_true, help对本次拉取中未出现的 (sector, industry_name_en) 做软删deleted_at 若 limit 过小或 API 不完整可能误删。默认关闭。, ) p.add_argument( --require-both, actionstore_true, help未使用 --skip-us/--skip-hk 时若美股或港股任一侧条数为 0 则报错退出保证两侧都有数据再写库, ) p.add_argument( --from-code-info, actionstore_true, help从 MySQL code_info 已写入的 sector(board)industry 去重后写入 code_industry与 update_code_info_sector_industry 同一套列不调用 screener, ) p.add_argument( --refresh-unknown-sectors, actionstore_true, help仅 screener 模式同步前将库中 sector 为空或 Unknown 等占位的行按本次美/港 screener 合并结果按 industry 名回填板块, ) args p.parse_args() if args.from_code_info and (args.skip_us or args.skip_hk): p.error(--from-code-info 与 --skip-us/--skip-hk 互斥) if args.from_code_info and args.refresh_unknown_sectors: p.error(--refresh-unknown-sectors 仅适用于默认 screener 模式不能与 --from-code-info 同用) if args.hk_yahoo_only and args.hk_fmp_only: p.error(--hk-yahoo-only 与 --hk-fmp-only 不能同时使用) if args.hk_fmp_only and args.hk_yahoo_fallback: p.error(--hk-fmp-only 与 --hk-yahoo-fallback 不能同时使用) # 港股仅当用户显式 --hk-yahoo-fallback 且未 --hk-fmp-only 时在 FMP 无数据后再请求 Yahoo hk_yahoo_fallback args.hk_yahoo_fallback and not args.hk_fmp_only # --from-code-info走 code_info 聚合路径仅 MySQL DISTINCT 与库内一致的列配置 if args.from_code_info: summary run_sync( sourcecode_info, dry_runargs.dry_run, prune_staleargs.prune_stale, require_both_marketsargs.require_both, refresh_unknown_sectorsFalse, ) else: # 默认OpenBB screener 路径美/港可 skip港股 Yahoo 回退由 hk_yahoo_fallback 控制 summary run_sync( sourcescreeners, skip_usargs.skip_us, skip_hkargs.skip_hk, us_limitargs.us_limit, hk_limitargs.hk_limit, hk_prefer_fmpnot args.hk_yahoo_only, hk_yahoo_fallbackhk_yahoo_fallback, dry_runargs.dry_run, prune_staleargs.prune_stale, require_both_marketsargs.require_both, refresh_unknown_sectorsargs.refresh_unknown_sectors, ) # 以下警告仅针对 screener 模式code_info 模式若行业为空会在 run_sync 或 SQL 侧体现为 0 条 if not args.from_code_info and not args.skip_us and not args.skip_hk: if summary[us_pairs] 0: print( 警告: 美股本次未得到任何 sector/industry 对合并结果仅含港股若港股有数据。, filesys.stderr, ) if summary[hk_pairs] 0: print( 警告: 港股本次未得到任何 sector/industry 对合并结果仅含美股若美股有数据。 请在 .env 配置 FMP_API_KEY推荐若必须走 Yahoo 再加 --hk-yahoo-fallback易限流。, filesys.stderr, ) # --jsonstdout 输出机器可读统计否则输出简短键值列表 if args.json: print(json.dumps(summary, ensure_asciiFalse, indent2, defaultstr)) else: print(完成。) for k, v in summary.items(): print(f {k}: {v}) if __name__ __main__: main()代码可直接运行前提你的环境是好的同时安装了OpenBB并配置了对应的数据源。如果你第一次开发券商平台前面的坑还是有点多欢迎交流一起学习一起进步。

相关文章:

智能券商平台开发时板块、行业基础数据怎么获取?实操来了

在开发智能券商平台时,必然会涉及到板块、行业这些基本数据,业务上都会去做热门行业或市场总览等计算,所以先要有行业板块的基础数据,然后要获取到行业板块下的成分股,最后才能根据个股数据进行计算。这个过程不难&…...

终极网页资源嗅探:猫抓Cat-Catch浏览器扩展完全指南

终极网页资源嗅探:猫抓Cat-Catch浏览器扩展完全指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在当今互联网时代,网页…...

McCabe度量法实战指南:从环路复杂度计算到测试用例精准设计

1. McCabe度量法:代码复杂度的"体温计" 第一次听说McCabe度量法时,我正被一个200行的函数折磨得焦头烂额。这个函数有8层嵌套的if-else,每次修改都像在走钢丝。直到团队里的架构师扔给我一份复杂度报告:"V(G)15&am…...

AI助手实现关系网络驱动工具检索超越搜索引擎能力突破

这项由宾夕法尼亚大学、马里兰大学、布朗大学、卡内基梅隆大学和里海大学联合开展的研究,以预印本形式于2026年4月8日发布在arXiv平台,论文编号为arXiv:2604.05333v2,归属计算机人工智能领域。感兴趣的读者可以通过该编号查阅完整论文。一、从…...

AIDE手机编程入门指南(零基础启航) 1.1 初探我的第一个Android应用

1. 打开AIDE的第一眼:认识你的"创作工作室" 第一次打开AIDE时,你会看到一个类似文件管理器的界面。这就像你刚搬进一间新工作室,需要先熟悉工具摆放的位置。左上角显示的是当前项目名称,默认会有一个示例项目。点击右下…...

AI助手真的能帮你订机票、投简历吗?

这项由英属哥伦比亚大学、滑铁卢大学、Vector Institute、卡内基梅隆大学、上海交通大学、浙江大学、香港科技大学、清华大学等十余所高校与研究机构联合开展的研究,于2026年4月以预印本形式发布在arXiv平台,论文编号为arXiv:2604.08523。你有没有想过&a…...

华硕笔记本必备神器:5分钟掌握G-Helper轻量级控制工具

华硕笔记本必备神器:5分钟掌握G-Helper轻量级控制工具 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Sc…...

从零到一:3天用Unity和WPF打造专属Galgame播放器《Galplayer》实战手记

从零到一:3天用Unity和WPF打造专属Galgame播放器《Galplayer》实战手记 当你想在手机上流畅体验Galgame剧情,却发现现有播放器要么功能简陋,要么操作繁琐时,有没有想过自己动手打造一个专属播放器?本文将带你完整复盘…...

Element UI行政区划数据实战:如何构建高性能三级联动组件

Element UI行政区划数据实战:如何构建高性能三级联动组件 【免费下载链接】element-china-area-data :cn: Element UI && antd Cascader级联选择器 中国省市区三级、二级联动option数据 项目地址: https://gitcode.com/gh_mirrors/el/element-china-area-…...

Blender3mfFormat终极指南:实现专业级3D打印工作流的完整解决方案

Blender3mfFormat终极指南:实现专业级3D打印工作流的完整解决方案 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 在当今数字化制造时代,3D打印技…...

保姆级教程:用GMT6.1绘制专业地形起伏图(从数据下载到出图避坑)

零基础实战:用GMT6.1绘制科研级地形图的完整指南 第一次打开GMT时,面对满屏的命令行参数,我盯着屏幕发呆了半小时——这像极了刚学编程时面对"Hello World"的茫然。但当我终于生成第一张带有自定义光照效果的地形图时,…...

外汇api接口实践:实时汇率与历史数据获取

在做量化研究和抓取外汇数据时,我发现最难的不是写代码,而是数据源的稳定性和接口的灵活性。最开始用一些免费的接口,要么延迟高,要么历史数据不全,慢慢接触到专业的外汇api后,整个抓取流程和数据处理逻辑才…...

B站视频下载终极方案:用BilibiliDown轻松保存你喜欢的每一帧 [特殊字符]

B站视频下载终极方案:用BilibiliDown轻松保存你喜欢的每一帧 🎬 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitc…...

超强OCR识别,速度快(支持图片,PDF数学公式以及化学符号)MinerU-0.13.1

MinerU:OCR 领域的扛把子先说说 MinerU 这个项目在 OCR 圈子的地位MinerU 由上海人工智能实验室的 OpenDataLab 团队开发,最初诞生于 InternLM 大模型的预训练数据处理过程中做过 RAG 的朋友应该都知道,文档解析是 RAG 流水线上最关键的一环—…...

VideoAgentTrek Screen Filter 艺术化过滤效果展示:超越隐私保护的创意应用

VideoAgentTrek Screen Filter 艺术化过滤效果展示:超越隐私保护的创意应用 你可能用过一些屏幕录制工具,它们自带的模糊或马赛克功能,主要就是为了遮挡敏感信息,比如密码、人脸或者不想展示的窗口。功能很实用,但说实…...

虚拟机基础:JVM、V8 运行机制极简科普

文章目录 前言一、先搞懂:到底什么是“虚拟机”?二、JVM:Java世界的“铁饭碗管家”2.1 JVM的整体工作流程2.2 JVM的核心结构:五大区域三大子系统2.2.1 运行时数据区(JVM的“房间布局”)2.2.2 三大核心子系统…...

告别手动守护进程:NSSM命令行实战,打造稳定Windows后台服务

1. 为什么需要NSSM管理Windows后台服务 每次手动启动Python脚本或Java应用时,你是不是也遇到过这些糟心事?命令行窗口一关程序就崩溃,服务器重启后得重新登录运行,日志文件越来越大却不会自动切割。这些问题我都经历过&#xff0c…...

突破性设计转移动画架构:AEUX重构设计工具到After Effects的无损转换引擎

突破性设计转移动画架构:AEUX重构设计工具到After Effects的无损转换引擎 【免费下载链接】AEUX Editable After Effects layers from Sketch artboards 项目地址: https://gitcode.com/gh_mirrors/ae/AEUX 在UI/UX动效设计领域,设计师长期面临从…...

KNOWLEDGE IS NOT STATIC: ORDER-AWARE HYPERGRAPH RAG FOR LANGUAGE MODELS(论文解读)

Lab4AI大模型实验室是面向AI开发者、科研党与学习者打造的一站式AI实践平台,深度绑定高性能弹性算力,支持模型复现、训练、推理全流程,以按需计费、低价高效破解高端算力紧缺与成本高昂难题;同步Arxiv前沿论文并提供翻译、导读、分…...

如何利用SQL存储过程构建视图_实现逻辑复杂的动态视图

SQL Server视图不能调用存储过程,应改用内联表值函数(ITVF)或临时表动态SQL实现;ITVF支持参数、可被SELECT直接引用,但不可含DECLARE/SET;临时表方案需分两步执行且注意会话作用域;跨库迁移时语…...

SQL嵌套查询处理大数据量_内存压力缓解方案

优先改写为JOIN,只查必要字段并加索引;MySQL分页驱动或禁用BNL,PostgreSQL优选EXISTS且带关联条件;复杂场景落地为带索引的临时表。WHERE 子查询太慢,直接爆内存怎么办SQL 嵌套查询在数据量上百万后,WHERE …...

第一阶段:Java入门基础 |流程控制语句

第一阶段:Java入门基础 | ⭐ 流程控制语句 - 手把手教学指南 📅 更新时间:2026年4月17日 🎯 学习阶段:第一阶段:Java入门基础 ⏱️ 建议用时:2天 📌 阶段目标:掌握Java开…...

Arduino TFT_eSPI库进阶玩法:用Sprite(精灵图)制作流畅动画和动态仪表盘

Arduino TFT_eSPI库进阶玩法:用Sprite(精灵图)制作流畅动画和动态仪表盘 当你在Arduino项目中使用TFT屏幕时,是否遇到过屏幕闪烁、刷新缓慢的问题?特别是在制作动态界面或动画效果时,直接操作屏幕往往会导致…...

避坑指南:STM32F103C8T6标准库移植机智云函数时,那些没人告诉你的细节(附完整工程)

STM32F103C8T6标准库移植机智云SDK的12个致命陷阱与解决方案 第一次尝试将机智云SDK移植到STM32F103C8T6标准库环境时,我遇到了至少5个导致系统崩溃的隐蔽问题。这些问题在官方文档中只字未提,却能让整个项目停滞数周。本文将揭示那些只有真正踩过坑的开…...

YOLOv5超参数进化实战:从零到一构建你的专属优化策略

1. 为什么需要超参数进化? 刚接触YOLOv5时,我发现很多开发者(包括我自己)都会直接使用默认的超参数配置。这确实能快速跑通训练流程,但当我用自定义数据集测试时,效果总是不尽如人意。后来才明白&#xff0…...

从零构建OpenMV与STM32串口通信系统:协议解析与实战调试

1. 为什么需要OpenMV与STM32串口通信 第一次接触OpenMV和STM32通信时,我也觉得不就是接两根线的事吗?结果在实际项目中栽了跟头。OpenMV作为一款强大的机器视觉模块,经常用于颜色识别、物体追踪等场景,而STM32则擅长实时控制。但要…...

Mintegral 广告平台 ROI 指数排名进入全球前四,多维度数据验证全球流量竞争力

2026年4月,全球知名移动营销归因机构 Singular 发布了《Singular ROI Index 2026》报告。程序化互动式广告平台 Mintegral 凭借稳定的流量质量、精准的触达能力以及出色的获客表现,成功入选“ROI 指数榜”和“MTA ROI 排行榜”两大榜单。从整体表现来看&…...

5分钟搞定!nanobot超轻量级AI助手快速部署与基础功能体验

5分钟搞定!nanobot超轻量级AI助手快速部署与基础功能体验 1. 引言:为什么选择nanobot? 如果你正在寻找一个轻量级但功能强大的AI助手,nanobot绝对值得一试。这个仅用4000行代码实现的AI助手,比传统方案小了99%&#…...

别再手动配置了!Dify插件市场(Marketplace)的3个高效安装技巧与实战避坑

别再手动配置了!Dify插件市场(Marketplace)的3个高效安装技巧与实战避坑 当团队协作规模扩大到5个以上Workspace时,插件管理就会从便利工具变成运维噩梦。上周处理的一个典型案例:某AI中台团队在同步更新20个Workspace的Google Search插件时&…...

std::promise和std::future的用法

1、std::promise和std::future注意用来在线程间传递数据&#xff08;不用手工同步来传递数据&#xff09;。2、在之前通过传递引用来传递数据&#xff0c;也能达到上述效果&#xff0c;但是需要手动同步&#xff0c;否则获取到不可预测的结果。#include <iostream> #incl…...