]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Trader.git/blobdiff - store.py
Add Makefile and test coverage
[perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Trader.git] / store.py
index 4e46878928d940522beceae46c9d08f37f40c636..841a0fc9e4f581ad468a2c3e8664507b003b4232 100644 (file)
--- a/store.py
+++ b/store.py
@@ -53,22 +53,27 @@ class TradeStore:
                 continue
             value_from = values_in_base.get(currency, portfolio.Amount(base_currency, 0))
             value_to = new_repartition.get(currency, portfolio.Amount(base_currency, 0))
+
             if value_from.value * value_to.value < 0:
-                trade_1 = portfolio.Trade(value_from, portfolio.Amount(base_currency, 0), currency, market=market)
-                if only is None or trade_1.action == only:
-                    cls.all.append(trade_1)
-                trade_2 = portfolio.Trade(portfolio.Amount(base_currency, 0), value_to, currency, market=market)
-                if only is None or trade_2.action == only:
-                    cls.all.append(trade_2)
+                cls.add_trade_if_matching(
+                        value_from, portfolio.Amount(base_currency, 0),
+                        currency, only=only, market=market)
+                cls.add_trade_if_matching(
+                        portfolio.Amount(base_currency, 0), value_to,
+                        currency, only=only, market=market)
             else:
-                trade = portfolio.Trade(
-                    value_from,
-                    value_to,
-                    currency,
-                    market=market
-                    )
-                if only is None or trade.action == only:
-                    cls.all.append(trade)
+                cls.add_trade_if_matching(value_from, value_to,
+                        currency, only=only, market=market)
+
+    @classmethod
+    def add_trade_if_matching(cls, value_from, value_to, currency,
+            only=None, market=None):
+        trade = portfolio.Trade(value_from, value_to, currency,
+                market=market)
+        if only is None or trade.action == only:
+            cls.all.append(trade)
+            return True
+        return False
 
     @classmethod
     def prepare_orders(cls, only=None, compute_value="default"):