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格式的话,我们将会惊喜的发觉画面永远停留在第一帧,也就是不会有动画效果.当然,经 ...
随机推荐
- CAD2012安装错误
安装CAD2012总是会出现各种错误,不能安装,特别是.NET Framework Runtime 4.0安装错误. 单独安装dotNetFx40_Full_x86_x64.exe会提示更高级的版本已 ...
- Win7 关闭Window update
1.设置注册表关闭自动更新 按组合键“windows+r”,打开“运行”栏,输入“regedit”,打开注册表找到下面的路径HKEY_CURRENT_USER\Software\Microsoft\W ...
- PROC SORT
PROC SORT DATA=输入数据集 <OUT=输出数据集><选项>; BY 关键变量; RUN; PROC SORT 语法如上,其中在尖括号中的可以不出现,也不会报错. ...
- Ubuntu12.04下编译OpenCv2.4.9程序
引用地址http://blog.163.com/huai_jing@126/blog/static/171861983201311103411229/ 方法1:直接命令编译: g++ main.cpp ...
- C语言-数据类型
数据类型 -基本数据类型 --char 字符型 --int 整型 --浮点型 ---float ---double -指针类型 --void* -空类型 -构架类型 --数组[] --结构体 str ...
- dojo分析之declare接口
欢迎转载opendevkit文章, 文章原始地址: http://www.opendevkit.com/?e=57 declare接口是dojo定义类系统的关键函数, 类系统就是抽象,封装,继承.do ...
- XCAT在虚拟机上部署系统
xcat更新到2.13了,老的manual很多都没用了.前一整子居然没搞成功,只好再来试一次. 官网也搬到了xcat.org.首先就是下core和dep包 分别是 xCAT Core Packages ...
- Groonga 3.0.8 发布,全文搜索引擎
Groonga 3.0.8 改进了管理界面的可用性,支持 groonga_query_log_path 指令(groonga-httpd) 提供基于 nginx 的 HTTP 服务功能,改进了 del ...
- SQL入门经典(三) 之连接查询
上一篇介绍到查询.这一篇主要讲连接查询,将介绍INNER JOIN,OUTER JOIN(LEFT和RIGHT),FULL JOIN,CROSS JOIN. 连接顾名斯义就是把多个数据表数据合并到一个 ...
- 可在广域网部署运行的QQ高仿版 -- GG叽叽V3.6,增加语音消息、语音留言等功能
自从微信出来后,语音消息和语音留言变得非常流行,按下一个键说话,比打字要方便多了.GG在V3.6版本增加了对语音消息和语音留言(或称为离线语音消息)的支持.这两个功能的实现已经很完整,只是比较遗憾的一 ...