KLineChart icon indicating copy to clipboard operation
KLineChart copied to clipboard

选择boll线的时候,如果K线某一条数据的值比较低的情况下,会出现主图的K线向下到附图上去,能咨询下修改的思路吗?

Open tqlmorepassion opened this issue 5 years ago • 8 comments

控制max和min值之后,K线不会下去,但是boll线会下去,绘制boll线的值又不能修改,是否还是得从每个K线柱子来下手?改动是不是特别大啊。

tqlmorepassion avatar Mar 27 '19 07:03 tqlmorepassion

老哥, 这个问题你解决了吗?

whyalwaysmea avatar May 09 '19 03:05 whyalwaysmea

@whyalwaysmea BaseKLineChartViewBase 我在这里getMainY方法限制了最大最小高度,但是实际上并不是特别好哈,因为其实全局的缩放比例是靠这个控制的,如果出现插针的情况下,不会按照作者最开始的设计思路去按比例缩放,但是实际上不是特别影响使用,你可以参考。

public float getMainY(float value) { return Math.min((mMainMaxValue - value) * mMainScaleY, mMainRect.height()) + mMainRect.top; }

tqlmorepassion avatar May 09 '19 03:05 tqlmorepassion

@whyalwaysmea 兄弟,你也是成都啊。搞区块链的吗?

tqlmorepassion avatar May 09 '19 03:05 tqlmorepassion

@tqlmorepassion 谢谢,我先试试看能解决我的情况不。 对啊,成都的,一个数字货币的项目,你也是成都的哇? 有时间多交流哈呢?

whyalwaysmea avatar May 09 '19 05:05 whyalwaysmea

控制max和min值之后,K线不会下去,但是boll线会下去,绘制boll线的值又不能修改,是否还是得从每个K线柱子来下手?改动是不是特别大啊。

你在绘制MA,EMA,BOLL线的时候和 BaseKline里面的mMainMinValue 价格做个对比 比最低价格低就不要绘制了

creativeNecessary avatar Jun 26 '19 11:06 creativeNecessary

Math.min((mMainMaxValue - value) * mMainScaleY, mMainRect.height()) + mMainRect.top;

这样限制的话,底部会是一个平行线。或者超过范围不进行绘制。然后左右滑动的时候回重新进行计算

wuyinlei avatar Mar 23 '20 13:03 wuyinlei

可以在MainDraw.java这个类中的getMaxValue进行限制 @Override public float getMaxValue(ICandle point) { if (status == Status.BOLL) { return Math.max(point.getUp(), point.getHighPrice()); } else { return Math.max(point.getHighPrice(), point.getMA30Price()); } }

相同的方式,getMinValue方法也进行最小的数据限制。是可以解决绘制出范围的问题

wuyinlei avatar May 23 '20 08:05 wuyinlei

Hello,可以这样解决: 1.先找到DataHelper类; 2.类中找到calculateMA方法,

int[] maKeys=new int[]{5,10,30}; //要计算的几日均线

改为以下代码:

int[] maKeys=new int[]{5,10,20,30}; //要计算的几日均线

3.类中找到setMAPrice方法,

if(maxCount == 30) {
            kLineEntity.MA30Price = ma;
        }

改为以下代码:

if (maxCount == 30) {
            kLineEntity.MA30Price = ma;
        } else if(maxCount == 20) {
            kLineEntity.MA20Price = ma;
        }

OK,这样试试看,应该可以

Harry-III avatar Apr 08 '21 09:04 Harry-III