之前对某支个股进行预测:LSTM估计股票收盘价
这次尝试建立适用于多支股票的模型。思路是使用多支股票训练一个模型,用前30个交易日的数据预测下一天的收盘价,每支股票只贡献一个样本。
先收集股票数据
import tushare as ts
pro = ts.pro_api('f3bbc97d0ffbbed8666e6f7c82e712165950d048987f5d6cfbf1e0ce')
#查询当前所有正常上市交易的上交所股票列表
code_list = pro.stock_basic(exchange='SSE', list_status='L', fields='ts_code,symbol,name')
print(code_list)
for i in range(1400,len(code_list)):
print(code_list.iloc[i,0])
data = pro.daily(ts_code=code_list.iloc[i,0], start_date='20180801', end_date='20180912')
data.to_excel('C:/Users/Administrator/Desktop/data/' + code_list.iloc[i,0] + '.xlsx')
然后预处理数据
import pandas as pd
import os
def read_xls(path):
data = []
for file in os.walk(path):
for each_list in file[2]:
#os.walk()函数返回三个参数:路径,子文件夹,路径下的文件,利用字符串拼接file[0]和file[2]得到文件的路径
file_path=file[0]+"/"+each_list
f = open(file_path,'rb')
df = pd.read_excel(f)
df1 = df[['open','high','low','close','vol']] #保留需要的features
df1 = df1[::-1] #倒序,使日期靠前的在前面
df1.reset_index(drop=True, inplace=True) #把每行的索引改为“0、1、2……”
data.append(df1) #把一支股票的数据加到data里面
f.close()
return data
xpath = r"C:\Users\Administrator\Desktop\data"
data = read_xls(xpath)
import numpy as np
data_new = data.copy() #copy创建一个新的list
#删除这31天里停过市的股票
for i in range(len(data)):
try:
if len(data_new[i]) < 31:
del data_ne