android 股票数据通过日K获取周K的数据 算法 源码

目前的数据是从新浪接口获取的, http://biz.finance.sina.com.cn/stock/flash_hq/kline_data.php?symbol=sh600000&end_date=20141120&begin_date=20120101

返回数据为XML格式:

1 <?xml version="1.0" encoding="UTF-8"?>
2 <control>
3     <content d="2012-01-04" o="8.540" h="8.560" c="8.410" l="8.390" v="342014" bl="" />
4     <content d="2012-01-05" o="8.470" h="8.820" c="8.650" l="8.470" v="1321162" bl="" />
5     <content d="2012-01-06" o="8.630" h="8.780" c="8.710" l="8.620" v="617787" bl="" />
6     <content d="2012-01-09" o="8.720" h="8.990" c="8.950" l="8.680" v="801362" bl="" />
7
8 </control>

通过以上接口可以获取到日K的数据并封装到一个List集合中保存.

如下的代码是通过日K的数据集合来换算出周K的数据集合.

 1
 2     /**
 3      * 通过日K算出周K的数据
 4      * @param listDay
 5      * @return
 6      */
 7     public static List<LxKlineEntity> getWeekLineData1(List<LxKlineEntity> listDay) {
 8         List<LxKlineEntity> weekList = new ArrayList<LxKlineEntity>();
 9         try {
10             if (listDay != null && listDay.size() > 0) {//先确认有数据
11                 int size = listDay.size();
12
13                 String beginDate = listDay.get(0).getDate();
14                 String endDate = listDay.get(size-1).getDate();
15
16                 int weeks = getStockWeeks(beginDate, endDate);// 周数
17
18
19                 for (int i = 0; i < weeks; i++) {
20
21
22                     LxKlineEntity vo = null;
23                     // 获取最高价 最低价 收盘价和开盘价格
24                     // 需要考虑的情况是如果这周都是休息,那么就没数据可以增加的. 比如春节和国庆节
25                     List<String> liststr = new ArrayList<String>();
26                     String[] day = getWeeksByDay(beginDate);//根据给定的时间获得这一股票交易周的天数名称 类型为2014-11-29
27
28
29                     List<LxKlineEntity> weekOneList =weekOneList = new ArrayList<LxKlineEntity>();
30
31                     for (int j = 0; j < day.length; j++) {// 循环遍历该周的数据
32
33
34                         String day1 = day[j];
35
36                         for (int k = 0; k < size; k++) {
37                             String date = listDay.get(k).getDate();
38                             if (date.equals(day1)) {
39                                 // 如果日K的数据中有那天的数据 那么就将那个K线数据给加进来
40                                 weekOneList.add(listDay.get(k));
41                             }
42                         }
43                         // 计算最高价和最低价 收盘 开盘
44                         if (weekOneList != null && weekOneList.size() > 0) {// 如果这周有数据
45                             vo = new LxKlineEntity();
46                             int len = weekOneList.size();
47                             vo.setOpen(weekOneList.get(0).getOpen());// 该股周的第一天的开盘价格
48                             vo.setClose(weekOneList.get(len-1).getClose());// 该股周的最后一天的收盘价格
49                             double hi = 0;// 最高价
50                             double lo = 0;// 最低价
51                             double va = 0;// 成交量
52                             for (int m = 0; m < weekOneList.size(); m++) {
53                                 double high = weekOneList.get(m).getHigh();
54                                 double low = weekOneList.get(m).getLow();
55                                 double val = weekOneList.get(m).getVolume();
56                                 if (high > hi)
57                                     hi = high;
58                                 if (low < lo)
59                                     lo = low;
60                                 va += val;
61                             }
62                             vo.setLow(lo);
63                             vo.setHigh(hi);
64                             vo.setVolume(va);
65                         }
66                     }
67                     beginDate = getDay(day[6], 1);
68                     if (vo != null)
69                         weekList.add(vo);
70                 }
71             }
72         } catch (Exception e) {
73             e.printStackTrace();
74         }
75         return weekList;
76     }

以上代码的运行效率可以再优化.

欢迎大家提议修改.

联系QQ:30338970

EMAIL:[email protected]

时间: 2024-10-11 04:12:19

android 股票数据通过日K获取周K的数据 算法 源码的相关文章

Android应用经典主界面框架之一:仿QQ (使用Fragment, 附源码)

最近反复研究日常经典必用的几个android app,从主界面带来的交互方式入手进行分析,我将其大致分为三类.今天记录第一种方式,即主界面下面有几个tab页,最上端是标题栏,tab页和tab页之间不是通过滑动切换的,而是通过点击切换tab页.早期这种架构一直是使用tabhost+activitygroup来使用,随着fragment的出现及google官方也大力推荐使用fragment,后者大有代替前者之势.本文也使用fragment进行搭建,标题中的"经典"指这种交互经典,非本文的代

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

原文:极限挑战-C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码) 实际工作中有时候需要把大量数据导入数据库,然后用于各种程序计算,本实验将使用5中方法完成这个过程,并详细记录各种方法所耗费的时间. 本实验中所用到工具为VS2008和SQL SERVER 2000.SQL SERVER 2008,分别使用5中方法将100万条数据导入SQL 2000与SQL 2008中,实验环境是DELL 2850双2.0GCPU,2G内存的服务器.感兴趣的朋友可以下载源代码自己验证一下所用时间

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

Python3.x:获取iframe内嵌页面的源码 前言 在一些网页中经常会看到ifrmae/frame标签,iframe是嵌入式框架一般用来在已有的页面中嵌入另一个页面,当一个元素在iframe里时我们应该先切换到iframe里面. 语法 1.进入iframe iframe = self.driver.find_element_by_xpath("//iframe[contains(@src,'https://************/auth?e_p=1&response_type=

Spark2.0从入门到精通:Scala编程、大数据开发、上百个实战案例、内核源码深度剖析视频教程

38套大数据,云计算,架构,数据分析师,Hadoop,Spark,Storm,Kafka,人工智能,机器学习,深度学习,项目实战视频教程 视频课程包含: 38套大数据和人工智能精品高级课包含:大数据,云计算,架构,数据挖掘实战,实时推荐系统实战,电视收视率项目实战,实时流统计项目实战,离线电商分析项目实战,Spark大型项目实战用户分析,智能客户系统项目实战,Linux基础,Hadoop,Spark,Storm,Docker,Mapreduce,Kafka,Flume,OpenStack,Hiv

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

前言 我们都知道ImageView是不能完美加载Gif格式的图片,如果我们在ImageView中src指定的资源是gif格式的话,我们将会惊喜的发觉画面永远停留在第一帧,也就是不会有动画效果.当然,经过略加改造,我们是可以让gif在ImageView上完美加载的. 正文 Android给我们提供了一个Movie类,可以让我们实现加载gif格式资源的目标.我们需要导入android.graphics.Movie这个包,当然这个也是Android自带的.所以我们的主要方法是继承一个ImageView

Android系统篇之----编写系统服务并且将其编译到系统源码中

在之前已经介绍了一篇关于如何编写简单的驱动以及访问该驱动的小程序,最后将程序编译到Android内核源码中通过程序访问驱动验证是可以通过的,那么本文就继续这个知识点,把这个驱动程序通过JNI连接创建一个系统服务,提供给上层应用访问改服务功能,可以看到前一篇介绍驱动程序的功能是属于内核层的,而本文介绍的内容是Framework层的知识. 声明:本文内容参考罗升阳的书籍:<Android系统源代码情景分析> 如果想了解更详细的内容非常建议购买此书 非常感谢罗神的这本书,给我带来很多未知的知识,大神

Android系统篇之—-编写系统服务并且将其编译到系统源码中【转】

本文转载自:http://www.wjdiankong.cn/android%E7%B3%BB%E7%BB%9F%E7%AF%87%E4%B9%8B-%E7%BC%96%E5%86%99%E7%B3%BB%E7%BB%9F%E6%9C%8D%E5%8A%A1%E5%B9%B6%E4%B8%94%E5%B0%86%E5%85%B6%E7%BC%96%E8%AF%91%E5%88%B0%E7%B3%BB%E7%BB%9F%E6%BA%90%E7%A0%81/ 在之前已经介绍了一篇关于 如何编写简单的

【干货】再上数据分页控件 ━ 更加灵活,更加实用-提供源码

再上数据分页控件-更加灵活,更加实用 关于数据分页的文章太多了,各有各的一套方案,但大多都很类似,要么使用存储过程,要么直接使用代码进行分页.各种方案分页的效率也不尽相同,我们不一定要找一个最高效的(根据实际的项目情况),找一个最合适的就OK了.下面我要谈的分页控件非常灵活,可以支持任意类型的数据库,同时可以支持存储过程或代码分页(会自动判断),也支持多表的分页,非常的方便.对于数据分页的相关文章,在我的博客中可以找到很多,下面我做一个简单的汇总,方便大家查阅. 1. 原创企业级控件库之大数据量

Android通过微信实现第三方登录并使用OKHttp获得Token及源码下载

这里对于App在微信开放平台上申请AppID和secret在这里就略过了,我们微信的授权登录流程,腾讯官网给的流程如下: 1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数: 2. 通过code参数加上AppID和AppSecret等,通过API换取access_token: 3. 通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作. 下边我们看看代码是怎么实现的.源码地址 一.加