Path: blob/master/ invest-robot-contest_TradingCompetition2022-main/stock/StockBuilder.py
5927 views
from stock.Stock import Stock1from logger.LoggerFactory import LoggerFactory2from logger.BusinessLogger import BusinessLogger3from models.ModelBuilder import ModelBuilder4from tinkoff.invest import InstrumentIdType, RequestError5from order.OrderStorage import OrderStorage67class StockBuilder:8@classmethod9def buildStock(cls, ticker, model_name, config, client) -> Stock:10stock = Stock(ticker)11stock.logger = LoggerFactory.get_business_logger_instance()12stock.model = ModelBuilder.buildModel(model_name, stock.ticker, config)13stock.model_name = model_name14stock.config = config1516if stock:17try:18instrument = client.instruments.share_by(id_type=InstrumentIdType.INSTRUMENT_ID_TYPE_TICKER,19class_code='TQBR', id=stock.ticker).instrument20stock.figi = instrument.figi21stock.count_in_lot = instrument.lot22except RequestError as error:23# Log tech error24LoggerFactory.get_tech_logger_instance().add_except(error)25return stock2627@classmethod28def re_init_stock(cls, stock: Stock, client):29new_stock = cls.buildStock(ticker=stock.ticker, model_name=stock.model_name,30config=stock.config, client=client)31order_storage = OrderStorage.get_order_storage()32order_storage.free_stock_orders(stock)3334# Log data35LoggerFactory.get_business_logger_instance().add_event(BusinessLogger.STOCK_RE_INIT,36new_stock, new_stock.model)37return new_stock383940