def vote(self, code, day): features = [] values = db_helper.select(self.query_kpi_fn, (code, day, 30, DMA)) if len(values) < 30: return features values = np.array(values)[::-1] dma_values = np.array(list(map(lambda x:np.float(x.dma), values))) ama_values = np.array(list(map(lambda x:np.float(x.ama), values))) bt, l = zero_line.breakthrough(dma_values[-10:]) if bt and l <= 3: features.append(self.BREAK_ZERO) if ins.match(dma_values[-3:], ama_values[-3:]) == 1: features.append(self.GOOD_CROSS) return features
def vote(self, code, day): features = [] values = db_helper.select(query_kpi_fn, (code, day, 30)) if len(values) < 30: return features values = np.array(values)[::-1] pdi_lines = values[:, 1].astype(float) mdi_lines = values[:, 2].astype(float) adx_lines = values[:, 3].astype(float) adxr_lines = values[:, 4].astype(float) bt, l = zero_line.breakthrough(adx_lines[-10:], 30) if bt and l <= 3: features.append(self.BREAK_ZERO) if ins.match(pdi_lines[-6:], mdi_lines[-6:]) == 1 and ins.match(adx_lines[-3:], adxr_lines[-3:]) == 1: features.append(self.GOOD_CROSS) return features
def vote(self, code, day): features = [] values = db_helper.select(self.query_kpi_fn, (code, day, 30, BOLL)) k_values = db_helper.select(self.query_kpi_fn, (code, day, 30, TradingDataDaily)) if len(values) < 30 or len(k_values) < 30 or len(values) != len( k_values): return features values = np.array(values)[::-1] k_values = np.array(k_values)[::-1] md_values = np.array(list(map(lambda x: np.float(x.md), values))) close_values = np.array( list(map(lambda x: np.float(x.close), k_values))) bt, l = zero_line.breakthrough(close_values, md_values) if bt and l <= 3: features.append(self.BREAK_ZERO) return features
def vote(self, code, day): features = [] values = db_helper.select(self.query_kpi_fn, (code, day, 30, EMV)) if len(values) < 30: return features values = np.array(values)[::-1] emv_values = np.array(list(map(lambda x: np.float(x.emv), values))) if trend.is_uptrend(emv_values[-10:]): k_values = db_helper.select(self.query_kpi_fn, (code, day, 10, TradingDataDaily)) if len(k_values) == 10: k_values = np.array(k_values)[::-1] close_values = np.array( list(map(lambda x: np.float(x.close), k_values))) if trend.is_downtrend(close_values): features.append(self.BOTTOM_DEVIATION) bt, l = zero_line.breakthrough(emv_values[-10:]) if bt and l <= 3: features.append(self.BREAK_ZERO) return features
def vote(self, code, day): features = [] values = db_helper.select(query_roc_fn, (code, day, 30)) if len(values) < 30: return features values = np.array(values)[::-1] roc_values = values[:, 1].astype(float) rocma_values = values[:, 2].astype(float) if ins.match(roc_values[-3:], rocma_values[-3:]) == 1: features.append(self.GOOD_CROSS) if trend.is_uptrend(roc_values): k_values = db_helper.select(query_k_fn, (code, day, 30)) if len(k_values) == 30: k_values = np.array(k_values)[::-1] close_values = k_values[:, 0].astype(float) if trend.is_downtrend(close_values): features.append(self.BOTTOM_DEVIATION) bt, l = zero_line.breakthrough(roc_values, 0) if bt and l <= 3: features.append(self.BREAK_ZERO) return features