目前的数据是从新浪接口获取的, 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的数据 算法 源码的更多相关文章

  1. Android源码浅析(四)——我在Android开发中常用到的adb命令,Linux命令,源码编译命令

    Android源码浅析(四)--我在Android开发中常用到的adb命令,Linux命令,源码编译命令 我自己平时开发的时候积累的一些命令,希望对你有所帮助 adb是什么?: adb的全称为Andr ...

  2. 极限挑战—C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码)

    原文:极限挑战-C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码) 实际工作中有时候需要把大量数据导入数据库,然后用于各种程序计算,本实验将使用5中方法完成这个过程,并详细记录各种方 ...

  3. Python3.x:selenium获取iframe内嵌页面的源码

    Python3.x:selenium获取iframe内嵌页面的源码 前言 在一些网页中经常会看到ifrmae/frame标签,iframe是嵌入式框架一般用来在已有的页面中嵌入另一个页面,当一个元素在 ...

  4. 获取并编译最新的Notepad++源码

    获取并编译最新的Notepad++源码 http://blog.csdn.net/u012814856/article/details/68947310 Notepad++源码编译及其分析 http: ...

  5. Android 神兵利器之通过解析网页获取到的API数据合集,可拿来就用

    AppApis 前段时间,写了个做app的实战系列教程,其中一篇章提到了解析网页中的数据为己所用,看到大家的响应还不错,于是把自己以前解析过的网页数据都整理了下,开放出来,给更多的人使用,希望可以帮助 ...

  6. Java学习-055-Jsoup爬虫通过设置获取响应数据大小的最大值,解决因默认获取 1MB 响应数据导致的无法获取全部的响应数据内容问题

    在日常工作中,通常会遇到获取各种网络数据使用的情况,Java中可使用Jsoup(Python中可使用 BeatifulSoup)进行数据的获取及处理. 今天有朋友问,在使用 Jsoup 进行请求数据时 ...

  7. Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析

    这是关于RecyclerView的第二篇,说的是如何自定义Item动画,但是请注意,本文不包含动画的具体实现方法,只是告诉大家如何去自定义动画,如何去参考源代码. 我们知道,RecyclerView默 ...

  8. Android 音视频深入 十五 FFmpeg 推流mp4文件(附源码下载)

    源码地址https://github.com/979451341/Rtmp 1.配置RTMP服务器 这个我不多说贴两个博客分别是在mac和windows环境上的,大家跟着弄 MAC搭建RTMP服务器h ...

  9. Android应用系列:完美运行GIF格式的ImageView(附源码)

    前言 我们都知道ImageView是不能完美加载Gif格式的图片,如果我们在ImageView中src指定的资源是gif格式的话,我们将会惊喜的发觉画面永远停留在第一帧,也就是不会有动画效果.当然,经 ...

随机推荐

  1. 第十二章:使用FP-growth算法进行关联分析

  2. React Native填坑之旅--class(番外篇)

    无论React还是RN都已经迈入了ES6的时代,甚至凭借Babel的支持都进入了ES7.ES6内容很多,本文主要讲解类相关的内容. 构造函数 定义侦探类作为例子. ES5的"类"是 ...

  3. 使用joi来验证数据模型

    我们用nodejs实现一些功能时,往往需要对用户输入的数据进行验证.然而,验证是一件麻烦的事情,很有可能你需要验证数据类型,长度,特定规则等等,在前端做表单验证时,我们常用的做法是使用正则,正则表达式 ...

  4. [UCSD白板题] Binary Search

    Problem Introduction In this problem, you will implemented the binary search algorithm that allows s ...

  5. iOS开发之AppIcon及LaunchScreen设置

    一.AppIcon设置 具体设置步骤如下图: 二.LaunchScreen设置与停留时间设置 具体设置步骤如下图: 通过程序可以增加背景的停留时间:

  6. oracle根据视图删除表

    delete from t_fwaqjcjl where zcbm in (select zcbm from view_fwaqjcjl where 1=1 )

  7. AIX常用命令总结

    1.查看机器硬盘信息 :lspv :lsdev -Cc disk :lsattr -EI hdisk0 :lscfg -vl hdisk0 2.查看AIX系统版本号 : oslevel -s : os ...

  8. SqlServerProxy的一些资料

    SqlServerProxy的一些资料 下载地址:http://files.cnblogs.com/files/lyhabc/SqlServerProxy.rar 1.特性及实现原理 SqlServe ...

  9. [转]单点登录SSO学习——CAS协议内容

    作者:anmaler 本文转自:http://blog.zhaojunling.me/p/24 CAS中文文档甚少,这篇文章对CAS接口参数有比较清楚的说明,排版也不错查阅舒适 在当前互联网产品中使用 ...

  10. JDBC学习2:为什么要写Class.forName("XXX")?

    Class.forName(String name) 接上一篇JDBC.本来这个内容是放在前面的一篇里面的一起的,后来发现越写越多,想想看就算了,还是单独开一篇文章好了,这样也能写得更加详细点. 上一 ...