from py_jftech import component, autowired from api import PortfoliosRisk, SignalType, RoboExecutor from rebalance.base_signal import BaseRebalanceSignal from rebalance.dao import robo_rebalance_signal as rrs @component(bean_name='init') class InitSignalBuilder(BaseRebalanceSignal): @autowired(names={'executor': RoboExecutor.use_name()}) def __init__(self, executor: RoboExecutor = None): super(InitSignalBuilder, self).__init__() self._executor = executor @property def signal_type(self) -> SignalType: return SignalType.INIT def get_signal(self, day, risk: PortfoliosRisk): signal = rrs.get_last_one(max_date=day, risk=risk, type=SignalType.INIT) if signal: return None if signal['effective'] else signal return super().get_signal(self._executor.start_date, risk) def is_trigger(self, day, risk: PortfoliosRisk) -> bool: return True