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 logging
import traceback
from datetime import datetime, time, timezone, timedelta
from datetime import datetime, time, timezone, timedelta, tzinfo
from math import isclose
from threading import Lock
from typing import Any, Dict, List, Optional
@ -116,10 +116,29 @@ 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)
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)
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:
"""
Public method for users of this class (worker, etc.) to send notifications

View File

@ -4,6 +4,7 @@
import logging
import time
from copy import deepcopy
# from datetime import tzinfo
from math import isclose
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()
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'))