android 股票数据通过日K获取周K的数据 算法 源码
目前的数据是从新浪接口获取的, http://biz.finance.sina.com.cn/stock/flash_hq/kline_data.php?symbol=sh600000&end_date=20141120&begin_date=20120101
返回数据为XML格式:
<?xml version="1.0" encoding="UTF-8"?>
<control>
<content d="2012-01-04" o="8.540" h="8.560" c="8.410" l="8.390" v="342014" bl="" />
<content d="2012-01-05" o="8.470" h="8.820" c="8.650" l="8.470" v="1321162" bl="" />
<content d="2012-01-06" o="8.630" h="8.780" c="8.710" l="8.620" v="617787" bl="" />
<content d="2012-01-09" o="8.720" h="8.990" c="8.950" l="8.680" v="801362" bl="" /> </control>
通过以上接口可以获取到日K的数据并封装到一个List集合中保存.
如下的代码是通过日K的数据集合来换算出周K的数据集合.
/**
* 通过日K算出周K的数据
* @param listDay
* @return
*/
public static List<LxKlineEntity> getWeekLineData1(List<LxKlineEntity> listDay) {
List<LxKlineEntity> weekList = new ArrayList<LxKlineEntity>();
try {
if (listDay != null && listDay.size() > 0) {//先确认有数据
int size = listDay.size(); String beginDate = listDay.get(0).getDate();
String endDate = listDay.get(size-1).getDate(); int weeks = getStockWeeks(beginDate, endDate);// 周数 for (int i = 0; i < weeks; i++) { LxKlineEntity vo = null;
// 获取最高价 最低价 收盘价和开盘价格
// 需要考虑的情况是如果这周都是休息,那么就没数据可以增加的. 比如春节和国庆节
List<String> liststr = new ArrayList<String>();
String[] day = getWeeksByDay(beginDate);//根据给定的时间获得这一股票交易周的天数名称 类型为2014-11-29 List<LxKlineEntity> weekOneList =weekOneList = new ArrayList<LxKlineEntity>(); for (int j = 0; j < day.length; j++) {// 循环遍历该周的数据 String day1 = day[j]; for (int k = 0; k < size; k++) {
String date = listDay.get(k).getDate();
if (date.equals(day1)) {
// 如果日K的数据中有那天的数据 那么就将那个K线数据给加进来
weekOneList.add(listDay.get(k));
}
}
// 计算最高价和最低价 收盘 开盘
if (weekOneList != null && weekOneList.size() > 0) {// 如果这周有数据
vo = new LxKlineEntity();
int len = weekOneList.size();
vo.setOpen(weekOneList.get(0).getOpen());// 该股周的第一天的开盘价格
vo.setClose(weekOneList.get(len-1).getClose());// 该股周的最后一天的收盘价格
double hi = 0;// 最高价
double lo = 9999;// 最低价
double va = 0;// 成交量
for (int m = 0; m < weekOneList.size(); m++) {
double high = weekOneList.get(m).getHigh();
double low = weekOneList.get(m).getLow();
double val = weekOneList.get(m).getVolume();
if (high > hi)
hi = high;
if (low < lo)
lo = low;
va += val;
}
vo.setLow(lo);
vo.setHigh(hi);
vo.setVolume(va);
}
}
beginDate = getDay(day[6], 1);
if (vo != null)
weekList.add(vo);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return weekList;
}
以上代码的运行效率可以再优化.
欢迎大家提议修改.
联系QQ:30338970
EMAIL:c9n9m@163.com
android 股票数据通过日K获取周K的数据 算法 源码的更多相关文章
- Android源码浅析(四)——我在Android开发中常用到的adb命令,Linux命令,源码编译命令
Android源码浅析(四)--我在Android开发中常用到的adb命令,Linux命令,源码编译命令 我自己平时开发的时候积累的一些命令,希望对你有所帮助 adb是什么?: adb的全称为Andr ...
- 极限挑战—C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码)
原文:极限挑战-C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码) 实际工作中有时候需要把大量数据导入数据库,然后用于各种程序计算,本实验将使用5中方法完成这个过程,并详细记录各种方 ...
- Python3.x:selenium获取iframe内嵌页面的源码
Python3.x:selenium获取iframe内嵌页面的源码 前言 在一些网页中经常会看到ifrmae/frame标签,iframe是嵌入式框架一般用来在已有的页面中嵌入另一个页面,当一个元素在 ...
- 获取并编译最新的Notepad++源码
获取并编译最新的Notepad++源码 http://blog.csdn.net/u012814856/article/details/68947310 Notepad++源码编译及其分析 http: ...
- Android 神兵利器之通过解析网页获取到的API数据合集,可拿来就用
AppApis 前段时间,写了个做app的实战系列教程,其中一篇章提到了解析网页中的数据为己所用,看到大家的响应还不错,于是把自己以前解析过的网页数据都整理了下,开放出来,给更多的人使用,希望可以帮助 ...
- Java学习-055-Jsoup爬虫通过设置获取响应数据大小的最大值,解决因默认获取 1MB 响应数据导致的无法获取全部的响应数据内容问题
在日常工作中,通常会遇到获取各种网络数据使用的情况,Java中可使用Jsoup(Python中可使用 BeatifulSoup)进行数据的获取及处理. 今天有朋友问,在使用 Jsoup 进行请求数据时 ...
- Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析
这是关于RecyclerView的第二篇,说的是如何自定义Item动画,但是请注意,本文不包含动画的具体实现方法,只是告诉大家如何去自定义动画,如何去参考源代码. 我们知道,RecyclerView默 ...
- Android 音视频深入 十五 FFmpeg 推流mp4文件(附源码下载)
源码地址https://github.com/979451341/Rtmp 1.配置RTMP服务器 这个我不多说贴两个博客分别是在mac和windows环境上的,大家跟着弄 MAC搭建RTMP服务器h ...
- Android应用系列:完美运行GIF格式的ImageView(附源码)
前言 我们都知道ImageView是不能完美加载Gif格式的图片,如果我们在ImageView中src指定的资源是gif格式的话,我们将会惊喜的发觉画面永远停留在第一帧,也就是不会有动画效果.当然,经 ...
随机推荐
- Spring 学习笔记 2. 尚硅谷_佟刚_Spring_IOC&DI概述
1,远古时代 这里讲述的IOC的演变历史,举一个例子,假如需要生成HTML和PDF格式的报表,以前的开发方式就是有个报表服务类需要使用报表生成器 它需要和其他三个都关联,它既需要知道接口类型,也需要知 ...
- 解决Ubuntu下Chrome浏览器网页中文字体混乱
在Ubuntu下使用Chrome浏览器时碰到了网页中文字体混乱的现象: 黑体和楷体混杂,看起来非常不美观. 这是由于许多网页并没有指定字体,然后浏览器将调用系统默认字体配置. 首先,安装文泉驿字体: ...
- Extjs4.2或以上 使用自定义事件时报错问题
最近使用了extjs 自定义事件模型,代码如下: function Person(name) { this.name = name; this.addEvents('walk'); } Ext.ext ...
- Android密码约束规则例子一
Android常用的一个密码规则 (一)密码必须是8至16位:(二)密码必须包含英文字母和数字:(三)密码不能包含4位连续相同的字符,如0000或AAAA:(四)密码不能包含4位连续递增或连续递减的数 ...
- windows 7下qtcreator里QWT文件的pro配置
http://blog.chinaunix.net/uid-20717410-id-272331.html 把编译好的qwt的include文件夹下面 所有的.h文件 复制到qt目录下 然后在pro里 ...
- Request三种获取数据的方式
今天在做ajax请求后台代码时,发现ajax的方法都对,但就是请求不了后台代码,后来在同事帮助下才发现前台定义了两个相同参数导致请求出错. 下面记录一下request三种获取数据的方式: 1. Req ...
- jsp页面缓存清理
jsp页面开发过程中,页面修改了,但是显示的还是以前的页面,没有显示刚修改的内容,清理缓存方法,加上头信息: <meta http-equiv="pragma" conten ...
- UIWebView和Js交互
在日常的ios项目开发中,我们经常会在原生应用中嵌入web页面,通常我们只是进行一个展示,没有其它的一些功能.但是也有一些项目中需要web页面中的html和native进行交互.但是ios sdk 并 ...
- 重绘控件中OnPaint、OnDraw、OnDrawItem和DrawItem的区别
==================================================================================================== ...
- Mybatis 后台SQL不输出
在正确设置log4j.properties之后还是无法输出想要的SQL语句 经过搜索,发现是跟slf4j-api-1.6.1.jar这个jar包冲突了. 删掉之后就正常了, 但是这个包删掉的话acti ...