Java程序告诉你A股沪深300哪些股票值得投资

本文通过Java程序筛选沪深300指数中权重前50的股票,并结合证券之星的评级进行投资分析。作者首先下载并处理沪深300样本权重数据,接着编写程序自动输出权重排名,然后手动收集股票评级信息,最后根据权重、评级和估值综合评分,确定最具投资价值的20家公司。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

优快云、牛客、雪球、公众号同步首发:
闲得慌,其实可以手写的,主要是想复习一下Java(不是。。

首先,在中证指数官网下载沪深300的样本权重EXCEL
在这里插入图片描述

下载后,我把股票名和对应权重合并到了紧邻的两列,方便后续操作
在这里插入图片描述

筛选标准1:沪深300的前50大权重

编写一个简单的Java程序,利用HashMap结构,key存股票名,value存权重值(本来想反过来方便排序的,结果发现NPE了,因为权重可能有重复值)

    public static void main(String[] args) {
        Map<String, String> stockMap = new HashMap<>();
        Scanner input = new Scanner(System.in);
        for (int i = 0; i < 300; i ++) {
            String[] stock = input.nextLine().split("\t");
            stockMap.put(stock[0], stock[1]);
        }
        List<Map.Entry<String,String>> list = new ArrayList<>(stockMap.entrySet());
        list.sort((o1, o2) -> o2.getValue().compareTo(o1.getValue()));
        int i = 0;
        for (Map.Entry<String, String> stock : list) {
            System.out.println(stock.getKey() + "\t" + stock.getValue());
            if (i++ >= 50) {
                break;
            }
        }
    }

run:
把EXCEL的两列作为输入(Ctrl+Shift+↓快速选中两列,然后Ctrl+C/V)
在这里插入图片描述
程序自动输出了沪深300权重前50的股票
在这里插入图片描述
然后复制到EXCEL中:
在这里插入图片描述

筛选标准2:证券之星评级

人肉搜索股票
在这里插入图片描述
人肉搜索评级
在这里插入图片描述

根据上述EXCEL和我在雪球人工查了50支股票的评级信息,我制作出了下表:
在这里插入图片描述
编写Java程序,以沪深300权重作为35%权重,好公司作为45%权重,好价格作为8%权重和好估值作为12%权重(多次测试得出的合理取值):
在这里插入图片描述

    public static void main(String[] args) {
        List<StockInfo> stockInfos = new ArrayList<>();
        Scanner input = new Scanner(System.in);
        for (int i = 0; i <= 50; i++) {
            String[] stock = input.nextLine().split("\t");
            StockInfo stockInfo = new StockInfo(stock[0],
                    Double.parseDouble(stock[1]),
                    Double.parseDouble(stock[2]),
                    Double.parseDouble(stock[3]),
                    Double.parseDouble(stock[4]));
            double rating = stockInfo.weight * 37.5 + stockInfo.goodCompany * 45 +
                            stockInfo.goodPrice * 8 + stockInfo.goodPE * 9.5;
            stockInfo.setRating(rating);
            stockInfos.add(stockInfo);
        }
        stockInfos.sort((o1, o2) -> (int) (o2.rating - o1.rating));
        for (StockInfo stock : stockInfos) {
            System.out.println(stock.name + "\t" + String.format("%.3f",stock.rating/100));
        }
    }

输入EXCEL中的数据,得到评分最靠前的20名公司:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值