class ChanKLU: def __init__(self, time, open, high, low, close, volume): # _time, _close, _open, _high, _low, _extra_info={} self.kl_type = None self.time = time self.close = close self.open = open self.high = high self.low = low self.volume = volume self.idx = 0 self.index = 0 self.macd = 0 self.signal = 0 self.macdhist = 0 self.ma5 = 0 self.ma10 = 0 self.ma30 = 0 self.ma50 = 0 self.ma200 = 0 self.ma250 = 0 self.rsi = 0 self.volume_ratio = 0 def set_idx(self, idx): self.idx = idx self.index = idx def set_indicators(self, item): self.macd = float(item['macd']) if 'macd' in item and item['macd'] else 0 self.signal = float(item['macdsignal']) if 'macdsignal' in item and item['macdsignal'] else 0 self.macdhist = float(item['macdhist']) if 'macdhist' in item and item['macdhist'] else 0 self.ma5 = float(item['ma5']) if 'ma5' in item and item['ma5'] else 0 self.ma10 = float(item['ma10']) if 'ma10' in item and item['ma10'] else 0 self.ma30 = float(item['ma30']) if 'ma30' in item and item['ma30'] else 0 # 安全检查 ma250、ma50 和 ma200 self.ma250 = float(item['ma250']) if 'ma250' in item and item['ma250'] else 0 self.ma50 = float(item['ma50']) if 'ma50' in item and item['ma50'] else 0 self.ma200 = float(item['ma200']) if 'ma200' in item and item['ma200'] else 0 self.rsi = float(item['rsi']) if 'rsi' in item and item['rsi'] else 0 self.volume_ratio = float(item['volume_ratio']) if 'volume_ratio' in item and item['volume_ratio'] else 0 def get_feature_data(self): features = dict() features['klu_close'] = self.close features['klu_open'] = self.open features['klu_high'] = self.high features['klu_low'] = self.low features['klu_volume'] = self.volume features['klu_index'] = self.index features['klu_macd'] = self.macd features['klu_signal'] = self.signal features['klu_macdhist'] = self.macdhist features['klu_ma5'] = self.ma5 features['klu_ma10'] = self.ma10 features['klu_ma30'] = self.ma30 features['klu_ma50'] = self.ma50 features['klu_ma200'] = self.ma200 features['klu_ma250'] = self.ma250 features['klu_rsi'] = self.rsi features['klu_volume_ratio'] = self.volume_ratio return features