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) 返回的值更长的回顾时间才能获得有意义的结果。所以你需要传入一个足够长的价格数组。

我现在得到了可靠的结果。