Path: blob/master/ invest-robot-contest_invest-bot-main/trading/trade_results.py
5929 views
from dataclasses import dataclass12from trade_system.signal import Signal34__all__ = ("TradeOrder")567@dataclass(frozen=False, eq=False, repr=True)8class TradeOrder:9open_order_id: str10signal: Signal11close_order_id: str = ""121314class TradeResults:15"""16Keep history of orders by trade day17"""18def __init__(self) -> None:19self.__current_trade_orders: dict[str, TradeOrder] = dict()20self.__old_trade_orders: dict[str, list[TradeOrder]] = dict()2122def get_current_open_orders(self) -> dict[str, TradeOrder]:23return self.__current_trade_orders2425def get_closed_orders(self) -> dict[str, list[TradeOrder]]:26return self.__old_trade_orders2728def get_current_trade_order(self, figi: str) -> TradeOrder:29return self.__current_trade_orders.get(figi, None)3031def open_position(32self,33figi: str,34open_order_id: str,35signal: Signal36) -> TradeOrder:37current_trade_order = self.get_current_trade_order(figi)3839if not current_trade_order:40current_trade_order = TradeOrder(41open_order_id=open_order_id,42signal=signal43)44self.__current_trade_orders[figi] = current_trade_order4546return current_trade_order4748def close_position(49self,50figi: str,51close_order_id: str52) -> TradeOrder:53current_order = self.__current_trade_orders.pop(figi, None)5455if current_order:56current_order.close_order_id = close_order_id57(self.__old_trade_orders.setdefault(figi, [])).append(current_order)5859return current_order606162