LINUX.ORG.RU

Неправильные данные индикаторов TA-Lib

 


0

3

Добрый день сообществу.

Использую опенсорсный проект TA-Lib (http://ta-lib.org/). Некоторые индикаторы неправильно расчитываются и сдвигаются назад.

Например, вот корректно посчитанные данные МА: http://i.piccy.info/i9/0ef09d6266909d29a37db1ae9e4567ec/1466154471/19066/1044...

А используя такой же вызов библиотеки, значения ТЕМА получаем со сдвигом: http://i.piccy.info/i9/d8b5663cd8282ea23ad379c4a0450987/1466154514/18749/1044...

Вот таким должен быть результат ТЕМА для этих входящих данных: http://i.piccy.info/i9/c4a6ca37fac0d88789653883f9af5e69/1466154624/17375/1044...

Код расчета, Java:

        //initialization
        double[] outRes = new double[array.length];
        MInteger begin = new MInteger();
        MInteger length = new MInteger();

        //library call
        Core c = new Core();
        RetCode retCode = c.tema(0, array.length - 1, array, period, begin, length, outRes);

        //result handling
        if (retCode == RetCode.Success) {
            return outRes;
        } else {
            System.out.println("Error in TEMA calculation");
            return null;
        }

Может кто-то использует TA-Lib и сталкивался с подобной проблемой? Слышал, что существуют форки TA-Lib с исправленными багами. Находил ли кто-то подобное?

Кастую лоровцев, которые интересовались подобной темой ранее: ymuv MKuznetsov liberium andrefx sergey_vp

Я использую из C. И имею форк ) Но нет там багов почти. А вот такие вопросы возникают на stackoverflow часто, т.к. документирована она плохо и сравнивают ее работу обычно с результатами онлайн сервисов, что не всегда корректно, особенно для скользящих средних.

Тут вы, возможно, просто неверно интерпретируете результат - отсюда сдвиг.

У вас в outRes будет length значащих элементов с индексами от 0 до length-1. Которые соответствуют length элементам входного массива array с индексами от begin до array.length - 1. Все что в array было до begin употребилось на инициализацию скользящих средних. А сколько входных данных пошло на этот разогрев - зависит от period.

Вот в этом результаты TA-lib обычно и разъезжаются с онлайн сервисами. К примеру, если у вы хотите получить скользящую среднюю, строящуюся по 3м предыдущим дням для текущей недели, то сервис имеет возможность заглянуть на 3 дня назад (а некоторые для особой точности - с начала года считают) и выдать вам 7 результатов. Ta-lib же имеет дело лишь с тем, что вы ей даете. И если вы забудете об том и скормите ей 7 значений, а не 7+3, то Ta-Lib пустит первые 3 на разогрев и вернет только 4 значения, соответствующие последним 4м дням недели.

Truf ()
Ответ на: комментарий от Truf

Мне кажется, дело не в сдвигах и интерпретации. Для наглядности, я приготовил пример с экстремумом и TEMA 5-го периода. http://i.piccy.info/i9/7fbd00d2062558612e6546a488d17ee8/1466253286/36639/1044...

Как видно, хай здесь 1.3298.

Вот массив входящих значений: http://pastebin.com/raw/QSvs5KxZ

Вот результирующий массив со значениями ТЕМА: http://pastebin.com/raw/z5A2a8Df

Остальные значения:
Первый элемент входящего массива: 0
Последний элемент входящего массива: 161
Результируюший begin value: 12
Результирующий length value: 150
Lookback: 12

Из этого напрашиваются выводы:
1. В результирующем массиве индикатора данных выше 1.3285 вообще нету (хотя они точно должны быть судя по Dukascopy и исходя из здравого смысла, период-то всего 5). То есть, никакие сдвиги данных не помогут. В результирующем массиве банально нету нужных данных.
2. У меня период 5 (для него lookback будет 12). Входящий массив у меня 161 бар. Этого ну точно должно быть вполне досточно.

observer ★★★ ()
Ответ на: комментарий от observer

Я наверно туплю, но почему мы должны ожидать значений выше 1.3285 в результате, если во входных данных таких значений всего 3 (на глазок). Причем хаи стоят 2 первыми значениями, а значат будут влиять на первый TEMA с минимально возможной силой. TEMA строится по 3-м EMA.

Вот TEMA: http://www.fmlabs.com/reference/default.htm?url=TEMA.htm

А в EMA " Past values have a diminishing contribution to the average, while more recent values have a greater contribution".

Вот EMA: http://www.fmlabs.com/reference/default.htm?url=ExpMA.htm

Я бы с ходу не считал результаты неверными. Думаю, если все это загнать в Excel, и посчитать по формулам, то мы получим результат TA-Lib.

Не имел дело с Dukascopy, но некоторые расхождения могут быть, если они считают TEMA любого периода с начала года. Сервисам удобнее иметь кеш всех возможных индикаторов от достаточно далекого момента и просто отрисовывать их по запросу пользователя. Расхождения в этом случае могут быть.

Попробуйте просчитать TEMA через ta-lib от начала года, не станет ли результат более похож на Dukascopy? (возможно смещение не пропадет, т.к. я все же подозреваю неверную отрисовку).

Еще можно сравнить корректность TEMA периода 2 и самой EMA.

Truf ()
Последнее исправление: Truf (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.