Установка TA-Lib и пример использования C api

TA-Lib — библиотека с открытым кодом в которой реализовано более 200 индикаторов технического анализа. Наиболее известные: RSI, MACD, ADX, Stochastic, Bollinger Bands и др.

Библиотека разработана на чистом C. TA-Lib может быть скомпилирована под разные системы и может использоваться из разных языков программирования, например: C/C++, Java, Perl, Python, PHP и др.

Внутри пример ее установки на Linux и использования из C.

Установка TA-Lib

Установка проста и не должна вызвать проблем на Linux.
Первым делом, подготовим систему:

Затем скачиваем архив с кодом и распаковываем:

Теперь переходим в директорию с кодом, компилируем и устанавливаем библиотеку в систему:

Если все прошло успешно и не было ошибок, значит библиотека установлена и расположена здесь (в некоторых дистрибутивах путь может отличаться): /usr/lib/libta_lib.so

Пример на C

Официальная документация кратка, но содержит необходимые пояснения. Доступна здесь.

Ниже код на C с комментариями, под кодом даны пояснения. Для примера будем вызывать функцию TA_SMA() для расчета простой скользящей средней с периодом равным 10.

файл ta-lib.c

В начале программы создаем массив из 20 чисел и заполняем его от 0 до 19. При желании его можно вывести на экран, раскомментировав строку.

Далее инициализируем необходимые переменные и вызываем функцию TA_Initialize(), которая должна быть вызвана единожды перед началом использования функций библиотеки.

Когда TA-Lib успешно инициализирована, создаем указатель на элемент, с которого будем заполнять выходной массив полученными значениями. Смещение получаем с помощью функции TA_SMA_Lookback(), передавая в нее период расчета.

Теперь все готово и можно передать в функцию TA_SMA() все данные и указатели на переменные:

  • in/out — массивы с входящими/исходящими данными.
  • outBeg — получит количество пропущенных элементов от начала массива. Равен значению функции TA_SMA_Lookback().
  • outNbElement — получит количество элементов с данными.

В конце выполняем функция TA_Shutdown() для завершения использования библиотеки.

Код можно скомпилировать и запустить командой:

Где:

  • -lta_lib — подключение компилятором библиотеки ta_lib.
  • -lm — подключение компилятором библиотеки math.c (используется в ta_lib).

На C++ код будет практически идентичным, учитывая готовые шаблоны языка. Исключение только в добавлении библиотеки. Код ниже: