Files
v2realbot/v2realbot/utils/directive_utils.py
David Brázda be93c17848 retreat commit
2023-10-09 09:15:52 +02:00

41 lines
1.7 KiB
Python

#utils pro práci s direktivami (napr. stratvars)
#pomocna funkce pro vytvoreni podminkoveho directory z direktiv v novem formatu
# direktiva v CONDITIONS sekci u daneho SIGNALU
#
# stratvars.signals.trendfollow.conditions
# slope30.short_if_below = 0.3
# slope20.AND.lonf_if_above = 2
# slope30.AND.ACTION_if_above
# ACTION: long_, short_, exit_ (action)
# AND: optional operator AND/OR
#funkce ktera z dane sekce direktiv vraci adu nakonfigurovanych podminek pro danou akci (work_dict)
#pouziti: napr. ze signals.trendfollow.conditions chci akce short (pripadne activate, exit ...)
def get_conditions_from_configuration(action: str, section: dict):
reslist = dict(AND=[], OR=[])
for indname, condition in section.items():
#prvnim je vzdy indikator na ktery se direktiva odkazuje, tzn. projedeme vsechny tyto indikatory
# #pokud je zde neco jineho nez dict, tak ignorujeme
if not isinstance(condition, dict):
continue
for directive, value in condition.items():
if directive.startswith(action):
reslist["OR"].append((indname, directive, value))
if directive == "AND":
#vsechny buy direktivy, ktere jsou pod AND
for key, val in value.items():
if key.startswith(action):
reslist["AND"].append((indname, key, val))
if directive == "OR" :
#vsechny buy direktivy, ktere jsou pod OR
for key, val in value.items():
if key.startswith(action):
reslist["OR"].append((indname, key, val))
#vysledek: v kazdem klici truple (indname, volba, hodnota)
return reslist