我从TA-LIB Mama指标得到了奇怪的结果。
使用相同的价格数组调用其他指标可以得到正确的结果。
但是对core.mama()
的调用给妈妈的价值提供了一两点,而Fama的价值高达30点。我与JForex中的值进行了比较,我已经对其他平台进行了验证。
我通过调用TA-LIB设置价格数组的长度,但更长的回顾并没有改善结果:
int priceLength = core.mamaLookback(fastLimit, slowLimit) + 1;
我对fastLimit和slowLimit的设置在合理范围内。
将startIdx
参数更改为0并返回更多值也无济于事。
代码很简单,很难看出我做错了什么。我是否有某种脑屁,或者图书馆被窃听?
public static double[] runMama(double[] prices, double fastLimit, double slowLimit) {
try {
MInteger outBegIdx = new MInteger();
MInteger outNbElement = new MInteger();
int count = prices.length;
Core core = new Core();
// We only need the most recent value.
double[] outputFama = new double[1];
double[] outputMama = new double[1];
RetCode retCode = core.mama(count-1, count-1, prices, fastLimit, slowLimit, outBegIdx, outNbElement, outputMama, outputFama);
if (retCode != RetCode.Success) {
throw new RuntimeException("TA-LIB Mama has barfed!");
}
return new double[]{outputMama[0], outputFama[0]};
} catch (Exception e) {
Printer.printErr("Problem with MESA", e);
return null;
}
}
答案 0 :(得分:2)
好的 - 我的不好
我没有意识到Java TA-Lib以某种古怪的方式返回数据。
最近的值具有更高的键,最高键被填充了一些与回顾长度相关的零值。
此外,当指标有记忆时(如基于指数MA的妈妈),你需要比core.mamaLookback(fastLimit, slowLimit)
返回的值更长的回顾来获得有意义的结果。
我现在得到了可靠的结果。