Tuesday, September 15, 2026

Стриминг новостей по акциям в реальном времени на Python с finlight

Kevin Bartsch

Стриминг новостей по акциям в реальном времени на Python с finlight

Опрашивать API ради новостей — значит всегда немного отставать. Для живых дашбордов и торговых сигналов вам нужна каждая статья в момент её публикации. WebSocket от finlight делает именно это, а Python SDK сводит всё к нескольким строкам. В этом руководстве вы построите живой поток новостей по акциям, отфильтрованный по тикеру и уже оценённый по тональности.

Установка SDK

pip install finlight-client

Полный пример

import asyncio

from finlight_client import FinlightApi, ApiConfig
from finlight_client.models import GetArticlesWebSocketParams

client = FinlightApi(config=ApiConfig(api_key="YOUR_API_KEY"))


def on_article(article):
    print(f"[{article.sentiment}] {article.title} - {article.source}")


async def main():
    await client.websocket.connect(
        request_payload=GetArticlesWebSocketParams(
            tickers=["AAPL", "NVDA"],
            includeEntities=True,
        ),
        on_article=on_article,
    )


if __name__ == "__main__":
    asyncio.run(main())

Запустите это, и каждый раз, когда публикуется подходящая статья, срабатывает ваш колбэк on_article со статьёй, включая её sentiment, title, source и (поскольку включён includeEntities) размеченные компании.

Что происходит

  • client.websocket.connect(...) открывает постоянное соединение и стримит подходящие статьи. Это асинхронный вызов, поэтому он выполняется внутри asyncio.run(...).
  • GetArticlesWebSocketParams принимает те же типы фильтров, что и REST API: tickers, query, sources, countries, categories, language, includeEntities и другие.
  • on_article — ваш обработчик. Здесь вы могли бы класть данные в очередь, обновлять дашборд или оценивать сигнал, а не просто печатать.

SDK управляет соединением за вас, включая автоматическое переподключение с backoff, так что обрыв соединения не остановит ваш поток.

Enhanced против raw

client.websocket — это enhanced-поток: статьи приходят с полным обогащением (тональность и сущности). Если вам нужны только облегчённые базовые данные статьи как можно быстрее, есть также client.raw_websocket с тем же видом вызова connect(...). Используйте enhanced, когда нужен анализ, и raw, когда нужна минимальная задержка.

Фильтруйте ровно до того, что вам нужно

Поскольку WebSocket принимает те же фильтры, что и REST, вы можете стримить точный срез: только крипто-новости, только вотчлист тикеров, только определённые страны. Полный набор фильтров см. в Продвинутой фильтрации.

Куда двигаться дальше

Получите бесплатный API-ключ →