Path: blob/master/ invest-robot-contest_TradingCompetition2022-main/models/ModelChecks.py
5925 views
from collections import defaultdict123class ModelChecks:4""" Class store all checks and link to check implement """56OPEN_LONG = 'open_long'7OPEN_SHORT = 'open_short'8CLOSE_LONG = 'close_long'9CLOSE_SHORT = 'close_short'10IS_READY = 'is_ready'11IMPL_METHOD = 'impl_method'1213def __init__(self):14self._checks = dict(zip((self.OPEN_LONG, self.CLOSE_LONG, self.OPEN_SHORT, self.CLOSE_SHORT),15(defaultdict(dict), defaultdict(dict), defaultdict(dict), defaultdict(dict),)))1617# self._check[self._OPEN_LONG]18# [self._LOW_POINT] = False1920@property21def checks(self):22return self._checks2324def add_check(self, group, name, implement_link):25""" Add new check26:param27group -> type of order (_OPEN_LONG, _CLOSE_LONG, etc.)28name -> name of check29implement_method -> method which was implemented for checking30"""31self._checks[group][name][self.IS_READY] = False32self._checks[group][name][self.IMPL_METHOD] = implement_link33return self3435def set_ready(self, group, name):36self._checks[group][name][self.IS_READY] = True3738def __iter__(self):39self._group_pos = 040self._groups = list(self._checks.keys())41self._group_item_pos = 042return self4344def __get_next_no_empty_group_idx__(self, gp_idx):45gp_idx += 146while gp_idx < len(self._groups):47group_items = self._checks[self._groups[gp_idx]]48if len(group_items) > 0:49return gp_idx50else:51gp_idx += 152continue53raise StopIteration5455def __next__(self):56group = self._checks[self._groups[self._group_pos]]57if self._group_item_pos >= len(group):58self._group_pos = self.__get_next_no_empty_group_idx__(self._group_pos)59self._group_item_pos = 06061if self._group_pos > len(self._groups):62raise StopIteration6364group_name = self._groups[self._group_pos]65group_items = self._checks[self._groups[self._group_pos]]66check_key = list(group_items.keys())67check_name = check_key[self._group_item_pos]68item = group_items[check_key[self._group_item_pos]]69self._group_item_pos += 170return group_name, check_name, item717273