Started added timezone offset stuff
This commit is contained in:
parent
795d51b68c
commit
057b048f31
@ -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
|
||||||
|
@ -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'))
|
||||||
|
Loading…
Reference in New Issue
Block a user