Started added timezone offset stuff

This commit is contained in:
Sam Germain 2021-10-09 12:24:25 -06:00
parent 795d51b68c
commit 057b048f31
2 changed files with 47 additions and 2 deletions

View File

@ -4,7 +4,7 @@ Freqtrade is the main module of this bot. It contains the class Freqtrade()
import copy import copy
import logging import logging
import traceback import traceback
from datetime import datetime, time, timezone, timedelta from datetime import datetime, time, timezone, timedelta, tzinfo
from math import isclose from math import isclose
from threading import Lock from threading import Lock
from typing import Any, Dict, List, Optional from typing import Any, Dict, List, Optional
@ -116,10 +116,29 @@ class FreqtradeBot(LoggingMixin):
self.update_funding_fees() self.update_funding_fees()
self.wallets.update() self.wallets.update()
local_timezone = datetime.now(
timezone.utc).astimezone().tzinfo
minutes = self.time_zone_minutes(local_timezone)
for time_slot in range(0, 24): for time_slot in range(0, 24):
t = str(time(time_slot)) t = str(time(time_slot, minutes))
schedule.every().day.at(t).do(update) 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
def notify_status(self, msg: str) -> None: def notify_status(self, msg: str) -> None:
""" """
Public method for users of this class (worker, etc.) to send notifications Public method for users of this class (worker, etc.) to send notifications

View File

@ -4,6 +4,7 @@
import logging import logging
import time import time
from copy import deepcopy from copy import deepcopy
# from datetime import tzinfo
from math import isclose from math import isclose
from unittest.mock import ANY, MagicMock, PropertyMock from unittest.mock import ANY, MagicMock, PropertyMock
@ -4302,3 +4303,28 @@ def test_update_funding_fees(mocker, default_conf, trading_mode, calls, time_mac
schedule.run_pending() schedule.run_pending()
assert freqtrade.update_funding_fees.call_count == calls 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'))