Coverage for source/environment/points_reward_validator.py: 100%
11 statements
« prev ^ index » next coverage.py v7.8.0, created at 2025-07-30 20:59 +0000
« prev ^ index » next coverage.py v7.8.0, created at 2025-07-30 20:59 +0000
1# environment/points_reward_validator.py
3# global imports
5# local imports
6from source.environment import Order, RewardValidatorBase
8class PointsRewardValidator(RewardValidatorBase):
9 """
10 Awards reward for successful or failure order basing on predefined constants.
11 """
13 def __init__(self, rewarded_points: tuple[int, int] = (1, -1)) -> None:
14 """
15 Class constructor.
17 Parameters:
18 rewarded_points (tuple[int, int]): Number of points to be awarded for
19 successful and failure trade respectively.
20 """
22 self.__rewarded_points: tuple[int, int] = rewarded_points
24 def validate_orders(self, orders: list[Order]) -> float:
25 """
26 Calculates number of points to be rewarded for list of closed trades.
28 Parameters:
29 orders (list[Order]): Orders to be validated.
31 Returns:
32 (float): Calcualted reward.
33 """
35 reward = 0
36 for order in orders:
37 if order.current_value > order.initial_value:
38 reward = reward + self.__rewarded_points[0]
39 else:
40 reward = reward + self.__rewarded_points[1]
41 return reward