Path: blob/master/ invest-robot-contest_invest-bot-main/configuration/configuration.py
5925 views
from configparser import ConfigParser12from configuration.settings import StrategySettings, AccountSettings, TradingSettings, BlogSettings34__all__ = ("ProgramConfiguration")567class ProgramConfiguration:8"""9Represent all bot configuration10"""11def __init__(self, file_name: str) -> None:12# classic ini file13config = ConfigParser()14config.read(file_name)1516self.__tinkoff_token = config["INVEST_API"]["TOKEN"]17self.__tinkoff_app_name = config["INVEST_API"]["APP_NAME"]1819self.__blog_settings = BlogSettings(20blog_status=bool(int(config["BLOG"]["STATUS"])),21bot_token=config["BLOG"]["TELEGRAM_BOT_TOKEN"],22chat_id=config["BLOG"]["TELEGRAM_CHAT_ID"]23)2425self.__account_settings = AccountSettings(26min_liquid_portfolio=int(config["TRADING_ACCOUNT"]["MIN_LIQUID_PORTFOLIO"]),27min_rub_on_account=int(config["TRADING_ACCOUNT"]["MIN_RUB_ON_ACCOUNT"])28)2930self.__trading_settings = TradingSettings(31delay_start_after_open=int(config["TRADING_SETTINGS"]["DELAY_START_AFTER_EXCHANGE_OPEN_SECONDS"]),32stop_trade_before_close=int(config["TRADING_SETTINGS"]["STOP_TRADE_BEFORE_EXCHANGE_CLOSE_SECONDS"]),33stop_signals_before_close=int(config["TRADING_SETTINGS"]["STOP_SIGNALS_BEFORE_EXCHANGE_CLOSE_MINUTES"])34)3536self.__trade_strategy_settings = []37for strategy_section in config.sections():38if strategy_section.startswith("STRATEGY_") and not strategy_section.endswith("_SETTINGS"):39self.__trade_strategy_settings.append(40StrategySettings(41name=config[strategy_section]["STRATEGY_NAME"],42figi=config[strategy_section]["FIGI"],43ticker=config[strategy_section]["TICKER"],44max_lots_per_order=int(config[strategy_section]["MAX_LOTS_PER_ORDER"]),45settings=config[strategy_section + "_SETTINGS"]46)47)4849@property50def tinkoff_token(self) -> str:51return self.__tinkoff_token5253@property54def tinkoff_app_name(self) -> str:55return self.__tinkoff_app_name5657@property58def blog_settings(self) -> BlogSettings:59return self.__blog_settings6061@property62def account_settings(self) -> AccountSettings:63return self.__account_settings6465@property66def trade_strategy_settings(self) -> list[StrategySettings]:67return self.__trade_strategy_settings6869@property70def trading_settings(self) -> TradingSettings:71return self.__trading_settings727374