89 lines
4.6 KiB
Python
89 lines
4.6 KiB
Python
from v2realbot.strategy.base import StrategyState
|
|
from v2realbot.strategy.StrategyOrderLimitVykladaciNormalizedMYSELL import StrategyOrderLimitVykladaciNormalizedMYSELL
|
|
from v2realbot.enums.enums import RecordType, StartBarAlign, Mode, Account, Followup
|
|
from v2realbot.common.PrescribedTradeModel import Trade, TradeDirection, TradeStatus
|
|
from v2realbot.utils.utils import isrising, isfalling,zoneNY, price2dec, print, safe_get, is_still, is_window_open, eval_cond_dict, crossed_down, crossed_up, crossed, is_pivot, json_serial, pct_diff, create_new_bars, slice_dict_lists
|
|
from v2realbot.utils.directive_utils import get_conditions_from_configuration
|
|
#import mlroom.utils.mlutils as ml
|
|
from v2realbot.common.model import SLHistory
|
|
from v2realbot.config import KW, MODEL_DIR, _ml_module_loaded
|
|
from uuid import uuid4
|
|
from datetime import datetime
|
|
#import random
|
|
import orjson
|
|
import numpy as np
|
|
#from icecream import install, ic
|
|
from rich import print as printanyway
|
|
from threading import Event
|
|
from traceback import format_exc
|
|
|
|
def load_ml_model(modelname, modelversion, MODEL_DIR):
|
|
global ml
|
|
import mlroom.utils.mlutils as ml
|
|
return ml.load_model(modelname, modelversion, None, MODEL_DIR)
|
|
|
|
def initialize_dynamic_indicators(state):
|
|
#pro vsechny indikatory, ktere maji ve svych stratvars TYPE inicializujeme
|
|
|
|
##ßprintanyway(state.vars, state)
|
|
dict_copy = state.vars.indicators.copy()
|
|
for indname, indsettings in dict_copy.items():
|
|
#inicializace indikatoru na dane urovni
|
|
output = safe_get(indsettings, 'output', "bar")
|
|
match output:
|
|
case "bar":
|
|
indicators_dict = state.indicators
|
|
case "tick":
|
|
indicators_dict = state.cbar_indicators
|
|
case _:
|
|
raise(f"ind output must be bar or tick {indname}")
|
|
|
|
#inicializujeme vzdy main
|
|
indicators_dict[indname] = []
|
|
#inicializujeme multioutputs
|
|
returns = safe_get(indsettings, 'returns', [])
|
|
for ind_name in returns:
|
|
indicators_dict[ind_name] = []
|
|
#pokud ma MA_length incializujeme i MA variantu
|
|
if safe_get(indsettings, 'MA_length', False):
|
|
#inicializujeme bud v hlavni serii
|
|
if len(returns)==0:
|
|
indicators_dict[indname+"MA"] = []
|
|
#nebo v multivystupech
|
|
else:
|
|
for ind_name in returns:
|
|
indicators_dict[ind_name+"MA"] = []
|
|
|
|
#Specifické Inicializace dle type
|
|
for option,value in list(indsettings.items()):
|
|
#specifika pro slope
|
|
if option == "type":
|
|
if value == "slope":
|
|
#inicializujeme statinds (pro uhel na FE)
|
|
state.statinds[indname] = dict(minimum_slope=safe_get(indsettings, 'minimum_slope', -1), maximum_slope=safe_get(indsettings, 'maximum_slope', 1))
|
|
if value == "custom":
|
|
#pro typ custom inicializujeme promenne
|
|
state.vars.indicators[indname]["last_run_time"] = None
|
|
state.vars.indicators[indname]["last_run_index"] = None
|
|
if option == "subtype":
|
|
if value == "model":
|
|
active = safe_get(indsettings, 'active', True)
|
|
if active is False:
|
|
continue
|
|
#load the model
|
|
modelname = safe_get(indsettings["cp"], 'name', None)
|
|
modelversion = safe_get(indsettings["cp"], 'version', "1")
|
|
if modelname is not None:
|
|
state.vars.loaded_models[modelname] = load_ml_model(modelname, modelversion, MODEL_DIR)
|
|
# state.vars.loaded_models[modelname] = ml.load_model(modelname, modelversion, None, MODEL_DIR)
|
|
if state.vars.loaded_models[modelname] is not None:
|
|
printanyway(f"model {modelname} loaded")
|
|
else:
|
|
printanyway(f"ERROR model {modelname} NOT loaded")
|
|
#pro conditional indikatory projedeme podminky [conditions] a pro kazdou pripravime (cond_dict)
|
|
if value == "conditional":
|
|
conditions = state.vars.indicators[indname]["cp"]["conditions"]
|
|
for condname,condsettings in conditions.items():
|
|
state.vars.indicators[indname]["cp"]["conditions"][condname]["cond_dict"] = get_conditions_from_configuration(action=KW.change_val+"_if", section=condsettings)
|
|
printanyway(f'creating workdict for {condname} value {state.vars.indicators[indname]["cp"]["conditions"][condname]["cond_dict"]}')
|