文章的顾问。对所有来者进行测试。 - 页 4

 
Reshetov:


我改进了专家顾问,使其利用交易信号计算出未来空头的概率。因此,如果概率高于0.5,我们就开空头,否则就开多头。



我已经固定了止损,也就是说,它们不会因信号而滚动。这对于能够应用MM来说是必要的。

下面是图片:前136个交易是优化,其余的是OOS。


由于这个话题对交易者来说并不有趣,只有洪水猛兽才会来这里讨论话题作者的个性,所以我不附上专家顾问的修改代码。


尤里,不要听他们的。请公布修改后的EA。
 
Andru80:
尤里,不要听他们的。请公布修改后的EA。

如果你有一篇文章,你也会有一个EA。让我们来看看什么是...有了一些经验,你甚至不需要测试来评估这个想法。 我们将等待。
 
Figar0:

当文章写完后,专家顾问也会随之而来。让我们看看什么是什么。你不需要测试来估计这个想法。 我们将等待。

我在文章前发布了专家顾问,这样大家就可以测试并给出自己的意见(尽管有可能他们可能又开始讨论我的个性?)


其本质甚至不在专家顾问中,而是在我为其添加的反拟合 算法中。

现在,我们不必寻找成功的前向测试,也不必深入挖掘测试结果,而是翻看上排的结果,它们一定在那里的某个地方,而且很有可能也在最上面一排。

测试结果和优化结果可能会有很大不同,因为反拟合 只在优化期间启用,其余时间都是禁用的。

下面是测试结果的上行图(前404个交易是优化,其余是正向测试)。


专家顾问附在附件中(它是在出版前编译的,我将在文章中打开其代码)。

输入的参数是:。

x0, x1, x2, x3, x4, x5, x6, x7 - 可从0到100调整,增量为1。经过优化。

sl - 以点为单位的止损和止盈。例如,对于H1的欧元兑美元,对于五位数,你可以从100到1000,以50为增量(对于四位数,从所有数字中去除一个零)。经过优化。

lots - 以手为单位的交易量,你需要至少放1手来优化。没有优化。

mn - 神奇的数字。没有优化。

d - 地段大小的小数位数。即:如果允许0.01,则暴露d=2。它将不会被优化。

按利润系数进行优化,优化结果也按这个参数进行排序。

为了以防万一,我在ZIP存档中添加了一个带有EA设置的文件,因为我已经设置了这些设置。

附加的文件:
rnn_v3_1.ex4  7 kb
rnn_v3.zip  1 kb
 

有趣的结果!

尤拉,你在分析中是否使用EA所连接的仪器的数据?

 
Neutron:

有趣的结果!

尤拉,你在分析中使用EA所连接的仪器的数据吗?

是的,即不对其他工具进行分析。TA只通过开盘价 进行。


基本上,这些条目不是很复杂,所以我可以向你展示所有这些东西的计算的代码片段。


   // Считываем показания индикаторов
   double a1 = input(9, 0);
   double a2 = input(9, 1);
   double a3 = input(9, 2);

   // Вычисляем вероятность торгового сигнала для короткой позиции
   double result = getProbability(a1, a2, a3);

   ...

// Показания индикаторов, должны быть в диапазоне от 0 до 1
// p - период индикатора
// shift - смещение вглубь истории в периодах индикатора
double input(int p, int shift) { 
  return (iRSI(Symbol(), 0, p, PRICE_OPEN, p * shift) / 100.0);
}
 

谢谢你。

防御装置...如果你记得NS的经典,反拟合归根结底是要找到正向的最小预测误差。这可以通过对一百次左右的独立运行进行统计,并在每次运行中重新训练NS来实现。这是可以理解的,但由于初始BP的有限长度和它的非平稳性而很难实现。

另一种方法是对训练样本的最佳长度进行估计。据我所知,还没有人以一般方式解决这个问题......

你做到了吗?

 
Neutron:

另一种方法是对训练样本的最佳长度进行估计。据我所知,还没有人以一般形式解决这个问题......

你不需要解决这个问题。只要为某种情况找到合适的训练样本长度就够了,而且非常容易做到。

是的,而且这不是一个反合。这是第二层装修。对于n级拟合,必须有n+1个样本来测试,最后一个样本是控制样本。

这正是雷舍托夫从未拥有的最后一个。

 

多么简单!

对于每一个曲线点,都要进行统计征集。如果一个月后价格范围完全改变,又该从哪里汲取营养呢?

 

不,这没有任何意义。

在朱里的情况下,学习NS是通过简单地通过我所设定的历史延伸上的权重来完成的...对吗?如果是这样,那么分析就只是每个迭代的交易结果。而"......现在成功的前向测试不需要 测试结果 中进行长时间的深入搜索,但我们必须通过结果的顶行,它们一定在某个地方,很有可能在顶行......",这种说法是不正确的--成功的前向可能在任何地方,我们必须到处搜索。

 
Neutron:

谢谢你。

反装甲...如果你回忆一下NS的经典,反拟合就简化为寻找正向的最小预测误差。这可以通过对一百次左右的独立运行进行统计,并在每次运行中重新训练NS来实现。这是可以理解的,但由于初始BP的有限长度和它的非平稳性而很难实现。

另一种方法是对训练样本的最佳长度进行估计。据我所知,还没有人以一般方式解决这个问题......

你做到了吗?

至于交易系统,只有历史匹配是可能的。神经网络每次都有两个问题:拟合和再训练。而再训练也是在静止的数据上进行的。

但对于输入充足的神经网络,当我们处理一些神经网络包或自制的网格时,如果我们使用Leonid Velichkovski 提出的方法,就会容易一些:我们将训练样本分为两个样本:训练样本和测试样本,在学习过程中,我们计算两个样本的结果,只通过训练样本教网格。一旦在测试样本上的结果改善停止,即结果没有进一步改善,就意味着网络已经被充分训练,我们应该在这一点上停止。因此,我们获得了一张经过最充分训练的网--我们不会变得更好,也很容易变得更糟。在这种情况下,我们并不关心网络被重新训练或拟合的确切程度,因为我们在测试样本上有一个极值。

终端内置的遗传算法要困难得多,因为我们不能在前进的部分计算结果,并及时停止优化。正因为如此,你必须在按指标排序的优化结果中手动搜索前进。

我走的是一条稍微不同的道路。

1.找到了神经网络过度训练的原因并消除了它。也就是说,如果训练的例子是固定的,不包含矛盾,那么我的算法就不会被过度训练,但如果例子的数量不足以进行插值,它就很容易被过度训练。

2.装修的时候更复杂。但这个问题原来也是可以解决的,因为拟合主要取决于学习的质量,即奖惩制度是否充分,否则算法将遵循阻力最小的路径,以它认为更容易的方式学习,而不是以实际充分的方式。所以我排除了这些阻力最小的路径,也就是说,我强迫遗传算法评估结果概率的计算质量,而不是点数。

3.非平稳性。这一点根本无法克服,因为它只取决于市场,而不是算法。这是唯一真正阻碍预测质量的东西。但是,如果我们消除培训的其他缺点,它的影响不再大到干扰收入的程度。