+ def dispatch_trade_types(cls, repartition=None):
+ if repartition is None:
+ repartition = Portfolio.repartition()
+ trade_types = {}
+ for currency, (ptt, trade_type) in repartition.items():
+ trade_types[currency] = trade_type
+ return trade_types
+ # FIXME: once we know the repartition and sold everything, we can move
+ # the necessary part to the margin account
+
+ @classmethod
+ def prepare_trades(cls, market, base_currency="BTC", compute_value="average"):
+ cls.fetch_balances(market)
+ values_in_base = cls.in_currency(base_currency, market, compute_value=compute_value)
+ total_base_value = sum(values_in_base.values())
+ new_repartition = cls.dispatch_assets(total_base_value)
+ trade_types = cls.dispatch_trade_types()
+ # Recompute it in case we have new currencies
+ values_in_base = cls.in_currency(base_currency, market, compute_value=compute_value)
+ Trade.compute_trades(values_in_base, new_repartition, trade_types, market=market)
+
+ @classmethod
+ def update_trades(cls, market, base_currency="BTC", compute_value="average", only=None):