工具类下载地址:
https://download.csdn.net/download/qq_28844947/11088865
可查看应用效果之一:https://www.coinsmt.com/fullScreen/huobipro_btc_usdt
目前是java实现 使用在MPAndroid上面,其他语言和图表工具类比过去,可以然后将X,Y赋值过去
使用需知 chart_base_entity所有的类是你选用图表时候对应的数据 需要去掉目前支持如下指标(多周期,及其他算法参数)
EMA
BOLL
CCI
DMI
KDJ
MACD
OBV
RSI
SAR
VOL
WR
已封装为工具类可按如下调用
使用方法 //注意事项
// 使用需知 chart_base_entity所有的类是你选用图表时候对应的数据 需要去掉
//现在为了和图表隔离 提供单纯的算法工具类 所以才提供了临时的Entry Candle BarEntry等
ChartDataCalculateUtils calculateUtils = new ChartDataCalculateUtils("你的数据List你根据你实际使用的图表进行替换");
//部分指标需要选择周期 如EMA7 EMA10
Listperiods = Arrays.asList(7, 10);
calculateUtils.getEMA()
calculateUtils.getBollData()
calculateUtils.getCCI()
calculateUtils.getDMI()
calculateUtils.getKDJ()
calculateUtils.getMACD()
calculateUtils.getOBV()
calculateUtils.getRSI()
calculateUtils.getSARLineDatas()
calculateUtils.getVol()
calculateUtils.getWR()
核心源码 package com.beidd.lib.chart_data_utils;
import com.beidd.lib.chart_data_utils.chart_base_entity.BarEntry;
import com.beidd.lib.chart_data_utils.entity.BollEntity;
import com.beidd.lib.chart_data_utils.entity.CCIEntity;
import com.beidd.lib.chart_data_utils.chart_base_entity.Candle;
import com.beidd.lib.chart_data_utils.entity.DMIEntity;
import com.beidd.lib.chart_data_utils.entity.EMAEntity;
import com.beidd.lib.chart_data_utils.chart_base_entity.Entry;
import com.beidd.lib.chart_data_utils.entity.EntryType;
import com.beidd.lib.chart_data_utils.entity.ICandle;
import com.beidd.lib.chart_data_utils.entity.KDJEntity;
import com.beidd.lib.chart_data_utils.entity.MACDEntity;
import com.beidd.lib.chart_data_utils.entity.OBVEntity;
import com.beidd.lib.chart_data_utils.entity.RSIEntity;
import com.beidd.lib.chart_data_utils.entity.VolEntity;
import com.beidd.lib.chart_data_utils.entity.WREntity;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Rex on 2018/11/12.
* 只负责计算指标 可选周期
*/
public class ChartDataCalculateUtils {
private ListoriginData;
public ChartDataCalculateUtils(ListoriginData) {
this.originData = originData;
}
public ListgetSARLineDatas(float step, float maxStep, int period, int index) {
ListiCandles = changeCandleToICandle(originData);
NewSarUtils.prepareDataForSARFromIndex(step, maxStep, period, index, iCandles);
Listsars = new ArrayList<>();
for (int i = 0; i < iCandles.size(); i++) {
float sar = iCandles.get(i).sar;
sars.add(new Entry(i, sar, originData.get(i)));
}
return sars;
}
/**
* @param T boll T 一般默认为20
* @param K boll K 一般默认为2
* @return
*/
public BollEntity getBollData(int T, int K) {
if (originData == null || originData.size() == 0) {
return null;
}
if (T < 1 || K < 1) {
return null;
}
if (originData == null || originData.isEmpty()) {
return null;
}
if (T > originData.size()) {
return null;
}
//存储上轨数据
ArrayListzhongList = new ArrayList();
//存储中轨数据
ArrayListshangList = new ArrayList();
//存储下轨数据
ArrayListxiaList = new ArrayList();
//上轨
Entry shangEntity;
//中轨
Entry zhongEntity;</