package org.ripple.power.hft.computer; import com.tictactec.ta.lib.Core; import com.tictactec.ta.lib.MInteger; public class MACDComputer { private Core core = new Core(); /** * 计算macd * * @param close * @param fastPeriod * @param slowPeriod * @param signalPeriod * @return 2维数组, [0]macd值, [1]signal值, [2]histogram */ public double[][] computeMACD(double[] close, int fastPeriod, int slowPeriod, int signalPeriod) { MInteger begin = new MInteger(); MInteger length = new MInteger(); int resultLegnth = close.length - (slowPeriod - 1) - (signalPeriod - 1); double[] values = new double[resultLegnth]; double[] signals = new double[resultLegnth]; double[] histograms = new double[resultLegnth]; double[][] result = new double[3][resultLegnth]; result[0] = values; result[1] = signals; result[2] = histograms; core.macd(0, close.length - 1, close, fastPeriod, slowPeriod, signalPeriod, begin, length, values, signals, histograms); return result; } }