]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Trader.git/commitdiff
Fix move_balance not moving currencies absent from trades
authorIsmaël Bouya <ismael.bouya@normalesup.org>
Mon, 12 Feb 2018 01:08:50 +0000 (02:08 +0100)
committerIsmaël Bouya <ismael.bouya@normalesup.org>
Mon, 12 Feb 2018 01:08:50 +0000 (02:08 +0100)
helper.py
test.py

index f1aeaf2dbeba2807d29ca632d889761fe647274f..8ef2d642203252c8d14ab9328ad1fbcb7e59a4d8 100644 (file)
--- a/helper.py
+++ b/helper.py
@@ -4,10 +4,13 @@ from store import *
 
 def move_balances(market, debug=False):
     needed_in_margin = {} 
+    for currency in BalanceStore.all:
+        if BalanceStore.all[currency].margin_free != 0:
+            needed_in_margin[currency] = 0
     for trade in TradeStore.all:
+        if trade.value_to.currency not in needed_in_margin:
+            needed_in_margin[trade.value_to.currency] = 0
         if trade.trade_type == "short":
-            if trade.value_to.currency not in needed_in_margin:
-                needed_in_margin[trade.value_to.currency] = 0
             needed_in_margin[trade.value_to.currency] += abs(trade.value_to)
     for currency, needed in needed_in_margin.items():
         current_balance = BalanceStore.all[currency].margin_free
diff --git a/test.py b/test.py
index 26646be24d8b87a75401e00fc3b5c150946aa41a..19655213cb8a71e54dd3925ba1c13090f37904ad 100644 (file)
--- a/test.py
+++ b/test.py
@@ -724,7 +724,8 @@ class HelperTest(WebMockTestCase):
                 portfolio.TradeStore.all = [trade1, trade2, trade3]
                 balance1 = portfolio.Balance("BTC", { "margin_free": "0" })
                 balance2 = portfolio.Balance("USDT", { "margin_free": "100" })
-                portfolio.BalanceStore.all = {"BTC": balance1, "USDT": balance2}
+                balance3 = portfolio.Balance("ETC", { "margin_free": "10" })
+                portfolio.BalanceStore.all = {"BTC": balance1, "USDT": balance2, "ETC": balance3}
 
                 market = mock.Mock()
 
@@ -736,6 +737,7 @@ class HelperTest(WebMockTestCase):
                 else:
                     market.transfer_balance.assert_any_call("BTC", 3, "exchange", "margin")
                     market.transfer_balance.assert_any_call("USDT", 50, "margin", "exchange")
+                    market.transfer_balance.assert_any_call("ETC", 10, "margin", "exchange")
 
     @mock.patch.object(helper, "prepare_trades")
     @mock.patch.object(portfolio.TradeStore, "prepare_orders")