def _get_regime_one_line(self, date): # check parameters if len(self.parameters) != 1: raise CoreError('Error in parameter') # build the cache if 'line' not in self.cache: self.cache['line'] = [] # check the cache if len(self.cache['line']) < 1: # compute the first moving average current_filter = self._get_first_filter(date) self.cache['line'].insert(0, current_filter) return Regime.FLAT # compute filter current_filter = self._get_current_filter(date) if self.building_type == BuildingType.ONE_LINE_SLOPE: slope = current_filter - self.cache['line'][0] current_regime = RegimeHelper.get_regime(self.building_type, date, line=slope) elif self.building_type == BuildingType.ONE_LINE_VALUE: current_regime = RegimeHelper.get_regime(self.building_type, date, line=current_filter, instrument=self.instrument.get_adjusted_close_value(date)) # update cache self.cache['line'].pop() self.cache['line'].insert(0, current_filter) return current_regime
def _get_regime_one_line(self, date): # check parameters if len(self.parameters) != 1: raise CoreError('Error in parameter') # build the cache if 'line' not in self.cache: self.cache['line'] = [] # check the cache if len(self.cache['line']) < 1: self.cache['line'].insert(0, self.instrument.get_adjusted_close_value(date)) return Regime.FLAT # get filter input values current_value = self.instrument.get_adjusted_close_value(date) last_filter = self.cache['line'][0] # compute filter current_alpha = self._get_alpha(date, self.parameters[0]) current_filter = current_alpha*current_value + (1.-current_alpha)*last_filter if self.building_type == BuildingType.ONE_LINE_SLOPE: slope = current_filter - last_filter current_regime = RegimeHelper.get_regime(self.building_type, date, line=slope) elif self.building_type == BuildingType.ONE_LINE_VALUE: current_regime = RegimeHelper.get_regime(self.building_type, date, line=current_filter, instrument=self.instrument.get_adjusted_close_value(date)) # update cache self.cache['line'].pop() self.cache['line'].insert(0, current_filter) return current_regime
def _get_regime_one_line(self, date, date_1, date_2): # check parameters if len(self.parameters) != 1: raise CoreError('Error in parameter') # build the cache if 'line' not in self.cache: self.cache['line'] = [] # check the cache if len(self.cache['line']) < 2: self.cache['line'].insert(0, self.instrument.get_adjusted_close_value(date)) return Regime.FLAT # get filter input values current_value = self.instrument.get_adjusted_close_value(date) last_value = self.instrument.get_adjusted_close_value(date_1) before_value = self.instrument.get_adjusted_close_value(date_2) last_filter = self.cache['line'][0] before_filter = self.cache['line'][1] # compute filter if self.indicator_type == IndicatorType.BUTTERWORTH: current_filter = DigitalFilter.get_butterworth_lpf_value(self.parameters[0], current_value, last_value, before_value, last_filter, before_filter) elif self.indicator_type == IndicatorType.BESSEL: current_filter = DigitalFilter.get_bessel_lpf_value(self.parameters[0], current_value, last_value, before_value, last_filter, before_filter) elif self.indicator_type == IndicatorType.CHEBYSCHEV: current_filter = DigitalFilter.get_chebyschev_lpf_value(self.parameters[0], current_value, last_value, before_value, last_filter, before_filter) if self.building_type == BuildingType.ONE_LINE_SLOPE: slope = current_filter - last_filter current_regime = RegimeHelper.get_regime(self.building_type, date, line=slope) elif self.building_type == BuildingType.ONE_LINE_VALUE: current_regime = RegimeHelper.get_regime(self.building_type, date, line=current_filter, instrument=self.instrument.get_adjusted_close_value(date)) # update cache self.cache['line'].pop() self.cache['line'].insert(0, current_filter) return current_regime