Improve wallets time handling
This commit is contained in:
+10
-5
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
import logging
|
import logging
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
from datetime import datetime
|
from datetime import datetime, timedelta
|
||||||
from typing import Dict, NamedTuple, Optional
|
from typing import Dict, NamedTuple, Optional
|
||||||
|
|
||||||
from freqtrade.constants import UNLIMITED_STAKE_AMOUNT, Config
|
from freqtrade.constants import UNLIMITED_STAKE_AMOUNT, Config
|
||||||
@@ -12,6 +12,7 @@ from freqtrade.exceptions import DependencyException
|
|||||||
from freqtrade.exchange import Exchange
|
from freqtrade.exchange import Exchange
|
||||||
from freqtrade.misc import safe_value_fallback
|
from freqtrade.misc import safe_value_fallback
|
||||||
from freqtrade.persistence import LocalTrade, Trade
|
from freqtrade.persistence import LocalTrade, Trade
|
||||||
|
from freqtrade.util.datetime_helpers import dt_now
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@@ -42,7 +43,7 @@ class Wallets:
|
|||||||
self._wallets: Dict[str, Wallet] = {}
|
self._wallets: Dict[str, Wallet] = {}
|
||||||
self._positions: Dict[str, PositionWallet] = {}
|
self._positions: Dict[str, PositionWallet] = {}
|
||||||
self.start_cap = config['dry_run_wallet']
|
self.start_cap = config['dry_run_wallet']
|
||||||
self._last_wallet_refresh = 0
|
self._last_wallet_refresh: Optional[datetime] = None
|
||||||
self.update()
|
self.update()
|
||||||
|
|
||||||
def get_free(self, currency: str) -> float:
|
def get_free(self, currency: str) -> float:
|
||||||
@@ -165,15 +166,19 @@ class Wallets:
|
|||||||
for trading operations, the latest balance is needed.
|
for trading operations, the latest balance is needed.
|
||||||
:param require_update: Allow skipping an update if balances were recently refreshed
|
:param require_update: Allow skipping an update if balances were recently refreshed
|
||||||
"""
|
"""
|
||||||
now = datetime.now().timestamp()
|
now = dt_now()
|
||||||
if (require_update or (self._last_wallet_refresh + 3600 < now)):
|
if (
|
||||||
|
require_update
|
||||||
|
or self._last_wallet_refresh is None
|
||||||
|
or (self._last_wallet_refresh + timedelta(seconds=3600) < now)
|
||||||
|
):
|
||||||
if (not self._config['dry_run'] or self._config.get('runmode') == RunMode.LIVE):
|
if (not self._config['dry_run'] or self._config.get('runmode') == RunMode.LIVE):
|
||||||
self._update_live()
|
self._update_live()
|
||||||
else:
|
else:
|
||||||
self._update_dry()
|
self._update_dry()
|
||||||
if self._log:
|
if self._log:
|
||||||
logger.info('Wallets synced.')
|
logger.info('Wallets synced.')
|
||||||
self._last_wallet_refresh = datetime.now().timestamp()
|
self._last_wallet_refresh = dt_now()
|
||||||
|
|
||||||
def get_all_balances(self) -> Dict[str, Wallet]:
|
def get_all_balances(self) -> Dict[str, Wallet]:
|
||||||
return self._wallets
|
return self._wallets
|
||||||
|
|||||||
Reference in New Issue
Block a user