weekday daytime dailybars ind support
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
from v2realbot.strategyblocks.indicators.custom.classes.indicatorbase import IndicatorBase
|
||||
from datetime import datetime, time
|
||||
from v2realbot.utils.utils import zoneNY
|
||||
|
||||
class DayTime(IndicatorBase):
|
||||
def __init__(self, state):
|
||||
super().__init__(state)
|
||||
#TODO toto v initu dynamicky
|
||||
# Convert market open/close times to seconds since epoch
|
||||
self.market_open_time = self._time_to_seconds_since_epoch(time(9, 30), state)
|
||||
self.market_close_time = self._time_to_seconds_since_epoch(time(16, 0), state)
|
||||
# Total market duration in seconds
|
||||
self.total_market_duration = self.market_close_time - self.market_open_time
|
||||
|
||||
def _time_to_seconds_since_epoch(self, market_time, state):
|
||||
# Convert a time object to seconds since epoch for a typical day (e.g., today)
|
||||
today = datetime.fromtimestamp(state.time).astimezone(zoneNY).date()
|
||||
market_datetime = zoneNY.localize(datetime.combine(today, market_time))
|
||||
return market_datetime.timestamp()
|
||||
|
||||
def next(self, time):
|
||||
current_timestamp = time[-1]
|
||||
# Check if the current time is within market hours
|
||||
if self.market_open_time <= current_timestamp <= self.market_close_time:
|
||||
time_since_open = current_timestamp - self.market_open_time
|
||||
normalized_time = time_since_open / self.total_market_duration
|
||||
return normalized_time
|
||||
else:
|
||||
return 0
|
||||
@@ -0,0 +1,12 @@
|
||||
from v2realbot.strategyblocks.indicators.custom.classes.indicatorbase import IndicatorBase
|
||||
from datetime import datetime, time
|
||||
from v2realbot.utils.utils import zoneNY
|
||||
|
||||
#do budoucna predelat na staticky indikator
|
||||
class WeekDay(IndicatorBase):
|
||||
def __init__(self, state):
|
||||
super().__init__(state)
|
||||
self.weekday = datetime.fromtimestamp(state.time).astimezone(zoneNY).weekday()
|
||||
|
||||
def next(self):
|
||||
return self.weekday
|
||||
@@ -61,7 +61,11 @@ def target(state, params, name):
|
||||
if split_index == -1:
|
||||
return -2, "for second based window length, source is required in format bars|close"
|
||||
dict_name = source[:split_index]
|
||||
time_series = getattr(state, dict_name)["time"]
|
||||
if dict_name == "bars":
|
||||
#u baru je time v datetime, proto bereme udpated
|
||||
time_series = getattr(state, dict_name)["updated"]
|
||||
else:
|
||||
time_series = getattr(state, dict_name)["time"]
|
||||
state.cache[name]["time_series"] = time_series
|
||||
else:
|
||||
time_series = state.cache[name]["time_series"]
|
||||
|
||||
Reference in New Issue
Block a user