文章 "神经网络在交易中的实际应用 Python (第一部分)"

 

新文章 神经网络在交易中的实际应用 Python (第一部分)已发布:

在本文中,我们将分析一个基于Python的深层神经网络编程的交易系统的分步实现。这将使用谷歌开发的 TensorFlow 机器学习库执行。我们还将使用 Keras 库来描述神经网络。

让我们考虑一些与神经网络训练数据准备有关的问题。

  • 为了决策,我们将使用两个神经网络在一个方向上打开仓位。
  • 根据前一点,训练数据应分为两组-每个方向一组。
  • 与前一个系统一样,将训练第一个神经网络来构建类似于标准技术指标的指标。我们在以前的系统中使用了这个解决方案,因为我们使用了自写的指示符,我们不想让专家顾问的工作负担过重。之所以使用Python,是因为只能从终端接收报价,为了为神经网络准备数据,我们需要在 Python 脚本中构建这些指标。通过教神经网络建立这样的指标,我们消除了在脚本中复制它们的需要。 
  • 第二个神经网络建立信号指标,在此基础上建立交易策略。
  • 神经网络将针对 EURUSD H1 图表进行训练。
  • 因此,为了建立这个系统,我们需要准备两个神经网络用于买入和两个网络用于卖出。因此,系统中将有四个神经网络工作。

作者:Andrey Dibrov

 

追求,而非文章

1.

在文章正文或资料来源中都没有关于常数 10 000(1 和 4 个零) 的说明,在文章中搜索时使用了 51 次

我怀疑这是欧元兑美元的位数,但为什么是100 000(1 和 5 个零)?

inB[15]=(iOpen(NULL,PERIOD_D1,iBarShift(NULL,PERIOD_D1,iTime(NULL,PERIOD_H1,i)))-iLow(NULL,PERIOD_D1,iBarShift(NULL,PERIOD_D1,iTime(NULL,PERIOD_H1,i))))*100000;
inB[16]=(iHigh(NULL,PERIOD_D1,iBarShift(NULL,PERIOD_D1,iTime(NULL,PERIOD_H1,i)))-iOpen(NULL,PERIOD_D1,iBarShift(NULL,PERIOD_D1,iTime(NULL,PERIOD_H1,i))))*100000;
inB[17]=(iHigh(NULL,PERIOD_D1,iBarShift(NULL,PERIOD_D1,iTime(NULL,PERIOD_H1,i)))-iLow(NULL,PERIOD_D1,iBarShift(NULL,PERIOD_D1,iTime(NULL,PERIOD_H1,i))))*10000;
inB[18]=(iHigh(NULL,PERIOD_D1,iBarShift(NULL,PERIOD_D1,iTime(NULL,PERIOD_H1,i)))-iOpen(NULL,PERIOD_H1,i+1))*10000;
inB[19]=(iOpen(NULL,PERIOD_H1,i+1)-iLow(NULL,PERIOD_D1,iBarShift(NULL,PERIOD_D1,iTime(NULL,PERIOD_H1,i))))*10000;




2. PythonTestExpert

这段代码总的来说很神秘:

void OnTick()
  {
   MqlDateTime stm;
   TimeToStruct(TimeCurrent(),stm);
   
   for(int i=0; i<=14; i++)
     {
      in[i]=in[i+5];
     }


我猜测我们每个 tick 都会移动数组,但数组的初始值从何而来?....下面我们从第 15 个元素开始填充数组,直到数组的末尾。


3.

为什么指标 DibMin1-1.mq5 和 DibMax1-1.mq5 的代码有 99%是相同的,被分隔在 2 个指标中,而不是在一个指标中用 2 行(缓冲区)执行?



4. 关于 Python 也有问题,起初对 Python 脚本没有任何注释,也没有说明编写该脚本的目的,但在文章末尾突然出现了对该脚本作用的描述,以及我们在优化 Expert Advisor.... 时已经使用了该脚本的数据这一事实。好吧,请读者再回来看看这个脚本的数据在哪里,也许就是这里:

在撰写这篇文章时,我决定也举例说明实现 NS 学习目标的另一种方法。

?




我不会写我不喜欢这篇文章(或者这篇文章很荒谬),但文章的标题 "神经网络在交易中的实际应用。Python "非常响亮,而且搜索引擎现在会将这篇文章显示在搜索结果的第一位,这实在令人遗憾

 
Igor Makanu:

这是一次探索,不是一篇文章。

1.

文章正文或资料来源中都没有关于常数 10 000(1 和 4 个零) 的说明,文章中的搜索被使用了 51 次

怀疑这是欧元兑美元的位数,但为什么是100 000(1 和 5 个零):


10000 和 100000 这两个数字从何而来?它们意味着什么?


2. PythonTestExpert

这段代码总的来说很神秘:


我怀疑我们每隔一个刻度就移动一次数组,但我们从哪里获得数组的初始值呢?....下面我们从第 15 个元素开始填充数组,直到数组结束。


3.

为什么指标 DibMin1-1.mq5 和 DibMax1-1.mq5 的代码 99% 相同,但不能在一个指标中用两行(缓冲区)执行?



4. 关于 Python 也有问题,起初对 Python 脚本没有任何评论,也没有说明编写该脚本的目的,但在文章末尾突然出现了对该脚本作用的描述,以及我们在优化 Expert Advisor.... 时已经使用了该脚本的数据这一事实。好了,请读者再回来看看这个脚本的数据在哪里,也许就是这里:

在撰写这篇文章时,我决定也举例说明实现 NS 学习目标的另一种方法。

?




我不会写我不喜欢这篇文章(或者这篇文章很荒谬?),但文章的标题 "神经网络在交易中的实际应用。Python "非常响亮,而且搜索引擎现在会将这篇文章显示在搜索结果的第一位,这实在令人遗憾

感谢您提出的好问题

1.10,000 还是 100,000 ?" * " 还是 " / " ?我们形成了 NS 的输入数据。(我头颅中的神经网络很喜欢输出到文件中的数据。也许另一个盒子里的神经网络也会喜欢。开个玩笑)使用 NS 时,您必须对神经网络本身的超参数、架构和输入数据进行试验。这里可能不是 "2 乘以 2 是 4",而是 "2 乘以 2 是?

2.关于PythonTestExpert 的问题 .我漏掉了需要澄清的一点--我们在策略测试器中以 H1 开盘价运行 Expert Advisor。指标集群的移动是在每个柱形图上进行的。在另一种情况下,我在 00 点使用指标移动 - 每天一次。这里也需要进行试验。

3.两个指标 - 纯粹是为了方便,这是一种特殊情况。通常情况下,交易策略是建立在任何一个方向上的。因此,在数据取样时,使用一条指标线更为方便,它可以显示当天的最大极值或最小值。在这里,也可以尝试 "来回 "移动。

4.关于 Python 脚本 - 是的,也许我想简化得太多了.....。但我写这篇文章的目的是为了展示使用 Python 集成的神经网络实际应用的 简易性。现阶段--获取输入数据、训练和测试。"按下按钮,得到结果"。我不知道这个话题是否已经以这种方式涉及过?我没有。其他人说过。但我想与大家分享....。

5.就荒谬问题开个玩笑--在一个盒子里看着一套被称为技术指标的公式就想赚钱,这难道不荒谬吗!!!))))。

 
Andrey Dibrov:

5.就荒谬这个问题开个玩笑--在一个盒子里看着一套被称为技术指标的公式就想赚钱,这难道不荒谬吗!!!))))。

这篇文章之所以荒谬,是因为根本无法坐下来阅读这些材料,没有连贯的表述,没有方法论的描述,没有研究的目的--我说的不是从简单到复杂,而是根本没有逻辑可循。

在这里

在撰写这篇文章的过程中,我决定也举一个例子来说明 NS 学习目标的不同方法。为此,让我们对 PythonIndicators 脚本做一些修改。

这表明文章的材料准备得不够充分,您想探索给定方法的更多可能性--描述新的目标,描述我们将从现成的代码中使用什么。

这样的表述看起来就像是,我们为什么不试着用 "科学探究 "的方法转一转--"我一直在转,我很清楚我们会得到什么:"。

这里的逻辑是,我们是根据已经实现的目标来训练 NS,而不是根据即将发生的事件来训练 NS。你可能会同意,这更符合逻辑。毕竟,评估过去的事件比预测更容易。

因此,我们得到了这样一个指标。


建议

下面是一些优化结果。

我完全不想发表评论--一组从油漆中剪下的图案? 为什么屏幕上有不同的日期和大小? 优化参数的值在哪里?

这是什么?- 是谷歌的 "图片搜索 "吗?


 
Igor Makanu:

这篇文章很荒谬,因为它根本无法让人坐下来阅读材料,没有连贯的表述,没有方法论的描述,没有研究的目的--我说的不是从简单到复杂,而是根本没有逻辑可循。

在撰写这篇文章时,我决定也举例说明一下 NS 学习目标的不同方法。为此,让我们对 PythonIndicators 脚本做一些修改。

如果您想探索给定方法的更多可能性--描述新的目标,描述我们将从现成的代码中使用什么,那么这是文章材料准备得不够充分的标志。

在这种情况下,我们为什么不试着用 "科学抽水 "的方法--"我一直在抽水,我很清楚我们会得到什么:"--来抽点别的东西呢?


关于

为什么屏幕上有不同的日期、不同的尺寸? 优化参数的值在哪里?

这是什么?- 是谷歌的 "图像搜索 "吗?


原则上,我同意所有内容--我会根据评论意见对文章进行最后修改。谢谢...

 
Andrey Dibrov:

原则上,我同意所有意见 - 我会考虑这些意见,最后完成文章。谢谢...

太好了!

材料是有需求的,至少我对这个方向很感兴趣。

ZY: 是的,这里还有我之前留言的内容--文章中的所有研究成果都应该具有可复制性,不仅如此,它还能证实文章的有效性,你也不会质疑你是从哪里得到这些成果的(你的优化截图),而且,它很有可能会成为有用的培训材料。


Sv.

 
我已经安装了 MT5 软件包,但从未使用过。为了简洁起见,可以删除 python 程序中的所有指标和交易。
 
Maxim Dmitrievsky:
我已经安装了 MT5 软件包,但从未使用过。为了简洁起见,您可以删除 python 程序中的所有指标和交易

是的,我们使用指标在 python 程序中训练 NS。然后,另一个 python 程序将使用训练好的 NS 进行交易...

 
<br/ translate="no">

4.关于 Python 脚本--是的,也许我想过度简化.....。但我写这篇文章的目的是展示使用 Python 集成神经网络的实际应用的 简易性。现阶段--获取输入数据、训练和测试。"点击按钮,得到结果"。我不知道这个话题是否已经以这种方式涉及过?我没有。其他人说过。但我想与大家分享....

5.作为一个关于荒谬问题的笑话--在一个盒子里看着一套叫做技术指标的公式就想赚钱,这难道不荒谬吗!!!))))。

"Python 集成 来展示 神经网络实际应用 的简单性 " ,你失败了。你提出的程序称不上简单。而且根本没有集成

"接收输入数据、训练和测试"--所有这些都可以而且应该在 Python 中完成。 MetaTrader5 软件包就是为此目的而编写的。

没有神经网络超参数的优化和输入数据的高质量准备,我们就谈不上任何严肃的结果。Python 拥有执行这些重要而不简单步骤的一切。而你的文章却没有。

"点击按钮就能得到结果 "与 你的方法无关。在机器学习领域,有一整个领域正在发展--机器学习自动化。在那里,是的,你收集数据,将其传递给程序,程序将确定预处理的方法和技术,选择能为数据提供最佳结果的一个或多个模型,优化超参数,并生成可供使用的结果。

这篇文章展示了创建和使用神经网络的错误步骤顺序--在我看来,这是一个重大缺陷。没有充分使用整合这一事实令人遗憾,但并非致命。文章的标题应该更谦虚一些。

祝好运

 
Vladimir Perervenko:

"使用 Python 集成 来展示 神经网络实际应用 的简单性 " ,你失败了。你提出的程序称不上简单。而且根本没有集成

"所有这些都可以而且应该 Python 中完成,MetaTrader5 软件包就是为此目的而编写的。

如果不对神经网络超参数进行优化,不对输入数据进行高质量的准备,我们就谈不上取得任何重大成果。Python 拥有执行这些重要而不简单步骤的一切。而您的文章却没有。

"点击按钮就能得到结果 "与 你的方法无关。在机器学习领域,有一整个领域正在发展--机器学习自动化。是的,在那里,你收集数据,将其传递给程序,程序将决定预处理的方法和技术,选择能为数据提供最佳结果的一个或多个模型,优化超参数,并生成可供使用的结果。

这篇文章展示了创建和使用神经网络的错误步骤顺序--在我看来,这是一个重大缺陷。事实上,整合没有得到充分利用是令人遗憾的,但并不是致命的。文章的标题应该更谦虚一些。

祝好运

如果您观看了文章末尾的视频,就会发现获取数据、训练 NS(基于这些超参数)和构建指标的整个过程最多需要 2 分钟。这并不难,任何交易者都可以使用,而不仅仅是 "被选中的 "交易者。

关于整合问题整个创造过程都是在本文所描述的阶段进行的,尤其是在接收输入数据和对这些数据进行采样时。为此,我个人使用自己的指标。现在我要强调一点))))- 在神经网络 发展的这一阶段,分析纯时间序列的超参数并不重要。从根本上说,神经网络现在是为机器人技术(广义上)而 "锐化 "的。用于分类。也就是说,它们在完整图像上运行得非常好。但是,如果我们在猫和狗身上训练 NS,而只给它看一只耳朵,那么夸张地说,我们可以得到 "它是戴帽子的先锋 "这样的答案。而在我们的工作中,只有过去才有完整的图像,现在则没有....。这就是为什么 NS 培训的准备阶段如此重要。还有整合。- 这是一个纯粹的技术过程。Python 将其大大简化,并将其带入交易的实际应用 层面。

在机器学习方面,有一个整体的发展方向--机器学习自动化。在那里,是的,您收集数据,将其传递给程序,程序将确定预处理的方法和方式,选择能让您获得最佳数据结果的一个或多个模型,优化超参数,并生成可供使用的结果。
这同样适用于对完整图像进行分类。在训练过程中可以确定质量的地方.... 我们必须不断回到 MT5 中的测试和优化等方面。这里的整合要困难得多,但作为未来工作的一个视角,是.....。
这篇文章显示了创建和使用神经网络的错误阶段顺序--在我看来,这是主要缺点。事实上,整合没有得到充分利用是令人遗憾的,但并不是致命的。当然,你应该对文章的标题更加谦虚
正确的顺序是什么?
 

运行两个脚本 - PythonIndicators .mq5 , PythonPrices.mq5 后,创建了空的 .csv 文件 - 原因是什么?

请问原因是什么?