在MPAndroidChart库K线图的基础上画均线(4)

本文介绍了如何在MPAndroidChart基础上利用CombinedChart实现K线图的绘制,并修正了画均线逻辑,使其支持屏幕外数据的均线计算。作者详细讲解了从数据准备到添加均线的完整过程,包括数据结构的调整和自定义缓冲区的使用。
摘要由CSDN通过智能技术生成

推荐直接使用CombinedChart实现

在GandleStickChart的基础上画均线

========================

之前出过一篇MPAndroidChart的K线图上添加均线,但是在画均线的逻辑上有点问题,画出的均线永远是屏幕上显示的数据的均线,而不是全部数据的均线

在此调整了一下画均线的逻辑,并在上个版本上做了优化,使滑动更流畅,效果图如下:

P1

画K线图的原理


在说画均线之前,先简单说说画K线图的流程

因为公司项目没有开源,现在只是简单聊下思路,贴下简单的代码(都是开源库里有的代码)

如果你已经用过并阅读过MPAndroidChart的代码,那么下面的东西,你一定能看懂。

步骤:

  1. 首先,库已经给我们封装了一个自定义控件,叫做CandleStickChart,专门是用来画K线的,我们把库引入到工程以后,再自定义一个类继承CandleStickChart控件,然后在我们自定义的控件里随意定义我们自己的K线图,就好了。

  2. 自定义的内容一般就是描述文字,X轴、Y轴的一些位置和样式,滑动、缩放动画,等等

  3. 自定义完我们的控件以后,就要显示数据了,如果你下载过Demo,你应该看过显示数据部分的实现,传递的数据一个是X轴的ArrayList和一个是Y轴的ArrayList,X轴一般是时间维度,Y轴传递的是每个时间维度要显示的数据对象,包括index、最高、最低、开盘、收盘,类似这样:

    
    yVals1.add(new CandleEntry(i, high, low, open, close));
    
    
  4. 数据传过去以后,就到了画数据的部分了,画数据的核心方法是CandleStickChartRenderer.javadrawDataSet(Canvas c, CandleDataSet dataSet)方法,在这个方法里,通过mRenderPaint画K线的每个节点(显示在屏幕上

要在python中画股票k线图并添加均线,可以按照以下步骤进行操作: 1. 导入必要的:使用`import`语句导入需要的,例如`import matplotlib.pyplot as plt`和`import mpl_finance as mpf`。 2. 准备数据:将股票的历史数据存储在一个数据框中,确保数据框包含日期、开盘价、最高价、最低价和收盘价等必要的列。 3. 计算均线数据:使用`rolling`函数和`mean`函数计算5日均线和10日均线的数据,并将结果存储在数据框的新列中。例如,使用以下代码计算5日均线和10日均线: ``` df['M5'] = df['close'].rolling(5).mean() # 5日均线 df['M10'] = df['close'].rolling(10).mean() # 10日均线 ``` 4. 创建画布和子图:使用`plt.subplots`函数创建画布和子图,并设置画布的大小。例如,使用以下代码创建一个大小为15x6的画布和子图: ``` fig, ax = plt.subplots(figsize=(15, 6)) ``` 5. 绘制k线图:使用`mpf.candlestick_ochl`函数绘制k线图,传入子图名称、股票历史数据、k线柱的宽度、涨跌颜色和柱形透明度等参数。例如,使用以下代码绘制k线图: ``` mpf.candlestick_ochl(ax, df_arr, width=0.6, colorup='r', colordown='g', alpha=1) ``` 6. 添加均线图:使用`plt.plot`函数在同一子图中绘制均线图。例如,使用以下代码绘制5日均线和10日均线: ``` plt.plot(df_arr[:, 0], df['M5']) # 绘制5日均线 plt.plot(df_arr[:, 0], df['M10']) # 绘制10日均线 ``` 7. 添加标题和坐标轴标签:使用`plt.title`、`plt.xlabel`和`plt.ylabel`函数分别设置标题、x轴标签和y轴标签。例如,使用以下代码添加标题和标签: ``` plt.title('股票名称') # 设置标题 plt.xlabel('日期') # 设置x轴标签 plt.ylabel('价格') # 设置y轴标签 ``` 8. 设置刻度格式:使用`ax.xaxis_date`函数将x轴刻度设置为常规日期格式。 9. 显示图像:使用`plt.show`函数显示绘制的图像。 请注意,上述步骤中的变量名和参数值应根据实际情况进行调整。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [python绘制股票k线图](https://blog.csdn.net/hjhlln/article/details/127282449)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值