选择boll线的时候,如果K线某一条数据的值比较低的情况下,会出现主图的K线向下到附图上去,能咨询下修改的思路吗?
tqlmorepassion opened this issue · comments
控制max和min值之后,K线不会下去,但是boll线会下去,绘制boll线的值又不能修改,是否还是得从每个K线柱子来下手?改动是不是特别大啊。
老哥, 这个问题你解决了吗?
@whyalwaysmea BaseKLineChartViewBase 我在这里getMainY方法限制了最大最小高度,但是实际上并不是特别好哈,因为其实全局的缩放比例是靠这个控制的,如果出现插针的情况下,不会按照作者最开始的设计思路去按比例缩放,但是实际上不是特别影响使用,你可以参考。
public float getMainY(float value) {
return Math.min((mMainMaxValue - value) * mMainScaleY, mMainRect.height()) + mMainRect.top;
}
@whyalwaysmea 兄弟,你也是成都啊。搞区块链的吗?
@tqlmorepassion 谢谢,我先试试看能解决我的情况不。 对啊,成都的,一个数字货币的项目,你也是成都的哇? 有时间多交流哈呢?
控制max和min值之后,K线不会下去,但是boll线会下去,绘制boll线的值又不能修改,是否还是得从每个K线柱子来下手?改动是不是特别大啊。
你在绘制MA,EMA,BOLL线的时候和 BaseKline里面的mMainMinValue 价格做个对比 比最低价格低就不要绘制了
Math.min((mMainMaxValue - value) * mMainScaleY, mMainRect.height()) + mMainRect.top;
这样限制的话,底部会是一个平行线。或者超过范围不进行绘制。然后左右滑动的时候回重新进行计算
可以在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方法也进行最小的数据限制。是可以解决绘制出范围的问题
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,这样试试看,应该可以