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格式的话,我们将会惊喜的发觉画面永远停留在第一帧,也就是不会有动画效果.当然,经 ...
随机推荐
- 【ImageView】ImageView点击事件报错空指针
今天在使用自定义圆形imageview的时候,想利用其点击事件来实现查看个人资料功能,但是该空间在Activity中的onCreate方法中调用点击事件总是出现空指针异常,每次程序都进不去主页面,到处 ...
- Django学习中的问题总结
1. 在windows环境下,用pip安装Django后通过在python/Script目录下会生成django-admin.py文件,此时由于pip环境变量已经添加,diango-admin.py与 ...
- Log4j的ConversionPattern无缝适配到Logback
为了能将log4j的ConversionPattern无缝应用到logback上来,需要对两个Conversion做适配,具体可以参考:Log4j 与 Logback的ConversionPatter ...
- 黑马程序员-c语言-类型强制转换
强制转换的条件: 1.当所声明的类型不能满足所符值的变量时,需要转换声明的类型,以便能够存储变量. 例如:short存储的最大值为32767,但是所要符值大于32767时,short类型不符合,需要转 ...
- 编译器错误信息: CS0433: 类型“ASP.usercontrols_total_ascx”同时存在
“/”应用程序中的服务器错误. 编译错误 说明: 在编译向该请求提供服务所需资源的过程中出现错误.请检查下列特定错误详细信息并适当地修改源代码. 编译器错误信息: CS0433: 类型“ASP.use ...
- 8.1 消息通信 EventBus
EventBus是一个事件发布和订阅的框架.EventBus是一款针对Android优化的发布/订阅事件总线.主要功能是替代Intent,Handler,BroadCast 在Fragment,Act ...
- Software Testing hw2
Fault的定义:可能导致系统或功能失效的异常条件(Abnormal condition that can cause an element or an item tofail.),可译为“故障”. ...
- [java基础]文档注释
转载自:http://blog.163.com/hui_san/blog/static/5710286720104191100389/ 前言 Java 的语法与 C++ 及为相似,那么,你知道 Jav ...
- LintCode 366 Fibonacci
/* 1st method will lead to time limit *//* the time complexity is exponential sicne T(n) = T(n-1) + ...
- 用StackExchange.Redis客户端连接阿里云Redis服务遇到的问题
阿里云推荐的Redis服务.NET客户端是ServiceStack.Redis,但ServiceStack.Redis不支持异步,不支持.NET Core,于是尝试使用StackExchange.Re ...