Tuesday, September 15, 2026
Стриминг новостей по акциям в реальном времени на Python с finlight
Стриминг новостей по акциям в реальном времени на 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, вы можете стримить точный срез: только крипто-новости, только вотчлист тикеров, только определённые страны. Полный набор фильтров см. в Продвинутой фильтрации.
Куда двигаться дальше
- REST, WebSocket, Webhooks и MCP, чтобы решить, когда стриминг — правильный выбор.
- Полная документация с руководствами по WebSocket.
