我建议一劳永逸地消除这些疑虑,并将话语从``可以预测或不能预测''的领域转移到``预测好坏''的领域。我们将以简单,快速和直观的方式进行操作。我将提供一个现成的工具,每个人都可以在计算机上得到结果。免费的GoogleColaboratory项目将为我们提供帮助。这是一个开放的协作开发平台,所有计算都在Google服务器上进行,所有交互均通过浏览器进行,无需注册。
我们工作的代码已经打开,并且已经加载到GoogleColab中。为每个人训练神经网络的结果将是个体的。这是因为起始权重是随机分布的,并且结果略有不同。另外,请记住,报价历史是一个非常嘈杂的数据,因此训练的质量很低,但足以了解神经网络如何预测。预测应大致处于良好指标的水平。
我们唯一会缩短路径的地方是收集有关交易对历史的数据。收集是由MetaTrader5的应用程序执行的,过程并不复杂,但是需要与MetaTrader5中的测试人员合作的技能。详细的说明将导致出现在单独的文章中,因此,我们使用欧元/美元货币对的预先准备的数据(对于使用MT5的用户,在文章末尾有指向Expert的链接)。当我们继续进行真实市场的测试时,可以确保预先准备的数据不会“窥视”并且在最后阶段不建议神经网络。
开始吧 ...
Google庆祝活动
您可以在此链接中找到我们在GoogleColab中的“笔记本电脑” 。不要忘记先登录您的Google(或Gmail)帐户。
复制“笔记本电脑”给自己。
现在,您需要从头到尾依次运行所有块。
1.安装库
此步骤将安装TensorFlow和其他库。该过程将自行结束,无需执行任何操作。
2.加载并准备训练数据
在此阶段,将加载数据集,并准备用于训练和测试的单独数据集。从2015年初到今天为EURUSD对收集了数据集,数据收集步骤是M6烛台。最近2周-测试现场。数据集中的数据是数十万行的集合,每一行都是这样的
0.32,0.26,0.00,0.43 ... 0.66,0.25,0.24,0.05,0,1,1600144440,1.189240
预测变量由逗号分隔,最后是字段3和4-这是趋势发展的正确答案(0.1-向下; 1.0-向上)。末尾的第二个字段是烛台ID。最后是蜡烛开盘时的价格。最后两个字段不用于训练。
3.训练和测试模型
在首次启动时保留默认的神经网络设置。培训将分五阶段进行,直到获得可接受的结果。如果培训成功,将显示以下表格:
+------------+---------+----------+-------------+------------+
| | | | (%) | (%)
+------------+---------+----------+-------------+------------+
| 0 | 7174 | 7173 | 50 | 100.0 |
| 2 | 6956 | 6731 | 50 | 95.4 |
| 4 | 6430 | 6224 | 50 | 88.2 |
| 6 | 5867 | 5630 | 51 | 80.1 |
| 8 | 5250 | 5065 | 50 | 71.9 |
| 10 | 4636 | 4450 | 51 | 63.3 |
| 12 | 3964 | 3772 | 51 | 53.9 |
| 14 | 3330 | 3152 | 51 | 45.2 |
| 16 | 2758 | 2539 | 52 | 36.9 |
| 18 | 2198 | 2012 | 52 | 29.3 |
| 20 | 1700 | 1544 | 52 | 22.6 |
| 22 | 1298 | 1167 | 52 | 17.2 |
| 24 | 958 | 825 | 53 | 12.4 |
| 26 | 699 | 517 | 57 | 8.5 |
| 28 | 446 | 278 | 61 | 5.0 |
| 30 | 246 | 127 | 65 | 2.6 |
+------------+---------+----------+-------------+------------+
神经网络的响应是二进制分类,其中[0 1]为“向下”,[1 0]为“向上”。但是,神经网络永远不会以整数值进行响应,根据“置信度”的不同,其响应可以是[0.4 0.6]类型。在此响应中,神经网络认为价格会下降,但不是很确定,在响应[0.1 0.9]中,价格也下降了,但信心更大。这是实际响应数组的样子:
[[0.5084921 0.49150783]
[0.3930727 0.6069273 ]
[0.4930727 0.50692725]
...
[0.5189831 0.48101687]
[0.27955987 0.7204401 ]
[0.476914 0.5230861 ]]
“网络响应”表字段是此二进制响应内的差乘以100。显然,此差表示网络在其预测中的“置信度”。结果,乘以100后,我们得到的值在0到100的范围内。现在您不能接受所有答案,而只能选择神经网络具有显着``信心''的答案。为了了解答案在多大程度上影响了预测结果,请在此“置信度”的不同级别上检查测试部分的预测是否正确。该表的每一行都是对“网络响应”的新的更高值的检查。网络响应过滤器越高,响应越少,但它们越好。可以在“获胜”和“亏损”字段中看到。当响应(信号)小于所有测试数据的1%时,该过程停止。
如果尚未通过一次网络培训,则只需重新启动该块即可(无需重新加载数据)。
4.交易图表上的结果
运行此块。在这里,一切都是显而易见的,在来自测试集的交易对图表上,绘制了神经网络信号,呈绿色向上,红色向下。
5.实际市场中的测试
在此检查期间,将加载神经网络的数据,该数据是在实时添加新蜡烛时创建的。那些。接收到的数据的最后一部分是在烛台的开口处创建的,在本例中为零烛台M6。自然,这些数据没有正确的答案;请网络做出真实的预测。您可以通过取消注释打印(数据)行并在输入时和一段时间后比较特定行的值来确保数据在进入历史记录时不会发生变化。
def get_from_ennro(symbol, tfm, dim, lim):
...
# print(data)
...
实际市场中可能没有任何信号。当波动率小于测试区域时会发生这种情况,在这种情况下,神经网络看不到入口点。
结论
是! 预测质量不适合开设职位。但是我们没有设置这样的任务,主要是神经网络学习并识别图表上的某物,猜测趋势,其预测显然不会混乱。请注意,我们使用了最简单的神经网络配置-具有2层且只有10个历元的Sequential Dense进行训练。还有进一步发展的空间。
已经有可以从质量上改善预测的解决方案,但是在下一篇文章中将对此进行介绍。
PS对于那些想要自己收集和准备MetaTrader5中任何对数据的人,请在此处阅读并使用此链接中提供的GoogleColab 。