Как в Python распознавать паттерны японских свечей без сложной C-сборки TA-Lib?
При разработке алгоритма технического анализа на Python для акций и валют часто требуется находить классические паттерны японских свечей (Молот, Поглощение, Утренняя звезда, Доджи и др.).
Стандартным решением традиционно считается C-библиотека TA-Lib и её python-обёртка ta-lib. Однако при её установке на Windows и в современных окружениях Python (3.11, 3.12, 3.13) постоянно возникают известные проблемы компиляции: требуется Visual C++ Build Tools на несколько гигабайт, а готовые prebuilt wheel-колёса под свежие версии CPython часто отсутствуют или не поддерживаются.
Подскажите, существуют ли современные автономные альтернативы (чистый Python / zero-dependency) для распознавания свечных паттернов, которые можно легко подключить без C-компиляторов, умеют работать напрямую с котировками (например, через yfinance) и рассчитывать торговые уровни (Stop Loss, Take Profit)?
Если нет жесткого ограничения на установку Visual C++ Build Tools посмотри как собирается ta-lib на >=3.12 в этом проекте https://github.com/freqtrade/freqtrade
Давно работал с ней, устанавливая по референсу из этого проекта, проблем потом никогда не возникало
Даниил Рыжов, спасибо за наводку на freqtrade! Но в том-то и дело, что жесткое ограничение как раз есть — Visual C++ Build Tools весят под 5–6 ГБ, и во многих средах (микросервисы, легкие контейнеры или когда у пользователя нет прав админа на Windows) ставить их просто не вариант. Да и в самом freqtrade в issues регулярно всплывают проблемы со сборкой TA-Lib на свежих версиях Python.
Поэтому и ищу альтернативу именно на чистом Python/NumPy, чтобы ставилось за секунду через pip без компиляторов.
Колесо ставить без компилятора уже можно: у ta-lib на PyPI есть готовые win_amd64 под cp311-cp314, так что pip install ta-lib на свежем pip сборку не требует. Если всё равно лезет компилировать, проверь pip download ta-lib --only-binary=:all:, он сразу покажет, нет ли колеса под твою платформу/версию питона.
А если TA-Lib не нужен совсем, глянь pandas-ta-classic: чистый питон поверх numpy/pandas, свечные паттерны там нативные: df.ta.cdl_pattern(name="all"). Stop Loss/Take Profit она сама не считает, это руками от ATR: df.ta.atr(), стоп например low паттерна минус 1.5*ATR, тейк по нужному R:R.