Skip to content

DBoyara/FinamTradeApiPy

Repository files navigation

FinamTradeApiPy

Build PyPI version Python pre-commit License Code style: Ruff Type Checked: mypy Formatted with: black Security Check GitHub stars Ask DeepWiki


FinamTradeApiPy — это Python-библиотека для лёгкого взаимодействия с публичным торговым API Finam. Библиотека только предоставляет удобную обертку для доступа к API и не несет ответственность за полученные и отправленные через нее данные.

Обновление FinamApi !!!

Так как Finam переезжает на новое API, библиотека будет обновляться. Версия будет начинаться с 4.х.х и уже доступна в PyPi. Предыдущая версия остановилась на 3.1.2 и доступна в PyPi. В нее больше изменения вноситься не будут.

Асинхронный REST-клиент для API Finam.

Используется:

  1. aiohttp для создания клиента;
  2. pydantic для удобной работы с моделями данных;
  3. ruff для линтинга;
  4. mypy для статической типизации;
  5. pytest для тестирования;
  6. bandit для статического анализа безопасности;
  7. pre-commit для автоматизации линтинга и тестирования;

Requirements

Python >= 3.11; < 3.14 - проверки в CI.

Installation

pip install finam-trade-api
poetry add finam-trade-api

Usage/Examples

Получение токена

import os

from finam_trade_api import Client
from finam_trade_api import TokenManager


async def main():
    # Получение токена из переменных окружения
    token = os.getenv("TOKEN")
    
    # Инициализация клиента с менеджером токенов
    client = Client(TokenManager(token))
    
    # Установка JWT-токена
    await client.access_tokens.set_jwt_token()
    
    # Получение деталей JWT-токена
    return await client.access_tokens.get_jwt_token_details()


if __name__ == "__main__":
    import asyncio

    # Запуск асинхронного main
    print(asyncio.run(main()))

Информация об аккаунте

import os
from pprint import pprint

from finam_trade_api import Client
from finam_trade_api import TokenManager
from finam_trade_api.account import GetTransactionsRequest, GetTradesRequest

token = os.getenv("TOKEN")
account_id = os.getenv("ACCOUNT_ID")


async def main():
    client = Client(TokenManager(token))
    await client.access_tokens.set_jwt_token()

    # Получение информации об аккаунте
    pprint(await client.account.get_account_info(account_id))

    # Получение списка транзакций
    pprint(await client.account.get_transactions(GetTransactionsRequest(
        account_id=account_id,
        start_time="2024-01-01T00:00:00Z",
        end_time="2025-03-15T00:00:00Z",
        limit=10,
    )))

    # Получение списка сделок
    pprint(await client.account.get_trades(GetTradesRequest(
        account_id=account_id,
        start_time="2024-01-01T00:00:00Z",
        end_time="2025-03-15T00:00:00Z",
    )))


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

Больше примеров в папке examples

Authors

License

GNU GPL v.3.0

About

Асинхронный REST-клиент для API Finam

Topics

Resources

License

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •  

Languages