stock-ai-agent/backend/app/utils/stock_names.py
2026-02-03 10:08:15 +08:00

255 lines
5.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
股票名称映射数据库
包含常见A股股票的名称到代码的映射
"""
from typing import Optional
# 常见A股股票名称映射按行业分类
STOCK_NAME_MAP = {
# 白酒
"贵州茅台": "600519",
"茅台": "600519",
"五粮液": "000858",
"泸州老窖": "000568",
"山西汾酒": "600809",
"洋河股份": "002304",
# 银行
"工商银行": "601398",
"工行": "601398",
"建设银行": "601939",
"建行": "601939",
"农业银行": "601288",
"农行": "601288",
"中国银行": "601988",
"中行": "601988",
"交通银行": "601328",
"交行": "601328",
"招商银行": "600036",
"招行": "600036",
"兴业银行": "601166",
"浦发银行": "600000",
"民生银行": "600016",
"光大银行": "601818",
"平安银行": "000001",
"宁波银行": "002142",
# 保险
"中国平安": "601318",
"平安": "601318",
"中国人寿": "601628",
"中国太保": "601601",
"新华保险": "601336",
# 证券
"中信证券": "600030",
"中信": "600030",
"海通证券": "600837",
"国泰君安": "601211",
"华泰证券": "601688",
"广发证券": "000776",
"招商证券": "600999",
"东方证券": "600958",
# 科技
"中兴通讯": "000063",
"中兴": "000063",
"立讯精密": "002475",
"京东方A": "000725",
"京东方": "000725",
"TCL科技": "000100",
"海康威视": "002415",
"大华股份": "002236",
"科大讯飞": "002230",
"讯飞": "002230",
"紫光国微": "002049",
"中芯国际": "688981",
"韦尔股份": "603501",
# 新能源汽车
"比亚迪": "002594",
"宁德时代": "300750",
"宁德": "300750",
"长城汽车": "601633",
"长城": "601633",
"上汽集团": "600104",
"上汽": "600104",
"广汽集团": "601238",
"广汽": "601238",
"吉利汽车": "00175", # 港股
"理想汽车": "02015", # 港股
"小鹏汽车": "09868", # 港股
"蔚来": "09866", # 港股
# 医药
"恒瑞医药": "600276",
"恒瑞": "600276",
"药明康德": "603259",
"迈瑞医疗": "300760",
"迈瑞": "300760",
"片仔癀": "600436",
"云南白药": "000538",
"白药": "000538",
"爱尔眼科": "300015",
"智飞生物": "300122",
# 消费
"伊利股份": "600887",
"伊利": "600887",
"海天味业": "603288",
"海天": "603288",
"格力电器": "000651",
"格力": "000651",
"美的集团": "000333",
"美的": "000333",
"海尔智家": "600690",
"海尔": "600690",
"老板电器": "002508",
# 地产
"万科A": "000002",
"万科": "000002",
"保利发展": "600048",
"保利": "600048",
"招商蛇口": "001979",
"金地集团": "600383",
"金地": "600383",
# 能源
"中国石油": "601857",
"中石油": "601857",
"中国石化": "600028",
"中石化": "600028",
"中国神华": "601088",
"神华": "601088",
"陕西煤业": "601225",
"长江电力": "600900",
"三峡能源": "600905",
# 通信
"中国移动": "600941",
"移动": "600941",
"中国电信": "601728",
"电信": "601728",
"中国联通": "600050",
"联通": "600050",
"中国卫通": "601698",
"卫通": "601698",
# 航空航天
"中国国航": "601111",
"国航": "601111",
"南方航空": "600029",
"南航": "600029",
"东方航空": "600115",
"东航": "600115",
"中国卫星": "600118",
"航天科技": "000901",
# 钢铁
"宝钢股份": "600019",
"宝钢": "600019",
"河钢股份": "000709",
"河钢": "000709",
"鞍钢股份": "000898",
"鞍钢": "000898",
# 有色金属
"紫金矿业": "601899",
"紫金": "601899",
"中国铝业": "601600",
"中铝": "601600",
"江西铜业": "600362",
"江铜": "600362",
"洛阳钼业": "603993",
# 化工
"万华化学": "600309",
"万华": "600309",
"华鲁恒升": "600426",
"恒力石化": "600346",
"荣盛石化": "002493",
# 电力设备
"隆基绿能": "601012",
"隆基": "601012",
"阳光电源": "300274",
"通威股份": "600438",
"通威": "600438",
"特变电工": "600089",
# 军工
"中航沈飞": "600760",
"沈飞": "600760",
"中航西飞": "000768",
"西飞": "000768",
"中国船舶": "600150",
"中船": "600150",
"航发动力": "600893",
"航天发展": "000547",
# 互联网
"腾讯控股": "00700", # 港股
"腾讯": "00700",
"阿里巴巴": "09988", # 港股
"阿里": "09988",
"美团": "03690", # 港股
"京东": "09618", # 港股
"拼多多": "PDD", # 美股
"百度": "09888", # 港股
"网易": "09999", # 港股
"小米集团": "01810", # 港股
"小米": "01810",
# 指数
"上证指数": "000001",
"上证": "000001",
"沪指": "000001",
"深证成指": "399001",
"深成指": "399001",
"创业板指": "399006",
"创业板": "399006",
"科创50": "000688",
"沪深300": "000300",
"中证500": "000905",
"中证1000": "000852",
}
def search_stock_by_name(name: str) -> Optional[str]:
"""
根据股票名称搜索代码
Args:
name: 股票名称或简称
Returns:
股票代码或None
"""
# 精确匹配
if name in STOCK_NAME_MAP:
return STOCK_NAME_MAP[name]
# 模糊匹配(包含关系)
for stock_name, code in STOCK_NAME_MAP.items():
if name in stock_name or stock_name in name:
return code
return None
def get_stock_name(code: str) -> Optional[str]:
"""
根据代码获取股票名称
Args:
code: 股票代码
Returns:
股票名称或None
"""
for name, stock_code in STOCK_NAME_MAP.items():
if stock_code == code:
return name
return None