X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=store.py;h=d25dd35d1b06efe8f73b812c90cb1d51a66448cc;hb=a18ce2f16973155c81f983643aba675f62dea7af;hp=c581608ca9ad67338cea98a2ae86457011d375b2;hpb=aca4d4372553110ab5d76740ff536de83d5617b2;p=perso%2FImmae%2FProjets%2FCryptomonnaies%2FCryptoportfolio%2FTrader.git diff --git a/store.py b/store.py index c581608..d25dd35 100644 --- a/store.py +++ b/store.py @@ -27,18 +27,29 @@ class ReportStore: if isinstance(obj, (datetime, date)): return obj.isoformat() return str(obj) - return json.dumps(self.logs, default=default_json_serial) + return json.dumps(self.logs, default=default_json_serial, indent=" ") def set_verbose(self, verbose_print): self.verbose_print = verbose_print - def log_stage(self, stage): + def log_stage(self, stage, **kwargs): + def as_json(element): + if callable(element): + return inspect.getsource(element).strip() + elif hasattr(element, "as_json"): + return element.as_json() + else: + return element + + args = { k: as_json(v) for k, v in kwargs.items() } + args_str = ["{}={}".format(k, v) for k, v in args.items()] self.print_log("-" * (len(stage) + 8)) - self.print_log("[Stage] {}".format(stage)) + self.print_log("[Stage] {} {}".format(stage, ", ".join(args_str))) self.add_log({ "type": "stage", "stage": stage, + "args": args, }) def log_balances(self, tag=None): @@ -223,7 +234,7 @@ class TradeStore: @property def pending(self): - return list(filter(lambda t: not t.is_fullfiled, self.all)) + return list(filter(lambda t: t.pending, self.all)) def compute_trades(self, values_in_base, new_repartition, only=None): computed_trades = [] @@ -264,6 +275,10 @@ class TradeStore: orders.append(trade.prepare_order(compute_value=compute_value)) self.market.report.log_orders(orders, only, compute_value) + def close_trades(self): + for trade in self.all: + trade.close() + def print_all_with_order(self, ind=""): for trade in self.all: trade.print_with_order(ind=ind)