一步一步教你写股票走势图——K线图三(添加均线)
来源:互联网 发布:粉猪家jk淘宝名 编辑:程序博客网 时间:2024/04/30 09:52
目录
一步一步教你写股票走势图——分时图一(概述)
一步一步教你写股票走势图——分时图二(自定义xy轴)
一步一步教你写股票走势图——分时图三(对齐图表、自定义柱状图高亮)
一步一步教你写股票走势图——分时图四(高亮联动)
一步一步教你写股票走势图——分时图五(自定义标记)
一步一步教你写股票走势图——K线图一(概述)
一步一步教你写股票走势图——K线图二(图表联动)
一步一步教你写股票走势图——K线图三(添加均线)
一步一步教你写股票走势图——K线图四(高亮联动一)
一步一步教你写股票走势图——K线图五(高亮联动二)
demo更新地址https://github.com/AndroidJiang/StockChart
在开篇之前,给大家出个小算法题,一定要做哦,因为既然你打算看本章节内容了,那么这个小算法必须得会的哟!
有一组数,1、2、3……99、100,一共一百个数,假设是ListA,现在将
ListA索引为0、1、2、3、4的数相加之和赋给ListB索引为4的数
ListA索引为1、2、3、4、5的数相加之和赋给ListB索引为5的数 ……(以此类推)
ListA索引为95、96、97、98、99的数相加之和赋给ListB索引为99的数
让你打印出ListB里面所有的数据,ListB中前4位的值可以用0代替
赶紧动手试一试吧,小算法一个哦,不难的!最好5分钟之内出答案哦!
(片刻之后)。。。
想必大家都动手试过了吧,有人已经做好了,有人还在琢磨呢,那得反思一下啦,算法题很多大公司面试都会出,考验你逻辑能力,不足的人空闲得恶补一下啊,博主表示自己算法也不咋样,简单点的还能应付,稍微复杂点就歇菜咯!
我们简单贴下代码吧
listA = new ArrayList<>(); listB = new ArrayList<>(); for (int i = 0; i < 100; i++) { listA.add(i, i); } for (int i = 0; i < 100; i++) { if (i >= 4) { sum = 0; listB.add(i, fund(i - 4, i)); } else { listB.add(i, 0); } } for (int i = 0; i < 100; i++) { Log.e("OUT", listB.get(i) + ""); }private Integer fund(Integer a, Integer b) { for (int i = a; i <= b; i++) { sum += listA.get(i); } return sum; }
So Easy?是不是!恍然大悟,似不似。那么这个小算法跟今天的内容有什么关系呢,我们今天研究的是k线图添加均线图,均线图的计算就是上面的算法,我们看下图先。
我们看MA5的那根线,一根理解了,其他也就懂了。MA5是5日均线,从当前天往前推5天(包含当天),每天的收盘价之和除以5,得到当天的MA5值,所以相当于
ma5(5)=(1收+2收+3收+4收+5收)/5
ma5(6)=(2收+3收+4收+5收+6收)/5
……
一直到最后,是不是跟上面的算法一模一样。
既然知道均线值怎么算了,那么久简单了,下面就直接把算好的数据,放入到折线图中即可啦!
for (int i = 0, j = 0; i < mData.getKLineDatas().size(); i++, j++) { xVals.add(mData.getKLineDatas().get(i).date + ""); barEntries.add(new BarEntry(mData.getKLineDatas().get(i).vol, i)); candleEntries.add(new CandleEntry(i, mData.getKLineDatas().get(i).high, mData.getKLineDatas().get(i).low, mData.getKLineDatas().get(i).open, mData.getKLineDatas().get(i).close)); if(i>=4){ sum=0; line5Entries.add(new Entry(getSum(i - 4, i)/5,i)); } if(i>=9){ sum=0; line10Entries.add(new Entry(getSum(i - 9, i)/10,i)); } if(i>=29){ sum=0; line30Entries.add(new Entry(getSum(i - 29, i)/30,i)); } } ArrayList<ILineDataSet> sets = new ArrayList<ILineDataSet>(); sets.add(setMaLine(5,xVals, line5Entries)); sets.add(setMaLine(10,xVals, line10Entries)); sets.add(setMaLine(30, xVals, line30Entries)); CombinedData combinedData=new CombinedData(xVals); LineData lineData=new LineData(xVals,sets); combinedData.setData(candleData); combinedData.setData(lineData); combinedchart.setData(combinedData);
setMaLine方法
@NonNull private LineDataSet setMaLine(int ma,ArrayList<String> xVals, ArrayList<Entry> lineEntries) { LineDataSet lineDataSetMa = new LineDataSet(lineEntries, "ma"+ma); lineDataSetMa.setDrawValues(false); if(ma==5) { lineDataSetMa.setColor(Color.GREEN); }else if(ma==10){ lineDataSetMa.setColor(Color.GRAY); }else{ lineDataSetMa.setColor(Color.YELLOW); } lineDataSetMa.setLineWidth(1f); lineDataSetMa.setDrawCircles(false); lineDataSetMa.setAxisDependency(YAxis.AxisDependency.LEFT); lineDataSetMa.setHighlightEnabled(false); return lineDataSetMa; }
如果看代码比较乱的,直接看demo即可,均线图部分相对来说比较简单,不需要自定义功能模块,只是单纯的使用了MP库的东西,有的公司甚至不需要客户端进行计算均值,服务端直接算好返回了,那就更简单了,省去计算的模块。我们来试试看效果吧!
完美!如有问题,欢迎留言!均线添加告一段落,下面难点在于高亮和加载更多两个模块,这两个模块都还在研究中,说实话,感觉还是有点难度的,只要大家给力的star了,那么楼主也会给力的研究并且开源的!
目录
一步一步教你写股票走势图——分时图一(概述)
一步一步教你写股票走势图——分时图二(自定义xy轴)
一步一步教你写股票走势图——分时图三(对齐图表、自定义柱状图高亮)
一步一步教你写股票走势图——分时图四(高亮联动)
一步一步教你写股票走势图——分时图五(自定义标记)
一步一步教你写股票走势图——K线图一(概述)
一步一步教你写股票走势图——K线图二(图表联动)
一步一步教你写股票走势图——K线图三(添加均线)
一步一步教你写股票走势图——K线图四(高亮联动一)
一步一步教你写股票走势图——K线图五(高亮联动二)
demo更新地址https://github.com/AndroidJiang/StockChart
- 一步一步教你写股票走势图——K线图三(添加均线)
- 一步一步教你写股票走势图——K线图一(概述)
- 一步一步教你写股票走势图——K线图二(图表联动)
- 一步一步教你写股票走势图——K线图四(高亮联动一)
- 一步一步教你写股票走势图——K线图五(高亮联动二)
- 一步一步教你写股票走势图——分时图三(对齐图表、自定义高亮)
- 一步一步教你写股票走势图——分时图一(概述)
- 一步一步教你写股票走势图——分时图二(自定义xy轴)
- 一步一步教你写股票走势图——分时图四(高亮联动)
- 一步一步教你写股票走势图——分时图五(自定义标记)
- 一步一步教你写股票走势图——分时图一(概述)
- 一步一步教你写股票走势图——分时图一(概述)
- 一步一步教你写股票走势图——分时图五(自定义标记)
- 基于AChartEngine绘制股票走势图----K线图一(绘制阴线阳线)
- 一步步教你画股票图,K线图,高仿雪球股票
- 从零开始实现k线图走势图绘制(iOS理论篇)
- IOS中国内股票K线图基本绘制思路(一)——数据处理
- android 股票K线图
- Android中Matrix动画
- Tortoise CVS(cvsnt)因为行结束符转换导致含中文文件编码转换的问题
- Android surfaceview详解
- 欢迎使用CSDN-markdown编辑器
- android系统服务(service)
- 一步一步教你写股票走势图——K线图三(添加均线)
- 事务
- android应用程序第10课:ImageView
- 极点五笔
- 关于烈火四轴遥控器串口上传分析
- 错误:Error:Execution failed for task ':app:packageArmDebug'. > value (75697) > 0x0000ffff;
- spring——控制反转简单例子 (Spring三种注入方式)
- 域缓存登录
- 在angular中 function中的$scope和$rootscope有什么区别