diff --git a/src/batterymodel/models/__main__.py b/src/batterymodel/models/__main__.py index aa3f2a7..395222e 100644 --- a/src/batterymodel/models/__main__.py +++ b/src/batterymodel/models/__main__.py @@ -23,4 +23,10 @@ def main(): market2_start = market2.get_start_time() start_time = min(market_1_start, market2_start) + for item in market_1_start: + print(item) + battery.update(increment, None, market1) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/src/batterymodel/models/battery.py b/src/batterymodel/models/battery.py index 47bd3f0..a7ddfbd 100644 --- a/src/batterymodel/models/battery.py +++ b/src/batterymodel/models/battery.py @@ -33,8 +33,20 @@ class BatteryModel: self._total_profit = 0.0 def update(self, increment: datetime.timedelta, previous_state: "BatteryModel", market_data_increment: MarketDataIncrement): + self.market_decision(increment, previous_state, market_data_increment) pass + def market_decision(self, increment: datetime.timedelta, previous_state: "BatteryModel", market_data_increment: MarketDataIncrement): + if self._battery_state == BatteryState.IDLE and self._current_charge > 0: + # Sell, I guess, to whoever offers more + for market_data_increment in market_data_increment.markets: + self._battery_state = BatteryState.DISCHARGING + self._current_charge_rate = self._max_discharge_rate + self._current_market_rate = market_data_increment.get_max_market_rate() + self._current_charge_value = self._current_charge_rate * self._current_charge + return + + def handle_charge_or_discharge(self, increment: datetime.timedelta, previous_state: "BatteryModel"): if self._battery_state != BatteryState.CHARGING: total_charge_this_increment = self._current_charge_rate * (increment.total_seconds()/60.0) diff --git a/src/batterymodel/models/market.py b/src/batterymodel/models/market.py index 1e10f99..7ccb7ce 100644 --- a/src/batterymodel/models/market.py +++ b/src/batterymodel/models/market.py @@ -38,3 +38,12 @@ class MarketDataIncrement: def __init__(self, timestamp: datetime.datetime, markets: List[Tuple[datetime.datetime, float]]): self.timestamp = timestamp self.markets = markets + + def get_max_market_rate(self): + rate = 0 + highest = () + for i in self.markets: + if i[1] > rate: + rate = i[1] + highest = i + return highest \ No newline at end of file