依赖ta-lib包, 可以计算滚动的标准差
<!-- https://mvnrepository.com/artifact/com.tictactec/ta-lib -->
<dependency>
<groupId>com.tictactec</groupId>
<artifactId>ta-lib</artifactId>
<version>0.4.0</version>
</dependency>
package test;
import com.tictactec.ta.lib.Core;
import com.tictactec.ta.lib.MInteger;
public class Stdtest {
public static void main(String[] args) {
double[] zf = {1d,2d,3d,4d,5d,6d,7d,8d,9d,10,12,14};
Core core = new Core();
MInteger outBegIdx = new MInteger();
MInteger outNBElement = new MInteger();
double[] std = new double[zf.length];
//core.stdDev(startIdx, endIdx, inReal, optInTimePeriod, optInNbDev, outBegIdx, outNBElement, outReal)
//startIdx开始计算的索引,不是数据前推用到的索引,是真正要输出数据的开始索引,大于optInTimePeriod时是从startIdx开始计算的
//endIdx 结束计算的索引,inReal比较endIdx长时,到endIdx 时结束计算
//inReal 需要计算的输入数据数组
//optInTimePeriod 计算周期,就是几个数算一个标准差
//optInNbDev 标准差的倍数 默认为1
//outBegIdx 第一个有输出值的inReal的索引值,用于对齐数据
//outNBElement 输出结果中有效数据个数,从outReal中取数用
//outReal 输出的结果数组
core.stdDev(0, zf.length-1, zf, 9, 1, outBegIdx, outNBElement, std);
System.err.println(outBegIdx.value);
System.err.println(outNBElement.value);
System.err.println(std[0]);
System.err.println(std[1]);
System.err.println(std[2]);
System.err.println(std[3]);
}
}