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格式的话,我们将会惊喜的发觉画面永远停留在第一帧,也就是不会有动画效果.当然,经 ...
随机推荐
- 使用Statement操作数据库
i import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql ...
- c#编程指南(十) 平台调用P-INVOKE完全掌握, 字符串和指针
可以说新手使用P-INVOKE最开始的头疼就是C#和C++的字符串传递,因为这里涉及到两个问题. 第一:C#的string和C++的字符串首指针如何对应. 第二:字符串还有ANSI和UNICODE(宽 ...
- Webdriver实现原理
通过研究selenium-webdriver的源码,笔者发现其实webdriver的实现原理并不高深莫测无法揣度.在这里以webdriver ruby binding的firefox-webdrive ...
- 利用html5 canvas实现纯前端上传图片的裁剪
今天跟大家分享一个前端裁剪图片的方法.许多网站都有设置用户头像的功能,用户可以选择一张本地的图片,然后用网站的裁剪工具进行裁剪,然后设置大小,位置合适的头像.当然,网上也有一些用js写的诸如此类裁剪的 ...
- Logger的等级输出
转自:http://zhidao.baidu.com/link?url=7HnNxxUei6m3X3JOLfK4yShElbu5xwvU9Z7ipBAaIvQOi3Bc30N-7o7JgfnZDEg3 ...
- iPhone的Push(推送通知)功能原理浅析
第一部分:Push原理(以下绝大多数内容参考自.图片来自iPhone OS Reference Library)机制简介Push 的工作机制可以简单的概括为下图图中,Provider是指某个iPhon ...
- FileInputStream和BufferedInputStream的区别
FileInputStream 属于数据源 BufferedInputStream 属于FileInputStream的一个装饰 BufferedInputStream 有个内部缓冲区当read时会先 ...
- 通过cookie实现搜索框内容保存关闭浏览器之前的操作、jq js实现方法
jq实现的方法: jq需要在页面中引入JQ.cookie插件 这是一个超轻量级插件 要实现的效果: 下面是jq代码: $(function(){ var til=$("#orderInfoC ...
- 使用开源库MAGICODES.WECHAT.SDK进行微信公众号支付开发
概要 博客使用Word发博,发布后,排版会出现很多问题,敬请谅解.可加群获取原始文档. 本篇主要讲解微信支付的开发流程,相关业务基于MAGICODES.WECHAT.SDK实现.通过本篇教程,您可以很 ...
- 深入理解openstack网络架构(1)
原文地址: https://blogs.oracle.com/ronen/entry/diving_into_openstack_network_architecture 译文转载自:http://b ...