async def forecast(self): table = self.competition.table.table # type: List[Dict] league_games = self.competition.league_games # type: Dict[int, Dict] if self.competition.week == 3: self.team = table[-1].get('team') self.bet_flag = False if self.reset_flag: self.account.reset_lost_amount() if not self.team or self.competition.week not in self.required_weeks: return [] if not self.bet_flag: return [] week_games = league_games.get( self.competition.week) # type: Dict[int, Dict] for event_id, event_data in week_games.items(): player_a = event_data.get('A') player_b = event_data.get('B') if player_a == self.team or player_b == self.team: self.event_id = event_id self.event_data = event_data if player_a == self.team: self.odd_id = 1 else: self.odd_id = 0 self._bet = True break else: continue if not self._bet: return [] odds = self.event_data.get('odds') participants = self.event_data.get('participants') ticket = Ticket(self.competition.game_id, self.name) event = Event(self.event_id, self.competition.league, self.competition.week, participants) market_id, odd_name, odd_index = Player.get_market_info( str(self.odd_id)) odd_value = float(odds[odd_index]) if odd_value < 1.02: return [] stake = self.account.normalize_stake(self.account.get_stake(odd_value)) bet = Bet(self.odd_id, market_id, odd_value, odd_name, stake) event.add_bet(bet) win = round(stake * odd_value, 2) min_win = win max_win = win logger.info( f'[{self.competition.user.username}:{self.competition.game_id}] {self.name} ' f'{event.get_formatted_participants()}[{self.odd_id} : {odd_value}]' ) ticket.add_event(event) ticket.stake = stake ticket.min_winning = min_win ticket.max_winning = max_win ticket.total_won = 0 ticket.grouping = 1 ticket.winning_count = 1 ticket.system_count = 1 return [ticket]
async def forecast(self): table = self.competition.table.table # type: List[Dict] self.team = table[0].get('team') league_games = self.competition.league_games # type: Dict[int, Dict] week_games = league_games.get(self.competition.week) # type: Dict[int, Dict] for event_id, event_data in week_games.items(): player_a = event_data.get('A') player_b = event_data.get('B') if player_a == self.team or player_b == self.team: self.event_id = event_id self.event_data = event_data self._bet = True break else: continue odds = self.event_data.get('odds') participants = self.event_data.get('participants') ticket = Ticket(self.competition.game_id, self.name) event = Event(self.event_id, self.competition.league, self.competition.week, participants) ticket.add_event(event) min_win = 0 max_win = 0 total_stake = 0 a = [i for i in range(15, 43)] b = [] for _ in a: market_id, odd_name, odd_index = Player.get_market_info(str(_)) b.append(1 / float(odds[odd_index])) target_odd_ids = secrets.SystemRandom().choices(a, b, k=20) for odd_id in [73, 75]: market_id, odd_name, odd_index = Player.get_market_info(str(odd_id)) odd_value = float(odds[odd_index]) if odd_value < 1.02: return [] stake = self.account.normalize_stake(10) total_stake += stake bet = Bet(odd_id, market_id, odd_value, odd_name, stake) event.add_bet(bet) win = round(stake * odd_value, 2) min_win = win if win < min_win else min_win max_win = win if max_win > max_win else max_win logger.info(f'[{self.competition.user.username}:{self.competition.game_id}] {self.name} ' f'{event.get_formatted_participants()}[{odd_id} : {odd_value}]') ticket.stake = total_stake ticket.min_winning = min_win ticket.max_winning = max_win ticket.total_won = 0 ticket.grouping = 1 ticket.winning_count = len(target_odd_ids) ticket.system_count = len(target_odd_ids) return [ticket]
async def forecast(self): if self.team: pass else: self.predict(self.competition.week) if not self.team: return [] league_games = self.competition.league_games # type: Dict[int, Dict] week_games = league_games.get( self.competition.week) # type: Dict[int, Dict] for event_id, event_data in week_games.items(): player_a = event_data.get('A') player_b = event_data.get('B') if player_a == self.team or player_b == self.team: self.event_id = event_id self.event_data = event_data self._bet = True break else: continue odds = self.event_data.get('odds') participants = self.event_data.get('participants') ticket = Ticket(self.competition.game_id, self.name) event = Event(self.event_id, self.competition.league, self.competition.week, participants) market_id, odd_name, odd_index = Player.get_market_info( str(self.odd_id)) odd_value = float(odds[odd_index]) if odd_value < 1.02: return [] stake = self.account.normalize_stake(5) bet = Bet(self.odd_id, market_id, odd_value, odd_name, stake) event.add_bet(bet) win = round(stake * odd_value, 2) min_win = win max_win = win logger.info( f'[{self.competition.user.username}:{self.competition.game_id}] {self.name} ' f'{event.get_formatted_participants()}[{self.odd_id} : {odd_value}]' ) ticket.add_event(event) ticket.stake = stake ticket.min_winning = min_win ticket.max_winning = max_win ticket.total_won = 0 ticket.grouping = 1 ticket.winning_count = 1 ticket.system_count = 1 return [ticket]
async def forecast(self): league_games = self.competition.league_games # type: Dict[int, Dict] week_games = league_games.get( self.competition.week) # type: Dict[int, Dict] tickets = [] for event_id, event_data in week_games.items(): participants = event_data.get('participants') odds = event_data.get('odds') odd_ids = [0, 1] _odds = [] for odd_id in odd_ids: market_id, odd_name, odd_index = Player.get_market_info( str(odd_id)) _odds.append(odds[odd_index]) odd_value = max(_odds) odd_id = _odds.index(odd_value) if odd_id == 0: odd_id = 207 else: odd_id = 206 market_id, odd_name, odd_index = Player.get_market_info( str(odd_id)) odd_value = float(odds[odd_index]) if odd_value < 1.3: continue ticket = Ticket(self.competition.game_id, self.name) event = Event(event_id, self.competition.league, self.competition.week, participants) stake = self.account.get_stake(odd_value) bet = Bet(odd_id, market_id, odd_value, odd_name, stake) event.add_bet(bet) win = round(stake * odd_value, 2) min_win = win max_win = win ticket.add_event(event) ticket.stake = stake ticket.min_winning = min_win ticket.max_winning = max_win ticket.total_won = 0 ticket.grouping = 1 ticket.winning_count = 1 ticket.system_count = 1 tickets.append(ticket) return tickets
async def forecast(self): league_games = self.competition.league_games # type: Dict[int, Dict] week_games = league_games.get( self.competition.week) # type: Dict[int, Dict] tickets = [] for event_id, event_data in week_games.items(): # player_a = event_data.get('A') # player_b = event_data.get('B') participants = event_data.get('participants') odds = event_data.get('odds') odd_ids = [0, 1] _odds = [] for odd_id in odd_ids: market_id, odd_name, odd_index = Player.get_market_info( str(self.odd_id)) _odds.append(odds[odd_index]) all_odds = [odds[odd_index]] # market_id = 'FullTimeUnderOver2_5GoalGoalNoGoal' # odd_name = "HomeOver2_5GoalGoal" # all_odds = [] for odd_value in all_odds: odd_value = round(odd_value, 2) ticket = Ticket(self.competition.game_id, self.name) event = Event(event_id, self.competition.league, self.competition.week, participants) stake = 5 bet = Bet(self.odd_id, market_id, odd_value, odd_name, stake) event.add_bet(bet) win = round(stake * odd_value, 2) min_win = win max_win = win # logger.info(f'[{self.competition.user.username}:{self.competition.game_id}] {self.name} ' # f'{event.get_formatted_participants()}[{self.odd_id} : {odd_value}]') ticket.add_event(event) ticket.stake = stake ticket.min_winning = min_win ticket.max_winning = max_win ticket.total_won = 0 ticket.grouping = 1 ticket.winning_count = 1 ticket.system_count = 1 tickets.append(ticket) return tickets
async def forecast(self): league_games = self.competition.league_games # type: Dict[int, Dict] if not self.bet_enabled: table = self.competition.table.table # type: List[Dict] targets = table[:2] points = [] for target_team in targets: team = target_team.get('team') p = target_team.get('points') points.append((team, p)) if points: first = points[0] second = points[1] f_p = first[1] s_p = second[1] if f_p - s_p > 15: self.team = first[0] self.bet_enabled = True print(points) if not self.bet_enabled or self.competition.week not in self.required_weeks: return [] else: return [] if not self.bet_enabled: return [] week_games = league_games.get( self.competition.week) # type: Dict[int, Dict] for event_id, event_data in week_games.items(): player_a = event_data.get('A') player_b = event_data.get('B') if player_a == self.team or player_b == self.team: self.event_id = event_id self.event_data = event_data if player_a == self.team: self.odd_id = 0 else: self.odd_id = 1 self._bet = True break else: continue if not self._bet: return [] odds = self.event_data.get('odds') participants = self.event_data.get('participants') ticket = Ticket(self.competition.game_id, self.name) event = Event(self.event_id, self.competition.league, self.competition.week, participants) market_id, odd_name, odd_index = Player.get_market_info( str(self.odd_id)) odd_value = float(odds[odd_index]) if odd_value < 1.02: return [] stake = self.account.get_stake(odd_value) bet = Bet(self.odd_id, market_id, odd_value, odd_name, stake) event.add_bet(bet) win = round(stake * odd_value, 2) min_win = win max_win = win logger.info( f'[{self.competition.user.username}:{self.competition.game_id}] {self.name} ' f'{event.get_formatted_participants()}[{self.odd_id} : {odd_value}]' ) ticket.add_event(event) ticket.stake = stake ticket.min_winning = min_win ticket.max_winning = max_win ticket.total_won = 0 ticket.grouping = 1 ticket.winning_count = 1 ticket.system_count = 1 return [ticket]