关于机器学习:使用R和神经网络(神经网络)使用以前的价格预测价格

Predicting price using previous prices with R and Neural Networks (neuralnet)

在R神经网络页面中,我使用神经网络函数来尝试预测股票价格。

训练数据包含高,低,开,关列。

1
2
myformula <- close ~ High+Low+Open
neuralnet(myformula,data=train_,hidden=c(5,3),linear.output=T)

我的问题,鉴于以下数据示例,您可以告诉我该公式会是什么样子。

我有一个表格,其中列为"高","低","打开","关闭",它有两行值,每行代表一天的蜡烛棒。 因此,数据中的两行是前两天的蜡烛棒。我的目标是预测下一根蜡烛是什么,即"开","高","低","关闭"给出前两个烛台。

我的神经网络将一次呈现以前的dtata 1蜡烛棒。 我想知道下一个烛台是什么,所以我的R公式会是什么样子。

谢谢
让我知道


My neural network will be presented with the previous data one candle stick at a time. I want to know what the next candlestick is, so what would my R formula look like.

在前馈神经网络*中,您必须指定要用于预测的要素和要预测的目标。在上面的示例中,功能是例如prev_close,目标是close。正如您在训练数据中看到的那样,您还没有prev_close,这就是我的答案的全部要点,您需要首先正确地制定问题。

如果只有close,则不能为此训练FF NN的公式。您需要创建prev_close,然后公式将close ~ prev_close

*可以在序列上训练递归神经网络(RNN),并根据输入序列输出预测,但这是一个整体'其他蠕虫病毒

简单示例:根据最近2个近似值预测收盘价

我编写了这个荒谬简单的例子,只是为了说明问题的表达,它预测了close,基于最后两个close值。我选择了一个带有1个神经元的隐藏层。我已设置linear.output=TRUE,因为我们正在预测连续值(如前所述的回归问题,并且在neuralnet文档中声明如果该值为TRUE则不存在激活函数act.fct)

*如果你用这个交易你肯定会丢失你的衬衫。这只是为了说明如何在神经网络中构建这样的预测问题。不要将它用于真实。

问题的表述

我想澄清的一点是,如果列中有价格,则必须为预测创建要素

1
prev_close_1 | prev_close_2 | close

对NN提出的问题是基于prev_close_1prev_close_2预测close,因此公式close ~ prev_close_1 + prev_close_2

这是网络架构

enter image description here

注意作为先前关闭值的输入和输出:预测的关闭值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
library(neuralnet)

N = 10
prices <- data.frame(close=1:N) # Dummy straight line uptrend for N periods

print(prices)

shift <- function(x, n){
  c(x[-(seq(n))], rep(NA, n))
}

# Form the training dataframe
train <- data.frame(
  prev_close_1=prices$close,
  prev_close_2=shift(prices$close, 1),
  close=shift(prices$close, 2)
)

# When shifting the columns for time lag effect, some rows will have NAs
# Let's remove NAs
train <- na.omit(train)

print(train)

nn <- neuralnet(
  formula=close ~ prev_close_1 + prev_close_2,
  data=train,
  hidden=c(1), # 1 neuron in a single hidden layer
  linear.output=TRUE # we want regression not classification
)

print(prediction(nn))
plot(nn)

虚拟价格看起来像什么

这就是你所拥有的,它只是历史股票价格

1
2
3
4
5
6
7
8
9
10
11
   close
1      1
2      2
3      3
4      4
5      5
6      6
7      7
8      8
9      9
10    10

NN受过什么训练

这就是您所需要的,功能和目标,尝试在下面的训练数据框中形成行以了解移位/滞后。

1
2
3
4
5
6
7
8
9
prev_close_1 prev_close_2 close
1            1            2     3
2            2            3     4
3            3            4     5
4            4            5     6
5            5            6     7
6            6            7     8
7            7            8     9
8            8            9    10

NN预测的是什么

1
2
3
4
5
6
7
8
9
  prev_close_1 prev_close_2       close
1            1            2 2.994291864
2            2            3 4.017828301
3            3            4 5.002914789
4            4            5 5.968855729
5            5            6 6.978644849
6            6            7 8.030810042
7            7            8 9.051063456
8            8            9 9.945595495