今日指数项目实现个股日K线详情功能

个股日K线详情功能

一. 什么是个股日K线

1.日K线就是将股票交易流水按天分组,然后统计出每天的交易数据,内容包含:日期、股票编码、名称、最高价、最低价、开盘价、收盘价、前收盘价、交易量;

2.需要注意的是这里的收盘价就是指每天最大交易时间点下对应的价格;
在这里插入图片描述

二. 接口说明

功能描述:查询指定股票每天产生的数据,组装成日K线数据;

​ 如果当大盘尚未收盘,则以最新的交易价格作为当天的收盘价格;

服务路径:/api/quot/stock/screen/dkline
服务方法:GET
前端请求频率:每分钟

请求参数:code

参数说明参数名称是否必须数据类型备注
股票编码codetruestring股票编码

响应数据结构:

{"code": 1,"data": [{"date": "2021-12-20 10:20",//日期"tradeAmt": 28284252,//交易量(指收盘时的交易量,如果当天未收盘,则显示最新数据)"code": "000021",//股票编码"lowPrice": 16,//最低价格(指收盘时记录的最低价,如果当天未收盘,则显示最新数据)"name": "深科技",//名称"highPrice": 16.83,//最高价(指收盘时记录的最高价,如果当天未收盘,则显示最新数据)"openPrice": 16.8,//开盘价"tradeVol": 459088567.58,//交易金额(指收盘时记录交易量,如果当天未收盘,则显示最新数据)"closePrice": 16.81//当前收盘价(指收盘时的价格,如果当天未收盘,则显示最新cur_price)"preClosePrice": 16.81//前收盘价},//......]
}

三. SQL分析

SQL查询要划定一个默认的日期范围,这样可避免大数据量下全表查询而导致慢查询的问题;

在指定的日期范围内以天分组统计出每天日期的最大值(收盘时间);

根据获取的最大日期组,使用in进行条件查询,进而获取日K线相关的数据;

1. 查询每天对应的收盘时间

select max(cur_time)
from stock_rt_info
where stock_code = '600021'and cur_time between '2022-01-01 09:30:00' and '2022-06-06 14:25:00'
group by date_format(cur_time, '%Y%m%d');

2. 获取在该时间段内所需要的数据

select sri.cur_time        as date,sri.trade_amount    as tradeAmt,sri.stock_code      as code,sri.min_price       as lowPrice,sri.stock_name      as name,sri.max_price       as highPrice,sri.open_price      as openPrice,sri.trade_volume    as tradeVol,sri.cur_price       as closePrice,sri.pre_close_price as preClosePrice
from stock_rt_info as sri
where cur_time in (select max(cur_time)from stock_rt_infowhere stock_code = '600021'and cur_time between '2022-01-01 09:30:00' and '2022-06-06 14:25:00'group by date_format(cur_time, '%Y%m%d'))

这里同样也可以将查询时间与获取数据分开为两个Mapper接口, 这样更加方便查询

四. 代码实现

1. 表现层
	/*** 个股日K图*/@ApiOperation(value = "个股日K图", notes = "个股日K图", httpMethod = "GET")@GetMapping("/stock/screen/dkline")public R<List<Stock4EvrDayDomain>> getStockScreenDkline(@RequestParam(value = "code" , required = true) String code){return service.getStockScreenDkline(code);}
2. 服务层

接口

R<List<Stock4EvrDayDomain>> getStockScreenDkline(String code);

实现类

	/*** 个股日K图*/@Overridepublic R<List<Stock4EvrDayDomain>> getStockScreenDkline(String code) {// 获取截止时间DateTime curTime = DateTimeUtil.getLastDate4Stock(DateTime.now());curTime = DateTime.parse("2022-06-07 15:00:00", DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"));Date nowDate = curTime.toDate();// 获取起始时间Date startDate = curTime.minusMonths(3).toDate();startDate = DateTime.parse("2022-01-01 09:30:00", DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss")).toDate();// 获取最新数据列表List<String> latestChangeTime = stockRtInfoMapper.getLatestChangeTime(startDate, nowDate, code);// 查询数据List<Stock4EvrDayDomain> data = stockRtInfoMapper.getStockScreenDkline(startDate,nowDate,code,latestChangeTime);return R.ok(data);}
3.Dao层

mapper接口

// 实现数据查询
List<Stock4EvrDayDomain> getStockScreenDkline(@Param("startDate") Date startDate, @Param("nowDate") Date nowDate, @Param("code") String code , @Param("latestChangeTime") List<String> latestChangeTime);// 实现查询每天对应的收盘时间
List<String> getLatestChangeTime(@Param("startDay") Date startDay , @Param("latestTime") Date latestTime , @Param("code") String code);

xml代码实现

<select id="getStockScreenDkline" resultType="com.jixu.stock.pojo.domain.Stock4EvrDayDomain">selectdate_format(sri2.cur_time,'%Y%m%d') as date,sri2.trade_amount as tradeAmt,sri2.stock_code as code,sri2.min_price as lowPrice,sri2.stock_name as name,sri2.max_price as highPrice,sri2.open_price as openPrice,sri2.trade_volume as tradeVol,sri2.cur_price as closePrice,sri2.pre_close_price as preClosePricefrom stock_rt_info as sri2where sri2.cur_time in<foreach collection="latestChangeTime" item="time" open="(" separator="," close=")">#{time}</foreach>and sri2.stock_code=#{code}order by sri2.cur_time</select><select id="getLatestChangeTime" resultType="java.lang.String">select max(cur_time) as max_timefrom stock_rt_infowhere stock_code = #{code}and cur_time between #{startDay} and #{latestTime}group by date_format(cur_time, '%Y%m%d')</select>

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

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

相关文章

MySQL:进阶巩固-存储过程

目录 一、存储过程的概述二、存储过程的基本使用2.1 创建存储过程2.2 使用存储过程2.3 查询指定数据库的存储过程以及状态信息2.4 查看某个存储过程的定义2.5 删除存储过程2.6 案例 三、存储过程的变量设置3.1 系统变量3.2 用户自定义变量3.3 局部变量 四、IF判断五、参数六、C…

spring boot项目对接人大金仓

先确认一下依赖 第一 是否引入了mybatis-plus多数据源&#xff0c;如果引入了请将版本保持在3.5.0以上 <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>${dynam…

LeetCode 热题 100 回顾18

干货分享&#xff0c;感谢您的阅读&#xff01;原文见&#xff1a;LeetCode 热题 100 回顾_力code热题100-CSDN博客 一、哈希部分 1.两数之和 &#xff08;简单&#xff09; 题目描述 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标…

Python库matplotlib之五

Python库matplotlib之五 小部件(widget)RangeSlider构造器APIs应用实列 TextBox构造器APIs应用实列 小部件(widget) 小部件(widget)可与任何GUI后端一起工作。所有这些小部件都要求预定义一个Axes实例&#xff0c;并将其作为第一个参数传递。 Matplotlib不会试图布局这些小部件…

探索高效免费的PDF转Word工具,开启便捷办公之旅

无论是为了方便对文档内容进行编辑、修改&#xff0c;还是为了更好地适应不同的工作和学习场景&#xff0c;将 PDF 文档转换为可编辑的 Word 格式都具有重要意义。今天我就分享几款pdf转换成word免费版工具来解决大家的困扰。 1.Foxit PDF转换大师 链接一下>>https://w…

[ RK3566-Android11 ] 关于移植 RK628F 驱动以及后HDMI-IN图像延迟/无声等问题

问题描述 由前一篇文章https://blog.csdn.net/jay547063443/article/details/142059700?fromshareblogdetail&sharetypeblogdetail&sharerId142059700&sharereferPC&sharesourcejay547063443&sharefromfrom_link&#xff0c;移植HDMI-IN部分驱动后出现&a…

taobao.item_get_appAPI接口原app数据测试指南

在电商竞争日益激烈的当下&#xff0c;数据成为了商家们争夺市场的重要武器。淘宝&#xff0c;作为中国最大的在线零售平台&#xff0c;其庞大的商品库和用户群体为商家提供了巨大的商机。为了帮助商家更好地了解市场动态&#xff0c;优化库存和营销策略&#xff0c;淘宝推出了…

使用WebClient 快速发起请求(不使用WebClientUtils工具类)

使用WebClient发起网络请求_webclient工具类-CSDN博客文章浏览阅读717次&#xff0c;点赞9次&#xff0c;收藏8次。使用WebClient发起网络请求_webclient工具类https://blog.csdn.net/qq_43544074/article/details/137044825这个是使用工具类发起的&#xff0c;下面就不使用工具…

java基础(4)类和对象

目录 1.前言 2.正文 2.1类的定义与使用 2.1.1类的定义 2.1.2类的实例化 2.1.3this引用 2.1.3.1 访问当前对象的成员变量 2.1.3.2调用当前对象的成员方法 2.1.3.3构造函数中的 this 2.1.3.4归纳this 2.2封装 2.2.1封装的定义 2.2.2访问修饰符 2.3static 2.3.1sta…

“卷”智能, 从高质量算力开始

算力即国力&#xff0c;这已是产业共识。 当人工智能浪潮席卷全球之际&#xff0c;大家深刻感受到发展算力产业的重要性和紧迫性&#xff0c;高质量的人工智能算力已经与国家竞争、产业升级和企业转型息息相关。 去年&#xff0c;《算力基础设施高质量发展行动计划》的颁布&a…

网络安全中的 EDR 是什么:概述和功能

专业知识&#xff1a;EDR、XDR、NDR 和 MDR_xdr edr ndr-CSDN博客 端点检测和响应 (EDR) 是一种先进的安全系统&#xff0c;用于检测、调查和解决端点上的网络攻击。它可以检查事件、检查行为并将系统恢复到攻击前的状态。EDR 使用人工智能、机器学习和威胁情报来避免再次发生攻…

CentOS7 离线部署docker和docker-compose环境

一、Docker 离线安装 1. 下载docker tar.gz包 下载地址&#xff1a; Index of linux/static/stable/x86_64/ 本文选择版本&#xff1a;23.0.6 2.创建docker.service文件 vi docker.service文件内容如下&#xff1a; [Unit] DescriptionDocker Application Container Engi…

【MySQL】数据库的介绍以及数据库基础

目录 &#x1f333;介绍 &#x1f384;数据库操作 &#x1f6a9;显示当前数据库 &#x1f6a9;创建数据库 ​编辑&#x1f6a9;使用/选中 数据库 &#x1f6a9;删除数据库 &#x1f334;常用的数据类型 &#x1f6a9;数值类型 &#x1f6a9;字符串类型 &#x1f6a9…

【自用软件】IDM下载器 Internet Download Manager v6.42 Build 10

下载IDM&pj安装教程 Internet Download Manager&#xff0c;简称 IDM&#xff0c;是国外的一款优秀下载工具。目前凭借着下载计算的速度优势在外媒网站中均受好评&#xff0c;现在已被多数国人熟知。Internet Download Manager 提升你的下载速度最多达5倍&#xff0c;安排下…

【HarmonyOS】深入理解LocalStorage之逻辑处理存取

【HarmonyOS】深入理解LocalStorage 一、前言 鸿蒙应用中关于状态管理的处理机制有很多。从状态装饰器State prop等&#xff0c;LocalStrong&#xff0c;AppStrong到首选项&#xff0c;再到数据库。内存到持久化。轻量级到重量级。全方位覆盖。 学习和记忆技术点&#xff0c…

Java-数据结构-Map和Set-(二)-哈希表 |ू・ω・` )

文本目录&#xff1a; ❄️一、哈希表&#xff1a; ☑ 1、概念&#xff1a; ☑ 2、冲突-概念&#xff1a; ☑ 3、冲突-避免&#xff1a; ☞ 1&#xff09;、避免冲突-哈希函数的设计&#xff1a; ☞ 2&#xff09;、避免冲突-负载因子调节(重点)&#xff1a; ☑ 4、冲突-解决&…

那年我双手插兜,使用IPv6+DDNS动态域名解析访问NAS

估计有很多科技宅和我一样&#xff0c;会买一个NAS存储或者自己折腾刷一下黑群晖玩玩&#xff0c;由于运营商不给分配固定的公网IP&#xff0c;就导致我在外出的时候无法访问家里的NAS&#xff0c;于是远程访问常常受到IP地址频繁变动的困扰。为了解决这一问题&#xff0c;结合…

element 输入框文字+对应签进行长度 和 的判断

输入文字长度 指定标签的长度 &#xff08;判断长度并提示&#xff09; <div style"position: relative;" classchangyongyu><el-input type"textarea" :autosize"{ minRows: 8, maxRows: 8 }" style"margin-bottom:10px;"…

【React】useEffect

1. 基本介绍 概念 语法 副作用函数依赖项数组&#xff08;空数组时&#xff0c;只会在组件渲染完毕后执行一次副作用函数&#xff09; 2. 使用 import { useEffect, useState } from reactfunction App() {const [value, setValue] useState(0)useEffect(() > {console…

如何使用ssm实现小区物业管理系统

TOC ssm733小区物业管理系统jsp 第一章 绪论 1.1 研究背景 在现在社会&#xff0c;对于信息处理方面&#xff0c;是有很高的要求的&#xff0c;因为信息的产生是无时无刻的&#xff0c;并且信息产生的数量是呈几何形式的增加&#xff0c;而增加的信息如何存储以及短时间分析…