"新神经 "是MetaTrader 5平台的一个开源神经网络引擎项目。 - 页 46

 
maxfade

大胡子的笑话立即浮现在脑海中

我对出生时的 "零 "表示怀疑,此外,我认为错误-偏转一直存在。
顺便说一句,是的,婴儿出生后至少有抓握和吞咽反射,这也是大脑的工作。所以他的大脑并不是零,尤其是他的学习早在出生前就开始了。这是一个进化的问题,而不是学习装载新生儿的鳞片。
 

我已经重新设计了它,所以当一个对象 通过带有参数的构造函数被创建 时,一个新的序列将在序列的末端被初始化。

它的工作速度会慢一点,但序列会一直是唯一的。

当通过标准构造函数创建时,你需要调用Srand(),序列将是相同的,在一个圆中旋转。

  uint st=GetTickCount();
  CRandm *rnd=new CRandm((uint)TimeLocal(),10000);// длинна последовательности
  for(int i=0;i<1000000;i++)// количество вызовов
    {
     rnd.Rand();
    } 
  delete rnd;   
  Print("time=",GetTickCount()-st);
Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
  • www.mql5.com
Основы языка / Операторы / Оператор создания объекта new - Документация по MQL5
附加的文件:
Randm.mqh  5 kb
 

我建议考虑一个虚拟订单圣经(模拟市场上的开仓/平仓。命令与真实订单几乎相同)。

当你需要在历史数据上运行一个模型时,它就会派上用场(在策略测试器 之外)。

你忘记了什么?我们可以改进、增加、改变、修改什么?- 图书馆是非常基本的。

到目前为止,只有买入-0和卖出-1类型的操作被实施。

附加的文件:
C_Orders.mqh  15 kb
 

讲座1在此进行https://www.mql5.com/ru/forum/4956/page23

这里的讲座2https://www.mql5.com/ru/forum/4956/page34

第3次讲座在此举行https://www.mql5.com/ru/forum/4956/page36

第4讲。视觉皮层组织在时间序列转换中的应用

因此,我们的任务是根据大脑的原理,建立一个价格模式的分类神经网络。这个网络可以分为两个模块:一个用于转换输入信息(价格)的模块和一个可以根据任何已知原则建立的分类模块(如支持向量机)。

在我之前的讲座中,我描述了视觉皮层的HMAX模型,作为生物信息转换的一个例子。 这个模型的最大缺点是,权重(感受野)的值没有经过训练,而是简单地从大脑神经元的生物测量中提取。例如,V1(S1)中简单神经元的感受野被测量,如这里的视频所示https://www.youtube.com/watch?v=Cw5PKV9Rj3o(你听到的点击声是神经元的脉冲声)。在我们引用时间序列的情况下,转换信息的神经元的 "接受区域 "事先是未知的。因此,我们将不得不自己去寻找它们。例如,通过与视觉皮层的S1层类比,价格转换的第一层(S1层)可以建立如下。

在这个例子中,我们的S1层有6个子层,编号为0-5。同一子层的神经元(圆圈)具有相同的输入权重(感受野),传统上显示为左边的矩形。每个子层的神经元都有自己的感受野。我们预先知道,如果有一个子层的接收场w_0,k,其中k=0...5(方向 "向上"),那么一定有一个子层的接收场-w_0,k(方向 "向下")。让具有正场的层用偶数编号(0,2,4),其负的对应层用模糊数编号(1,3,5)。此外,我们知道,S1子层必须有不同大小的感受野。让场的大小从子层0(和它的负数对应1)增加到子层4(和它的负数对应5)。同一列的所有神经元的输入都是以相同的价格输入的(例如,第一列的神经元以价格x_0...x_5输入)。下一列的神经元的输入被送入价格偏移了1条(x_1...x_6),等等。因此,我们的S1层由具有不同方向(向上、向下)、大小和时间位置的感受野的神经元组成。

对S1层神经元的输入权重的学习只针对不同子层的一列神经元进行,至于是哪一列并不重要。然后,所有的权重被复制到每个子层的剩余神经元。学习是在没有老师的情况下进行的,将不同的价格模式送入S1层的输入,并通过一些规则改变权重。有许多关于神经元权重的自学规则,这里有很好的描述。

Miller, K. D., and MacKay, D.J.C.(1994).神经计算》, 6, 100-126.

神经元自我学习的第一条规则是由Hebb在1949年提出的(https://en.wikipedia.org/wiki/Hebbian_theory)。这条规则的内容是:"如果一个神经元收到另一个神经元的输入,并且两者都高度活跃,那么神经元之间的权重必须增加"。在数学上,它被写成如下

dw_i = mu*x_i*y。

其中dw_i是权重w_i的增量,x_i是第i个输入的值,y是神经元的输出,mu是学习率。我们将使用Oja规则(https://en.wikipedia.org/wiki/Oja's_rule),它属于竞争性学习规则 的范畴。

dw_i = mu*y*(x_i - y*w_i/a)。

其中,dw_i是增量权重w_i,x_i是第i个输入的价格,y是神经元的输出,计算为y=SUM(w_i*x_i,i=0...m-1),mu是学习率,a是一个参数(权重的平方之和SUM(w_i^2,i=0...m-1)趋向于a)。这个规则的优点是,它能自动找到作为价格行情的主要特征向量的权重。换句话说,Ogi的规则再现了主成分法(PCA)。这与生物学上的假设相吻合,即视觉皮层S1层的感受野代表了视觉信息的主要特征向量。所附的C++代码以EURUSD M5报价为输入,mu=1,a=1,自动训练了32个S1子层的权重。这些权重作为输入的函数显示如下

前两个子层(0和1)的权重显示为红色。它们只有两个非零值:-0.707和+0.707。子层2和3的权重显示为橙色。它们有4个非零值。等等。

要使用附件中的代码,你需要安装Boost和CImg库http://cimg.sourceforge.net/。 我还没有接触到更高的层(C1、S2、C2),可能在很长一段时间内都不会。那些读过我以前的文章的人应该了解所有HMAX层是如何工作的,并完成价格报价转换模块。在下一次(最后一次)讲座中,我将谈论稀疏网。

附加的文件:
BrainPower.zip  907 kb
 
joo:

我建议考虑一个虚拟订单圣经(模拟市场上的开仓/平仓。命令与真实订单几乎相同)。

当你需要在历史数据上运行一个模型时,它就会派上用场(在策略测试器 之外)。

你忘记了什么?我们可以改进、增加、改变、修改什么?- 图书馆是非常基本的。

到目前为止,只有买入-0和卖出-1的操作被实施。

谢谢你的图书馆。我能否得到一个关于如何使用它的简要说明?
 
格拉夫
谢谢你的图书馆。能否给我一个关于如何使用它的快速教程?

实际上,没有什么可说的。

在每次运行历史记录之前,为了清除订单历史,调用

void Initialise(int MaxPossibleCountOrd, double Spread, double Point_);

然后,根据你的交易策略,调用必要的命令。

int    OrderOpen        (int Type, double Volume, int Time,double Price,double SL, double TP);
void   Possible_SL_or_TP(int Time, double PriceHigh,double PriceLow);
void   OrderClose       (int Ticket, int Time,double Price);
void   OrderCloseAll    (int Time, double   Price);
int    ProfitTradeCount ();
int    TotalPipsProfit  ();
int    LossSeriesCount  ();
int    ProfitSeriesCount();

价差是固定的,它在初始化时被设置。对于浮动价差,我们将不得不添加适当的功能。在我看来,这是不需要的--只要为一个工具设置最大可能的价差,就可以了。

 
joo:

其实没有什么可说的。

在每次运行历史记录之前,为了清除订单历史,你需要调用以下命令。

然后,根据交易策略,调用必要的命令。

价差是固定的,它在初始化时被设置。对于浮动价差,我们将不得不添加适当的功能。对我来说,这在地狱里是没有必要的--只需为一个乐器设置最大可能的价差,就可以了。

谢谢,我今晚会试一试。MT4的类似物https://www.mql5.com/ru/forum/124013,可能会有一些帮助。
Простая идея мультивалютного тестера с примером реализации - MQL4 форум
  • www.mql5.com
Простая идея мультивалютного тестера с примером реализации - MQL4 форум
 

我很抱歉,但我似乎计算错误。目前,我几乎没有机会参与到这个项目 中来。

虽然参与的愿望是巨大的,但我极度缺乏时间和精力,这是很遗憾的。

我将在考试后(12月中旬)能够加入。顺便说一下,其中一门课程与神经网络直接相关。

 

顺便说一下。有两个目标功能。对于逻辑 回归和简单回归。

分类是逻辑回归的一种情况。

目标函数是用于逻辑回归。

而对于普通回归。

尽管它们的衍生物是相似的。也许这就是为什么区分通常是沉默的。

第一个是在分类问题中用于输出西格玛层。

第二种是用于预测问题中的线性输出。

 
TheXpert

我很抱歉,但我似乎计算错误。目前,我几乎没有机会参与到这个项目中来。

虽然参与的愿望是巨大的,但我极度缺乏时间和精力,这是很遗憾的。

我将在考试后(12月中旬)能够加入。顺便说一下,其中一门课程与神经网络直接相关。

你们散落在角落里的同志们。不可能。