diff --git a/stock/util/Stock2Vector.py b/stock/util/Stock2Vector.py index 5244a57..f5500c4 100644 --- a/stock/util/Stock2Vector.py +++ b/stock/util/Stock2Vector.py @@ -285,8 +285,8 @@ class Stock2Vector(HTS): Y = np.asarray(Y, dtype='int64') return X, Y - def getVectorData(self, data, VECTOR_SIZE = 32): - return self.getVectorData_2(data, VECTOR_SIZE) + def getVectorData(self, data, VECTOR_SIZE = 32, H_VECTOR_SIZE = 32, W_VECTOR_SIZE = 200): + return self.getVectorData_2(data, H_VECTOR_SIZE, W_VECTOR_SIZE) def getVectorData_1(self, data, VECTOR_SIZE): df = self.buySellChecker.analyze(data) @@ -329,39 +329,83 @@ class Stock2Vector(HTS): batch_Y = np.asarray(batch_Y, dtype='int64') return batch_X, batch_Y - def getVectorData_2(self, data, VECTOR_SIZE = 32): + def getVectorData_2(self, data, H_VECTOR_SIZE = 32, W_VECTOR_SIZE = 200): df = self.buySellChecker.analyze(data) - # avg10, 볼린져밴드 상단과 하단의 차이, rsi, avg3만 이용한다. - # channel1: avg10, channel2: diff_upper_lower, channel3: abs_avg_2, channel4: abs_avg_3 - avg3 = df['avg3'].tolist() - avg9 = df['avg9'].tolist() - avg12 = df['avg9'].tolist() - avg24 = df['avg9'].tolist() - - diff_upper_lower = df['diff_upper_lower'].tolist() + macd = df['macd'].tolist() + diff_avg27 = df['diff_avg27'].tolist() + diff_avg3_avg27 = df['diff_avg3_avg27'].tolist() + diff_avg3_avg54 = df['diff_avg3_avg54'].tolist() + diff_avg6_avg27 = df['diff_avg6_avg27'].tolist() + diff_avg6_avg54 = df['diff_avg6_avg54'].tolist() + diff_avg9_avg27 = df['diff_avg9_avg27'].tolist() + diff_avg9_avg54 = df['diff_avg9_avg54'].tolist() + diff_avg12_avg27 = df['diff_avg12_avg27'].tolist() + diff_avg12_avg54 = df['diff_avg12_avg54'].tolist() + diff_change_lead1 = df['diff_change_lead1'].tolist() + diff_open_lead1 = df['diff_open_lead1'].tolist() + diff_close_lead1 = df['diff_close_lead1'].tolist() + diff_high_lead1 = df['diff_high_lead1'].tolist() + diff_low_lead1 = df['diff_low_lead1'].tolist() rsi = df['rsi'].tolist() + rsis = df['rsis'].tolist() + diff_avg54 = df['diff_avg54'].tolist() + diff_change_base = df['diff_change_base'].tolist() + diff_base_lead1 = df['diff_base_lead1'].tolist() + diff_open_base = df['diff_open_base'].tolist() + diff_close_base = df['diff_close_base'].tolist() + diff_high_base = df['diff_high_base'].tolist() + diff_low_base = df['diff_low_base'].tolist() + abs_avg_1 = df['abs_avg_1'].tolist() + abs_avg_2 = df['abs_avg_2'].tolist() abs_avg_3 = df['abs_avg_3'].tolist() - - size = len(avg10) - batch_X, batch_Y = [], [] - X = np.zeros((4, VECTOR_SIZE, VECTOR_SIZE)) + abs_avg_4 = df['abs_avg_4'].tolist() + abs_avg_5 = df['abs_avg_5'].tolist() + diff_upper_lower = df['diff_upper_lower'].tolist() + diff_open_lower = df['diff_open_lower'].tolist() + diff_close_upper = df['diff_close_upper'].tolist() label = df['label'].tolist() - for i in range(VECTOR_SIZE * VECTOR_SIZE - 1, size): - w, h = 0, 0 - for j in range(i - VECTOR_SIZE * VECTOR_SIZE + 1, i + 1): - X[0, h, w] = avg10[j] - X[1, h, w] = diff_upper_lower[j] - X[2, h, w] = abs_avg_3[j] - X[3, h, w] = rsi[j] - w += 1 - if w >= VECTOR_SIZE: - w = 0 - h += 1 - if h >= VECTOR_SIZE: - h = 0 - batch_X.append(X) - batch_Y.append(label[i]) + + size = len(label) + batch_X, batch_Y = [], [] + X = np.zeros((H_VECTOR_SIZE, W_VECTOR_SIZE)) + for i in range(W_VECTOR_SIZE - 1, size): + for w in range(i - W_VECTOR_SIZE + 1, i + 1): + X[0, w] = macd[w] + X[1, w] = diff_avg27[w] + X[2, w] = diff_avg3_avg27[w] + X[3, w] = diff_avg3_avg54[w] + X[4, w] = diff_avg6_avg27[w] + X[5, w] = diff_avg6_avg54[w] + X[6, w] = diff_avg9_avg27[w] + X[7, w] = diff_avg9_avg54[w] + X[8, w] = diff_avg12_avg27[w] + X[9, w] = diff_avg12_avg54[w] + X[10, w] = diff_change_lead1[w] + X[11, w] = diff_open_lead1[w] + X[12, w] = diff_close_lead1[w] + X[13, w] = diff_high_lead1[w] + X[14, w] = diff_low_lead1[w] + X[15, w] = rsi[w] + X[16, w] = rsis[w] + X[17, w] = diff_avg54[w] + X[18, w] = diff_change_base[w] + X[19, w] = diff_base_lead1[w] + X[20, w] = diff_open_base[w] + X[21, w] = diff_close_base[w] + X[22, w] = diff_high_base[w] + X[23, w] = diff_low_base[w] + X[24, w] = abs_avg_1[w] + X[25, w] = abs_avg_2[w] + X[26, w] = abs_avg_3[w] + X[27, w] = abs_avg_4[w] + X[28, w] = abs_avg_5[w] + X[29, w] = diff_upper_lower[w] + X[30, w] = diff_open_lower[w] + X[31, w] = diff_close_upper[w] + + batch_X.append(X) + batch_Y.append(label[i]) batch_X = np.asarray(batch_X) batch_Y = np.asarray(batch_Y, dtype='int64') @@ -407,7 +451,7 @@ if __name__ == "__main__": stock_codes = { # 252670 # 122630 - "252670": ['20220729'], + "252670": ['20220801', '20220802', '20220803', '20220804', '20220805'] } for stock_code in stock_codes: