From 3b962433fbae2ce0b47ec3638614b2fc8066a16b Mon Sep 17 00:00:00 2001 From: Sam Germain Date: Sat, 9 Oct 2021 17:48:53 -0600 Subject: [PATCH] Switched shcedule to perform every 15 minutes --- freqtrade/freqtradebot.py | 26 +++++--------------------- tests/test_freqtradebot.py | 29 ++--------------------------- 2 files changed, 7 insertions(+), 48 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index f104de56f..50e5c1415 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -116,28 +116,12 @@ class FreqtradeBot(LoggingMixin): self.update_funding_fees() self.wallets.update() - local_timezone = datetime.now( - timezone.utc).astimezone().tzinfo - minutes = self.time_zone_minutes(local_timezone) + # TODO: This would be more efficient if scheduled in utc time, and performed at each + # TODO: funding interval, specified by funding_fee_times on the exchange classes for time_slot in range(0, 24): - t = str(time(time_slot, minutes)) - schedule.every().day.at(t).do(update) - - def time_zone_minutes(self, local_timezone): - """ - Returns the minute offset of a timezone - :param local_timezone: The operating systems timezone - """ - local_time = datetime.now(local_timezone) - offset = local_time.utcoffset().total_seconds() - half_hour_tz = (offset * 2) % 2 != 0.0 - quart_hour_tz = (offset * 4) % 4 != 0.0 - if quart_hour_tz: - return 45 - elif half_hour_tz: - return 30 - else: - return 0 + for minutes in [0, 15, 30, 45]: + t = str(time(time_slot, minutes)) + schedule.every().day.at(t).do(update) def notify_status(self, msg: str) -> None: """ diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 9b83c8595..a69414dfc 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -4285,8 +4285,8 @@ def test_get_valid_price(mocker, default_conf_usdt) -> None: @pytest.mark.parametrize('trading_mode,calls,t1,t2', [ (TradingMode.SPOT, 0, "2021-09-01 00:00:00", "2021-09-01 08:00:00"), (TradingMode.MARGIN, 0, "2021-09-01 00:00:00", "2021-09-01 08:00:00"), - (TradingMode.FUTURES, 8, "2021-09-01 00:00:01", "2021-09-01 08:00:00"), - (TradingMode.FUTURES, 9, "2021-08-31 23:59:59", "2021-09-01 08:00:01"), + (TradingMode.FUTURES, 32, "2021-09-01 00:00:01", "2021-09-01 08:00:00"), + (TradingMode.FUTURES, 33, "2021-08-31 23:59:59", "2021-09-01 08:00:01"), ]) def test_update_funding_fees(mocker, default_conf, trading_mode, calls, time_machine, t1, t2): @@ -4303,28 +4303,3 @@ def test_update_funding_fees(mocker, default_conf, trading_mode, calls, time_mac schedule.run_pending() assert freqtrade.update_funding_fees.call_count == calls - - -@pytest.mark.parametrize('tz,minute_offset', [ - ('IST', 30), - ('ACST', 30), - ('ACWST', 45), - ('ACST', 30), - ('ACDT', 30), - ('CCT', 30), - ('CHAST', 45), - ('NST', 30), - ('IST', 30), - ('AFT', 30), - ('IRST', 30), - ('IRDT', 30), - ('MMT', 30), - ('NPT', 45), - ('MART', 30), -]) -def test_time_zone_minutes(mocker, default_conf, tz, minute_offset): - patch_RPCManager(mocker) - patch_exchange(mocker) - freqtrade = get_patched_freqtradebot(mocker, default_conf) - return freqtrade - # freqtrade.time_zone_minutes(tzinfo('IST'))