Path: blob/master/ invest-robot-contest_tinkoff-contest-python-main/src/containers/config.py
5935 views
import datetime1import re2from dataclasses import dataclass34from tinkoff.invest import CandleInterval56from src.service.errors import ConfigError789@dataclass10class TraderConfig:11# TODO:12"""Common context of the trader"""1314account_id: str15instrument_figi: str16config: dict1718@property19def candle_timedelta(self) -> datetime.timedelta:20match = re.match(r"^(?P<number>\d+)(?P<interval>[mhd])$", self.config["window_size"])21if match is None:22raise ConfigError("Invalid window_size")23kwarg_name = {24"m": "minutes",25"h": "hours",26"d": "days",27}[match.groupdict()["interval"]]28kwarg_value = int(match.groupdict()["number"])29return datetime.timedelta(**{kwarg_name: kwarg_value})3031@property32def candle_interval(self) -> CandleInterval:33return {34"1m": CandleInterval.CANDLE_INTERVAL_1_MIN,35"5m": CandleInterval.CANDLE_INTERVAL_5_MIN,36"15m": CandleInterval.CANDLE_INTERVAL_15_MIN,37"1h": CandleInterval.CANDLE_INTERVAL_HOUR,38"1d": CandleInterval.CANDLE_INTERVAL_DAY,39}[self.config["candle_interval"]]404142