java拉取股票数据进行分析

news2024/11/29 4:46:07

1.背景

2.数据获取分析

3.代码获取数据

代码:

package com.life.gupiao;

import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpUtil;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.junit.Test;

import java.util.*;

/**
 * @Copyright (C) XXXXX技有限公司
 * @Author: ldp
 * @Date: 2023/10/25 10:57
 * @Description:
 */
@SuppressWarnings(value = "all")
public class DataDemo {
    /**
     * 数据获取
     */
    @Test
    public void test01() {
        String url = "https://stock.xueqiu.com/v5/stock/chart/kline.json";
        HttpRequest request = HttpUtil.createGet(url);
        Map<String, Object> map = new HashMap<>(8);
        map.put("symbol", "SH000001"); // 股票编号,SH000001
        map.put("begin", getTimeLong("2023-10-24")); // 开始时间毫秒 1698288935706
        map.put("period", "day"); // 日k:day,周k,week月k:month
        map.put("type", "before");
        map.put("count", -365 * 20);
        //kline,pe,pb,ps,pcf,market_capital,agt,ggt,balance
        map.put("indicator", "kline");
        request.form(map);

        request.cookie("device_id=efb20afd8a6af0e23aa5a234e0a379c5; s=c9115tfaqz; xq_a_token=e2f0876e8fd368a0be2b6d38a49ed2dd5eec7557; xqat=e2f0876e8fd368a0be2b6d38a49ed2dd5eec7557; xq_r_token=2a5b753b2db675b4ac36c938d20120660651116d; xq_id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1aWQiOi0xLCJpc3MiOiJ1YyIsImV4cCI6MTcwMDY5OTg3NSwiY3RtIjoxNjk4MjAyMzEzNzAwLCJjaWQiOiJkOWQwbjRBWnVwIn0.LQL_AFe1BAi48kE09x4htcBmrX0fWGxISLDIm8zOJbZ_A6vQ0rrAvirmpUmTn1hJDXtNmHZEX0SIlbncsmAmZXNjtXBJ9Du7XhW8zSB32tuGChOX4lPsgcrGlo9_35GPAVvza1bGDoEtZTV8IwfmOkUbh47KWrXk1LzFzVk_-E-WAsobxxGIucFD26UNAYABSoOuvJKVUFBnWfQOocDJZRYtefcEO64Zb1Sj7H5Gja3SJPS6IMqKED4lKlX7XHZC0NBy9v_kGnXehbmu7fcPrz6pymLvaQ6y_QZI2Oye2dveoQN3Khdj3uUBFlFHyWeDGaJoFo5WImXxC0Wd8kjvBw; cookiesu=721698202320000; u=721698202320000; Hm_lvt_1db88642e346389874251b5a1eded6e3=1698202321; Hm_lpvt_1db88642e346389874251b5a1eded6e3=1698202413");
        String body = request.execute().body();
        System.out.println(body);
        JSONObject jsonObject = JSONObject.parseObject(body).getJSONObject("data");
        JSONArray column = jsonObject.getJSONArray("column");
        JSONArray item = jsonObject.getJSONArray("item");
        String symbol = jsonObject.getString("symbol");
        createEcxel(symbol, column, item);
    }

    /**
     * 方法:存入excel
     */
    private void createEcxel(String symbol, JSONArray column, JSONArray item) {
        System.out.println("文件-处理-开始");
        List<Map<String, Object>> list = new ArrayList<>();
        for (int i = 0; i < item.size(); i++) {
            JSONArray jsonArray = item.getJSONArray(i);
            Map<String, Object> map = new HashMap<>();
            map.put("symbol", symbol);
            for (int j = 0; j < jsonArray.size(); j++) {
                String columnName = column.getString(j);
                if (columnName.equals("timestamp")) {
                    // 时间转为yyyy-MM-dd HH:mm:ss
                    Long aLong = jsonArray.getLong(j);
                    Date date = new Date(aLong);

                    String year = DateUtil.format(date, "yyyy");
                    map.put("year_str", year);

                    String month = DateUtil.format(date, "yyyy-MM");
                    map.put("month_str", month);

                    String format = DateUtil.format(date, "yyyy-MM-dd");
                    map.put("date_str", format);
                } else {
                    map.put(column.getString(j), jsonArray.get(j));
                }
            }
            list.add(map);
        }
        String format = DateUtil.format(new Date(), "yyyyMMddHHmmss");
        ExcelWriter writer = ExcelUtil.getWriter("D:\\workroom\\myJavaDemo\\life\\" + symbol + "_" + format + "_.xls");
        writer.write(list);
        writer.flush();
        writer.close();
        System.out.println("文件-处理-完成");
    }

    /**
     * 方法:时间转换
     */
    private Long getTimeLong(String dateStr) {
        DateTime parse = DateUtil.parse(dateStr, "yyyy-MM-dd");
        long time = parse.getTime();
        return time;
    }
}

执行代码得到excel数据如下:

执行代码得到excel数据,部分截图如下:

4.数据入库

将excel数据导入数据库

截图如下:

5.数据分析

根据自己的需求分析数据

这里给出简单的案例sql

-- 查询所有
select t.* from LDP_TEST2 t order by t.date_str;

-- 查询所有日期,按照日期倒序
select t.date_str,t.high,t.low from LDP_TEST2 t order by t.date_str;

-- 按年 找最高,最低,年排序
select min(t.symbol) as 编号,
       t.year_str as 年份,
       max(t.high) 最高,
       min(t.low) 最低
  from LDP_TEST2 t
 group by t.year_str
 order by 年份;

-- 按年 找最高,最低,最低排序
 select *
   from (select min(t.symbol) as 编号,
                t.year_str as 年份,
                max(t.high) 最高,
                min(t.low) 最低
           from LDP_TEST2 t
          group by t.year_str) temp
  order by 最低;
 
 -- 按年 找最高,最低,最高排序
 select *
   from (select min(t.symbol) as 编号,
                t.year_str as 年份,
                max(t.high) 最高,
                min(t.low) 最低
           from LDP_TEST2 t
          group by t.year_str) temp
  order by 最高;

5.1.案例1

5.2.案例2

5.3.案例3

其他,可以根据自己需求做

6.常用分析值

完美!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1176784.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Scala中使用Selenium进行网页内容摘录的详解

前言 公众号成为获取信息的重要途径之一。而对于公众号运营者来说&#xff0c;了解公众号的数据情况非常重要。比如&#xff0c;你可能想要获取公众号的文章内容&#xff0c;进行数据分析或者生成摘要。或者你可能想要监控竞争对手的公众号&#xff0c;了解他们的最新动态动态…

【漏洞复现】Django _2.0.8_任意URL跳转漏洞(CVE-2018-14574)

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞扫描3、漏洞验证 1.5、修复建议 说明内容漏洞编号CVE-2018-14574漏洞名称Django任意URL跳转漏洞漏洞…

Jmeter全流程性能测试实战

项目背景&#xff1a; 我们的平台为全国某行业监控平台&#xff0c;经过3轮功能测试、接口测试后&#xff0c;98%的问题已经关闭&#xff0c;决定对省平台向全国平台上传数据的接口进行性能测试。 01、测试步骤 1、编写性能测试方案 由于我是刚进入此项目组不久&#xff0c…

Chart 2 OpenCL简介

文章目录 前言OpenCL简介OpenCL 标准API 函数OpenCL C OpenCL Profiles总结 前言 记录本人学习OpenCL的历程&#xff0c;总结一些重要的知识点&#xff0c;作为个人学习笔记&#xff0c;参考书籍 Qualcomm Snapdragon™ Mobile Platform OpenCL General Programming and Optim…

【广州华锐互动】智慧安防应急可视化系统定制开发

随着科技的飞速发展&#xff0c;我们的生活方式正以前所未有的速度发生变化。在这个变革的时代&#xff0c;智慧安防应急可视化系统作为一种新兴的技术&#xff0c;正在为现代安全领域带来革命性的突破。本文将探讨智慧安防应急可视化系统的概念、应用和前景&#xff0c;以期为…

制造业出海如何乘风破浪?制胜绝招在这里!

目录 问题1: 企业为什么要出海&#xff1f; 问题2: 中国制造业出海企业应具备那些能力&#xff1f; 问题3: 出海应注意哪些事项以保证数据安全&#xff1f; 问题4: 出海企业应怎样做好人才管理&#xff1f; 问题5: 企业如何高质量出海&#xff1f; 国内制造领域各行各业纷…

浅析节能监管平台数据的分析及相关产品选型

摘 要&#xff1a;目前全国大部分省市都已建立节能监管平台&#xff0c;已积累了大量建筑的能耗数据&#xff0c;这些数据未能在建筑节能中得以有效应用。从能耗数据分析、应用两方面入手&#xff0c;对节能监管平台数据在建筑节能中的实际运用进行剖析。再针对节能监管平运行过…

GitLab CI/CD使用经验,来自于莫纳什大学的考试任务解析

CI/CD简介 CI/CD的作用在于自动化和加速软件开发、测试和交付流程&#xff0c;通过持续集成确保代码协同工作和质量&#xff0c;通过持续交付降低风险&#xff0c;使每次代码变更都能够快速、高质量地交付到生产环境&#xff0c;从而提高软件开发效率、质量和协作。 作业要求…

如何处理msvcp110.dll缺失的问题,msvcp110.dll修复方法分享

当我们试图运行用Visual Studio 2012开发的应用程序时&#xff0c;有时可能会收到一个错误提示&#xff1a;“程序无法启动&#xff0c;因为计算机中丢失了msvcp110.dll”。这是非常常见的DLL&#xff08;动态链接库&#xff09;错误之一。它通常是因为该dll文件丢失或损坏所造…

VERT900 Antenna

782773-01 VERT900 Vertical Antenna (824-960 MHz, 1710-1990 MHz) Dualband Includes one VERT900 824 to 960 MHz, 1710 to 1990 MHz Quad-band Cellular/PCS and ISM Band omni-directional vertical antenna, at 3dBi Gain.

如何对非线性【SVM】进行三维可视化

首先导入相应的模块&#xff0c; from sklearn.datasets import make_blobs from sklearn.svm import SVC import matplotlib.pyplot as plt import numpy as np 我们使用make_circles()函数创建散点图&#xff0c;并将散点图中的点的横纵坐标赋值给x,y&#xff0c;其中x是特…

大数据房价预测分析与可视 计算机竞赛

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 大数据房价预测分析与可视 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;4分 该项目较为新颖&#xff0c;适合…

网络爬虫的实战项目:使用JavaScript和Axios爬取Reddit视频并进行数据分析

概述 网络爬虫是一种程序或脚本&#xff0c;用于自动从网页中提取数据。网络爬虫的应用场景非常广泛&#xff0c;例如搜索引擎、数据挖掘、舆情分析等。本文将介绍如何使用JavaScript和Axios这两个工具&#xff0c;实现一个网络爬虫的实战项目&#xff0c;即从Reddit这个社交媒…

C# winform 定时器

1.加入Timer using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace Te…

Linux实现进度条小程序(包含基础版本和模拟下载过程版本)

Linux实现进度条小程序[包含基础版本和模拟下载过程版本] Linux实现进度条小程序1.预备的两个小知识1.缓冲区1.缓冲区概念的引出2.缓冲区的概念 2.回车与换行1.小例子2.倒计时小程序 2.基础版进度条1.的回车方式的打印2.百分比的打印3.状态提示符的打印 3.升级版进度条1.设计:进…

一题都看不懂,大厂的面试是真的变态......

最近我的一个读者朋友去了字节面试&#xff0c;来给我发信息吐槽&#xff0c;说字节的面试太困难了&#xff0c;像他这种三年经验的测试员&#xff0c;在技术面&#xff0c;居然一题都答不上来&#xff0c;这要多高的水平才能有资格去面试字节的测试岗位。 确实&#xff0c;字…

nacos的部署与配置中心

文章目录 一、nacos部署安装的方式单机模式:集群模式:多集群模式: 二、安装的步骤1、预备环境准备2、载安装包以及安装2.1、Nacos有以下两种安装方式:2.2、更换数据源数据源切换为MySQL 2.3、开启控制台授权登录&#xff08;可选&#xff09; 3、配置中心的使用3.1、创建配置信…

星戈瑞Sulfo Cy3-COOH生物学有那些常见应用呢?

Sulfo Cy3-COOH&#xff08;磺酸基花青3羧酸&#xff09;(来自星戈瑞的花菁染料)是一种常用的荧光标记物&#xff0c;应用于生物学研究中&#xff0c;其常见应用包括但不限于以下几个领域&#xff1a; 1.免疫荧光染色&#xff1a;Sulfo Cy3-COOH通常用于标记抗体&#xff0c;用…

《进化优化》第7章 遗传规划

文章目录 7.1 LISP: 遗传规划的语言Lisp程序的交叉 7.2 遗传规划的基础7.2.1 适应度的度量7.2.2 终止准则7.2.3 终止集合7.2.4 函数集合7.2.5 初始化7.2.6 遗传规划的参数 7.3 最短时间控制的遗传规划7.4 遗传规划的膨胀7.5 演化实体而非计算机程序7.6 遗传规划的数学分析 遗传…

使用Selenium Grid远程执行测试

我们将在同一台工作电脑上&#xff0c;分别启动主控&#xff08;Hub&#xff09;和节点&#xff08;Node&#xff09;2个Selenium Grid服务&#xff0c;IP地址均使用环回地址127.0.0.1&#xff0c;端口分别为4444和5555。开始以下操作前&#xff0c;请确认你的机器上已经安装、…