一步一步教你写股票走势图——K线图三(添加均线)

article/2025/10/28 20:54:26

目录
一步一步教你写股票走势图——分时图一(概述)
一步一步教你写股票走势图——分时图二(自定义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方法

  @NonNullprivate 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



http://chatgpt.dhexx.cn/article/1psTHA4C.shtml

相关文章

[逐笔数据分析工具分享]如何分析股票逐笔数据

工具分享链接&#xff1a;https://pan.baidu.com/s/1fbDoPM2NzSBEn31gDBZnpQ 提取码&#xff1a;v0sm ​1. 配置stocklist.txt和datelist.txt stocklist为要分析的股票号码&#xff0c;可为任意个 datelist为要分析的日期&#xff0c;可为任意个 以上都为空时&#xff0c;则…

【K线绘图】教你用python绘制带有买卖点的股票K线图(附送鳄鱼指标、顾比均线指标、dataframe格式化输出)

提示&#xff1a;文章内买卖点不构成交易依据&#xff0c;请根据情况自行决策。 教你用python绘制带有买卖点的股票K线图&#xff08;附带鳄鱼指标、顾比均线指标、dataframe格式化输出&#xff09; 前言一、自己绘图&#xff0c;是不是疯了&#xff1f;二、分步说明1. 准备工作…

股票K线图绘制

股票K线图绘制 文章目录 股票K线图绘制前言一、股票K线图基础知识二、用Python绘制股票K线图总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;随着人工智能的不断发展&#xff0c;机器学习这门技术也越来越重要&#xff0c;很多人都…

屏幕画笔工具Pointofix,期货/股票复盘分析画线好工具

工具介绍&#xff1a; Pointofix可以将K线图表定格在屏幕某一个画面上&#xff0c;然后可以使用工具趋势线、图形&#xff0c;放大某个细节等&#xff0c;是一款很好的复盘分析画线工具。 Pointofix使用功能&#xff1a; 1.高亮屏幕&#xff1a;手绘笔&#xff1b; 2.直线&…

解决一个信号6问题(sig6,signal6,SIGABRT,double free or corruption (!prev))

我遇到的信号6 99%都是由于数据越界导致&#xff0c;在memcpy的时候没有错误&#xff0c;在free的时候系统报SIGABRT。今天也不例外。代码是我写的&#xff0c;考虑不周&#xff0c;以后拷贝更多加小心。 上图中的data大小为1024&#xff0c;如果memcpy 1025各字节&#xff0c;…

Thread 1:Program received signal:SIGABRT错误之一

引起错误Thread 1:Program received signal:"SIGABRT"的可能情况很多 本文描述的是使用Tab Bar Controller时Tab Bar Item对应的View Controller在Attributes inspector中的NIB NAME与在identity inspector中的class设置的不对应引起的。 如图&#xff08;图片可能…

Thread 1: signal SIGABRT问题解决

解决办法是记住先前的操作&#xff0c;找到相关问题原因&#xff0c;比如控件关联。 如图打开 Show the Connections inspector把相关联的Outlet叉掉&#xff1a; 猜测&#xff1a;Thread 1: signal SIGABRT类型的错误&#xff0c;是某种具体的内部关联引发的错误&#xff0c…

Android异常之SIGABRT

欢迎关注WX公众号&#xff1a; Android开发时出现这样的报错信息&#xff1a; # unknown(29937)SIGABRT #00 pc 0004a124 /system/lib/libc.so (tgkill12) [armeabi-v7a] 2 #01 pc 000478c3 /system/lib/libc.so (pthread_kill34) [armeabi-v7a] 3 #02 pc 0001d525 /system/li…

SIGABRT错误的解决办法

本人原创&#xff0c;转载请注明出处&#xff1a;http://iphone.xiaoxiaostudio.net 在iPhone开发中可能经常会遇到 SIGABRT 错误&#xff0c;我开始也不知道如何调试SIGABRT这个错误&#xff0c;每次都是不断的尝试&#xff0c;最后在stackoverflow找到了方法&#xff0c;整理…

SIGKILL和SIGTERM、SIGINT

如果不对信号处理&#xff0c;就会导致程序退出&#xff0c;但如果程序捕获信号进行处理&#xff0c;按照它的逻辑&#xff0c;它是不一定会退出的。 在这三个信号中&#xff0c;sigkill是不能被捕获的&#xff0c;程序收到这个信号后&#xff0c;一定会退出。这就是kill -9一…

C++ signal信号(SIGHUP、SIGINT、SIGQUIT、SIGILL、SIGTRAP、SIGABRT等等的说明)

转载来自&#xff1a;https://blog.csdn.net/u014470361/article/details/83591513 SIGHUP /* hangup */ ~~~~~~ SIGHUP&#xff0c;hong up &#xff0c;挂断。本信号在用户终端连接(正常或非正常)结束时发出, 通常是在终端的控制进程结束时, 通知同一session内的各…

Fatal signal 6 (SIGABRT), code 0 (SI_USER) in tid 2377 (Thread-2), pid 2335

app 运行报错 解决: 选择菜单&#xff1a;File->Settings->Build,Execution,Deployment->Instant Run&#xff0c;将右侧的顶部复选框关闭即可。

linux——signal信号(SIGHUP、SIGINT、SIGQUIT、SIGILL、SIGTR

SIGHUP /* hangup */ SIGHUP&#xff0c;hong up &#xff0c;挂断。本信号在用户终端连接(正常或非正常)结束时发出, 通常是在终端的控制进程结束时, 通知同一session内的各个作业, 这时它们与控制终端不再关联。 登录Linux时&#xff0c;系统会分配给登录…

linux——signal信号(SIGHUP、SIGINT、SIGQUIT、SIGILL、SIGTRAP、SIGABRT...........................)

SIGHUP /* hangup */ ~~~~~~ SIGHUP&#xff0c;hong up &#xff0c;挂断。本信号在用户终端连接(正常或非正常)结束时发出, 通常是在终端的控制进程结束时, 通知同一session内的各个作业, 这时它们与控制终端不再关联。 ~~~~~~ 登录Linux时&#xff0c;系统会分配给登录用户…

CANopen DS402 驱动电机运动控制与顺序功能图SFC设计方法

总线型步进电机驱动器 总线型步进电机驱动器是一个总的概括&#xff0c; 物理总线逻辑通信协议RS-485Modbus/RTUCANbusCANopenEthernetEtherNET/IPEtherneteSCL工业以太网PROFINET 其涉及基于RS-485的Modbus/RTU协议、基于CANbus 的 CANopen 协议、 基于 Ethernet 的 Ether…

CANopen dsp402 对象字典 603F 错误码

Object 603Fh: Error code The Error code captures the code of the last error that occurred in the drive. It corresponds to the value of the lower 16 bits of object 1003h pre-defined error field.

新魔百和九联UNT402A-免拆机-刷机固件及教程

新魔百和九联UNT402A-免拆机-刷机固件及教程 步骤一&#xff1a;【打开adb功能】 将机顶盒插入网线连接电视并开机--然后准备一个USB键盘插入机顶盒&#xff0c;然后机顶盒开机1分钟后&#xff0c;按USB键盘上的F7和F8按钮 两个按钮交替按&#xff0c;随后弹出一个界面&#x…

EtherCAT从站协议栈代码笔记之cia402appl.c

原文&#xff1a;https://nobuta.blog.csdn.net/article/details/82425552?utm_mediumdistribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-10.control&dist_request_id&depth_1-utm_sourcedistribute.pc_relevant.none-…

汇川AM402、H3U和上位机C#ModebusTcp通讯

目录 一、测试任务 二、测试环境 三、PLC工程 1、组态配置 2、ip地址、端口号 3、全局变量定义 四、C#端Winform程序创建 1创建主界面 2、创建子窗口 3、运行生成&#xff0c;界面效果 4、Modebus协议说明 5、Modebus操作说明 六、AM402测试 1、寄存器读测试 2、MW1…

新魔百和UNT402A免拆机破解(附教程)

九联UNT402A刷机教程指南 今天跟大家分享下关于九联UNT402A刷机教程&#xff0c; UNT402A与UNT之前型号有明显区别&#xff0c; 就是采用的处理器不在是海思处理器&#xff0c; 取而代之的是晶晨处理器&#xff0c;下面讲讲如何刷机 下载地址&#xff1a; 百度链接&#xff1…