神经网络和交易。实际实施

交易方式随着比特币汇率的波动而起伏不定。在2018年实现惊人增长之后,现在这个话题处于低谷。在这段时间里,许多人设法结识了加密货币交易所-他们深入研究了该主题,进行了研究,交易,亏本甚至是有时赚了。结果,时尚过去了,但是经验仍然存在,尽管是负面的。那些您肯定不会想到的人会听到“多头”,“空头”,“价差”,“跳水者”的字样。但是不仅“手”交易引起了人们的注意,而且还有交易机器人。我们在这方面有什么?过去2-3年的经验是什么?

不幸的是,这方面也没有什么好处。有很多编写交易机器人的工具,但是没有稳定获利的策略。在最佳情况下,需要由一对交易者-程序员更改当前市场的设置来不断地为工作解决方案提供服务。将全自动机器人连接到存款后的标准结果是耗尽存款。

最后的希望仍然存在-神经网络。这肯定会发生,因为神经网络可以作为一个人学习并适应市场。您在这方面表现如何?好吧...你猜对了。一切都不好,有很多话题,但是没有可行的解决方案。一切都非常糟糕! MQL5社区应用程序商店就是一个生动的例子。 MQL5品牌的背后是一个专业的交易平台-MetaTrader5以及庞大的交易者和程序员社区。因此,在此商店中,有一个基于神经网络的解决方案部分,有很多机器人,但没有一个真正的机器人。规则禁止使用神经网络添加机器人。很难相信,但是确实如此。禁止连接外部API排除了使用神经网络的可能性,并且MQL5中内置的工具在实践中不起作用。我在MQL5技术支持中讨论了这个问题,我没有收到明确的答案。结果,市场上没有真正可用的开箱即用的东西,github上“自学”系列的解决方案未考虑在内。

好的,我完成了介绍,开始做生意。我设法训练了一个神经网络,在实际市场中有有价值的成果。此外,我将不详细介绍如何完成此操作。

试图教神经网络交易的每个人的第一个也是主要的错误是对市场的思考。通常,交易员会与以前编写过机器人的程序员一起尝试实现基于神经网络的解决方案。交易机器人算法解决了找到正确的头寸入场点并确定“止损”和“止损”的问题。如果在设计神经网络时考虑到此任务,则将无济于事。您可以无休止地挑选出输入数据的巧妙选择,提供或不提供指标,尝试不同类型的神经网络,仅在某些区域将拐杖替代为训练或仅显示已知模式的训练。不管用。

使用神经网络,您需要看起来像个孩子,通过她的眼睛看世界,并从简单的任务开始。可以问的最简单的问题是“价格将通过X根蜡烛上升或下降到哪里?”。价格变化多少都没关系,答案不能变成交易策略也没关系。我们忘记了交易,现在的主要任务是至少要对网络进行一些教育,才能够找到正确的答案。

经过100,500次输入选择后,我完成了最初的任务。使用了TensoFlow加Keras(密集分布的网络)。输入数据集为200-300,000个示例,输入向量为250-350。答案的形式来自所提出的问题网络-二进制分类“上”或“下”。输入是由机器人在MQL5中准备的。贯穿故事的漫游器会形成一个常规的csv文件,每一行都是一个向量。在每个向量的末尾,正确的答案是1:0(向上),0:1(向下)。

以下是一些尝试的建议:

  1. 他在15分钟到60分钟的预测范围内学习良好。在较短的时期内,价格走势的混乱会加剧,在较大的时期内,外部影响会增加-新闻等,在15-60分钟内是最“技术”区域。
  2. BTCUSD, EURUSD. — .
  3. « ? ?». , .
  4. , 50% . , .

您需要了解我们正在处理的材料。市场处于95%的混乱状态。当我们向网络提交训练数据并指出正确答案时,实际上是在给它带来混乱。这就像试图训练一个神经网络来区分猫和狗,并且在训练过程中向其展示蝴蝶,星星和十二生肖一样,将不会有任何结果。就是这样,但是幸运的是,市场提供了网络可以捕获的大约5%的实际工作模式,这将在其答案中得到反映。因此,要注意测试结果的分析。

使用这种方法,我得到了以下结果:
在大约2%的答案中,网络以2个正确答案与1个错误答案的比率猜测进一步的移动。在实际市场中进行测试时,这正是发生的情况,但是还会出现另一个问题。毕竟,我们仅回答了2%的问题,忽略其余部分。那些。我们会在5分钟的时间范围内在实际市场中投放神经,然后以2%的价格等待…-每隔50支蜡烛就会被回答,而4个小时内就会有一个答案!以及如何处理呢?好吧,如果答案是“买/卖”,则一天进行6笔交易是正常的,这里抽象的“升/降”然后是不准确的,完全令人失望。

结果,我相对容易地解决了这个问题-仅仅每5分钟您需要采访一个模型而不是20-30个模型,因此答案就足够了。在不同的输入数据上训练模型,因此,在不同的模式上训练模型。实际上,事实证明这些模型在不同的蜡烛上鸣叫,仅在明显,可预测的位置一起激活,并且彼此不重叠。

总而言之,现在有一些东西可以在真实市场中推出,并且在平均采矿水平上具有上升/下降信号。已经很有趣了,但是实际意义仍然是零。

关于实现的几句话。它对我使用了一堆MQL5 plus Keras。在MetaTrader5中在每个烛台上启动的机器人为神经网络准备了数据,并通过套接字传递给python脚本,该脚本依次轮询所有模型,并在超过可接受的阈值时向Telegram通道发送信号。

因此,该电路有效,但无法应用。无法向某些策略添加信号。主要缺点是答案的离散性。答案是您需要以某种方式做出反应的事件-查看市场情况,考虑网络是否正确等。用一根蜡烛,一个模型可以发出信号,而另一个则可以发出信号,该相信哪个模型?结果,这个想法诞生了,尽管通过的信度很低,但放弃了通过答案的门槛,并开始尊重网络的每个答案。如果您开始将所有答案平均化为一个共同的看法,并将其视为网络的答案,那么答案将变成完全不同的质量。在这种情况下,所有模型的知识都开始形成,这是大量的联合训练。

简短地说,但是经过所有更改之后,我开始为每个蜡烛接收神经网络的单个答案,表示为预期工作时间从-100%到+ 100%的百分比。该符号反映了预期的向上/向下方向。显然,现在每个答案都有一种意义。有用!我本人有交易经验,并看到了眼前网络的行为如何变得有意义。有时候它的逻辑是可以理解的,有时不是可以理解的,但是它的答案总是感觉到它对市场的看法,这常常是自相矛盾的。除此之外,事实证明,网络置信度越高,预期的开发越接近正确的时间,反之亦然。信心不足似乎是在说:“我不知道15分钟后会发生什么,但总体趋势正在上升。”

从这个地方,我意识到尝试将所有这些形式化为买卖信号就像用显微镜敲钉子。现在需要的是一种可视化神经网络信号的工具-图形显示每个蜡烛的“信心”水平。大量的MQL5工具使将所有这些工具放入Expert for MetaTrader5中成为可能。通过API的“专家”接收神经网络的响应,仅参与渲染。这是他在BTCUSD M1上的工作示例:

图片

顶部彩色区域是预测的“向下”,下面的区域是预测的“向上”,厚度是置信度。

在此阶段,预测的质量无关紧要,神经网络对市场情况表现出足够充分的看法非常重要。您总是可以进一步升级网络,主要是它可以正常工作!

结果,今天有MetaTrader5专家,提供两种预测类型:短期和长期。统计数据正在逐渐积累,交易员反馈。获得的结果激发了进一步的工作,现在我们需要联系珍爱的“买卖”团队。这可以通过显着提高预测质量来完成。然后我看到了这样的开发路径:

  1. 有必要在15到60分钟的间隔内准备十几个预测。那些。开始预测“向上/向下”持续20、25、30、35分钟,以此类推,直到60分钟。我记得,每个预测都是基于大约20个模型的答案建立的。
  2. 在每分钟的蜡烛上有如此大量的信息,有可能而且有必要用另一个神经网络对其进行分析。在不同时间间隔的预测之间的联系可能是完全无关紧要的,因此,此处的神经网络将是适当的。
  3. 这个神经网络的数据集不会像年轻的同志那样嘈杂,因此,必须在常规的“向上/向下”训练中而不是在平庸的“向上/向下”训练中进行训练,这是对“购买/出售”的直接退出。

今天我只想告诉你。工作仍在继续,我认为将有更多文章。

顺便说一句,此MetaTrader5专家是免费分发的,如果您想查看真实市场中神经网络的工作,请联系。

All Articles