From: Ismaƫl Bouya Date: Mon, 12 Feb 2018 01:08:50 +0000 (+0100) Subject: Fix move_balance not moving currencies absent from trades X-Git-Tag: v0.1~10 X-Git-Url: https://git.immae.eu/?p=perso%2FImmae%2FProjets%2FCryptomonnaies%2FCryptoportfolio%2FTrader.git;a=commitdiff_plain;h=0c79fad318711394874d94672e96db6da1ed9c52 Fix move_balance not moving currencies absent from trades --- diff --git a/helper.py b/helper.py index f1aeaf2..8ef2d64 100644 --- 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 26646be..1965521 100644 --- 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")