/
ArchOracle
/
trading
Обзор
Документация
Войти
/
ArchOracle
/
trading
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/app/application/use_case/GetSharesWithCandlesUseCase.py
47 строк
1 KB
ArchOracle
Исправил сервис получения акций со свечами.
02 май 2026, 18:56
02 май 2026, 18:56
25ec073
Код
Авторство
О чём код?
from datetime import timedelta, datetime, timezone from sqlalchemy.sql.functions import now from src.app.application.port.out.broker.BrokerPort import BrokerPort from src.app.application.port.out.repository.CandleRepository import CandleRepository from src.app.application.port.out.repository.ShareRepository import ShareRepository from src.app.domain.TradingSystem.Entity.ShareHistory import ShareHistory class GetSharesWithCandlesUseCase: def __init__( self, broker: BrokerPort, share_repo: ShareRepository, candle_repo: CandleRepository, ): self.broker = broker self.share_repo = share_repo self.candle_repo = candle_repo def execute(self) -> list[ShareHistory]: shares = self.broker.get_shares() result: list[ShareHistory] = [] from_ = datetime.now(timezone.utc) - timedelta(days=365 * 2) to = datetime.now(timezone.utc) for share in shares: self.share_repo.upsert(share) candles = self.candle_repo.get_by_figi(share.figi) if not candles: candles = self.broker.get_daily_candles( figi=share.figi, from_=from_, to=to, ) self.candle_repo.save_many(share.figi, candles) result.append(ShareHistory(share, candles)) return result