根据股票symbol区分具体交易所

5 篇文章 0 订阅

在股票证券行业待久了,coding的时候经常会遇到这样的需求:

自动拉取当天的最新股票市场全量symbol数据,然后对这些全量的股票数据进行处理,首先要先对symbol按交易所进行区分/分类,然后再对区分出来的A股进行细化分类,分类成上交所还是深交所。
针对这样常见的需求,我写了一个工具类(前提是你对股票业务已经很熟了),方便以后工作开发使用,记录下。

需求一:根据全量股票数据判断该symbol是哪类股票----A股/港股/美股
java python双版本

Java版本:

public static String judgeSymbol(String symbol) {

        if (!symbol.startsWith("SH") && !symbol.startsWith("SZ")) {
            //判断symbol是否为数字且它的位数,6位代表A股,5位代表港股
            if (!StringUtils.isEmpty(symbol) && StringUtils.isNumeric(symbol) && symbol.length() == 5) {

                return "HK";

            } else if (!StringUtils.isEmpty(symbol) && StringUtils.isNumeric(symbol) && symbol.length() == 6) {

                return "A";
            }
            //即为美股
            else {
                return "US";
            }
        }

        if(symbol.startsWith("SH") || symbol.startsWith("SZ")){
            return "A";
        }


        return "";
    }
python版本:

def judgeSymbol(symbol):
    if not symbol.startswith("SH") and not symbol.startswith("SZ"):
        if symbol != "" and symbol.isnumeric() and len(symbol) == 5:
            return "HK"
        elif symbol != "" and symbol.isnumeric() and len(symbol) == 6:
            return "A"
        else:
            return "US"
    if symbol.startsWith("SH") or symbol.startsWith("SZ"):
        return "A"

    return ""

需求二:对A股再进行细化分类,判定该A股股票是上交所(SH)还是深交所(SZ)

java版本

增加JudgeSymbol逻辑,只针对A股,港股和美股不需要带交易所前缀
String exchangeOfSymbol = JudgeSymbol.judgeSymbol(symbol);
if("A".equals(exchangeOfSymbol)){
    //A股判定完,还得判定是SH还是SZ打头
    if(symbol.startsWith("6") || symbol.startsWith("9")){
        symbol = "SH" + symbol;

    }else {
        symbol = "SZ" + symbol;
    }

}
def addPreForSymbol(symbol):
    exchangeOfSymbol = judgeSymbol(symbol)
    if "A" == exchangeOfSymbol:
        if symbol.startswith("6") or symbol.startswith("9"):
            symbol_new = "SH" + symbol
        else:
            symbol_new = "SZ" + symbol
        return symbol_new
    return ""
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值