TA-LIB Mama 指标的错误结果
Incorrect results from TA-LIB Mama indicator
我从 TA-LIB Mama 指标中得到奇怪的结果。
使用相同价格数组调用其他指标会给出正确的结果。
但是调用 core.mama()
会使 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;
}
}
好的 - 我的错
我没有意识到 Java TA-Lib returns 数据有点古怪。
与几乎所有其他交易库相比,最近的值具有更高的键,最高键被一些与回溯长度相关的零值填充。
此外,当指标有记忆时(例如基于指数 MA 的 Mama),您需要比 core.mamaLookback(fastLimit, slowLimit)
返回的值更长的回顾时间才能获得有意义的结果。所以你需要传入一个足够长的价格数组。
我现在得到了可靠的结果。
我从 TA-LIB Mama 指标中得到奇怪的结果。
使用相同价格数组调用其他指标会给出正确的结果。
但是调用 core.mama()
会使 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;
}
}
好的 - 我的错
我没有意识到 Java TA-Lib returns 数据有点古怪。
与几乎所有其他交易库相比,最近的值具有更高的键,最高键被一些与回溯长度相关的零值填充。
此外,当指标有记忆时(例如基于指数 MA 的 Mama),您需要比 core.mamaLookback(fastLimit, slowLimit)
返回的值更长的回顾时间才能获得有意义的结果。所以你需要传入一个足够长的价格数组。
我现在得到了可靠的结果。