![74f230646b9632c36ebad20968d62db4.png](https://i-blog.csdnimg.cn/blog_migrate/9d96625667ec634aceecd9965a98c1ea.jpeg)
想象一下,如果你知道股票在什么时候会上涨或下跌,然后把所有的钱投资或做空那只股票,你是不是就会成为炒股神话,成为大富翁了?!
![c4f02a403b8929c1d663045958525292.png](https://i-blog.csdnimg.cn/blog_migrate/7a5204d2ef875e40b0cb7818cc9e64e2.png)
不幸的是,这是不可能的,因为没有人知道未来。但是我们可以根据我们目前和过去所掌握的有关任何股票的信息进行估计猜测和有根据的预测。根据股票价格过去的走势和规律估计出的一种猜测称为技术分析。我们可以使用技术分析来预测股票的价格方向,但是,这不是100%准确的。事实上,一些交易员批评这些技术分析,并表示它在预测未来方面与占星术一样,都是骗人的。但也有人相信了技术分析,最终获得了一定的成功。
在我们的例子中,我们将使用的神经网络将利用技术分析来做出股市的预测。我们将要实现的特定神经网络称为递归神经网络-LSTM。
多变量输入
由于我们构建的最后一个RNN只能采用一个序列(过去的收盘价)来预测未来,我们想看看是否有可能向神经网络中添加更多的数据。也许这些其他的数据可以提高我们的价格预测?也许通过将指标加入到我们的数据集中,神经网络可以做出更准确的预测?这正是我们在接下来要完成的事。
在接下来的几个部分中,我们将构建一个新的递归神经网络,它不仅能够以技术分析指标的形式接收一条信息,而且能够以技术指标的形式接收多条信息,以便预测股票市场的未来价格。
价格历史和技术指标
为了使用神经网络预测股市,我们将利用 SPDR S & P 500( SPY )的价格。这将给我们一个全面的股市概述,并通过使用 RNN ,我们可能能够确定市场的方向。
我们需要下载历史价格记录
要检索我们神经网络的正确数据,你需要转到雅虎财务并下载 SPY 的价格。我们将下载五年的历史价格为 SPY 作为一个方便。csv 文件。
下载地址:https://finance.yahoo.com/quote/SPY/history?p=SPY
技术指标
下载了 SPY 的价格历史记录后,我们可以应用技术分析 Python库来生成技术指标值。
编码神经网络
导入库
让我们先导入一些库,开始编写我们的神经网络代码:
# 导入库
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from datetime import timedelta
from sklearn.preprocessing import RobustScaler
plt.style.use("bmh")
# 技术分析库
import ta
# 神经网络库
from keras.models import Sequential
from keras.layers import LSTM, Dense, Dropout
# 加载数据
df = pd.read_csv("SPY.csv")
首先,我们导入了一些常用的Python库(numpy、pandas等)。接下来,我们导入了先前用于创建BTC技术指标的技术分析库(在上面的文章中介绍)。然后,我们从Tensorflow Keras中导入了神经网络库。导入必要的库后,我们将加载 spy.csv 我们从雅虎财经下载的文件。
预处理数据
## 日期时间转换
df['Date'] = pd.to_datetime(df.Date)
# 设定索引
df.set_index('Date', inplace=True)
# 删除任何NaNs
df.dropna(inplace=True)
## 技术指标
# 添加所有指标
df = ta.add_all_ta_features(df, open="Open", high="High", low="Low", close="Close", volume="Volume", fillna=True)
# 除“关闭”和指标以外的所有内容
df.drop(['Open', 'High', 'Low',