交易中的机器学习:理论、模型、实践和算法交易 - 页 321

 
马克西姆-德米特里耶夫斯基

https://www.mql5.com/ru/code/127

只是代码中 存在一些错误,我认为指标的规范化不正确。

它是正确的,它只是归一化到一个不同于[0;1]的区间。


为了简单起见,你可以保留现有的CalcRegression函数(但要考虑到b已经以相反的符号返回*,即你不需要第二次改变符号)。通过实验找到你需要乘以哪个值,以使其在[-0.5;0.5]范围内。然后再加上+0.5,把中间从0移到0.5。


*如果最古老的价格在数组中具有最高的索引,这个公式将给你带右号的b。

 
交易员博士

所有这些都是正确的,只是没有在[0;1]中归一化,而是在另一个区间中归一化。


为了简单起见,你可以保留现有的CalcRegression函数(但要考虑到b已经以相反的符号返回,即你不需要第二次改变符号)。通过实验找到你需要乘以哪个值,以使其在[-0.5;0.5]范围内。然后加上+0.5,把平均值从0移到0.5。


对于不同的时间段,我们需要不同的最大和最小值,这不是很方便,在我看来,在较大的历史区间上进行归一化是最好的。
 
交易员博士

*如果最古老的价格在数组中具有最高的索引,这个公式将给你带右号的b。


只要在现有的缓冲区上再增加一个正常化的缓冲区就可以了 :)
 

回归斜率也可能很有趣。回溯测试和前进。简而言之,看起来你可以用这种逻辑工作,并尝试不同的预测器。


附加的文件:
 
马克西姆-德米特里耶夫斯基

回归斜率也可能很有趣。回溯测试和前进。简而言之,看起来你可以用这种逻辑工作,并尝试不同的预测器。


谢谢你的代码,我测试过了。我变得更糟了。但我只用了1个月而不是1年来进行优化,我想快速检查。在Fronttest上,我看到EA首先是正常的,然后慢慢地开始平坦化平衡,然后就慢下来了。它还在靠新的数据生活,还不错。

我将改变这一点

1) double a3 = regr[0]; - 零指数是最古老的时间数据。这里最新的(最新的)酒吧应该是49号(因为50号被拿走了),它更好。但最后一种可能会被透支,所以48种更好。也有必要检查指标是否被透支。
rsi也是如此,你已经删除了较新的那个。尝试删除索引为零的那一个是有意义的,因为那是最过时的。

2)尤里的专家顾问的第三个版本有四个参数的RNN功能,所以它可以与三条杠和一个趋势相结合。一般来说,这个函数可以用新的参数来补充,就像尤里的文章中写的那样,但每+1个参数会使系数的数量增加一倍。

3)我不喜欢止损和起飞,它们的最佳值在新条上不断变化。更准确地说,没有最佳值,只有特定时间间隔的EA的某些 "方便 "值。加上经纪人可以在止损前画出烛台。我会尝试在每一个新的条形图上进行预测,并简单地保持这个方向的交易,直到下一个条形图和预测,必要时在那里翻转。

4)

   int handle=iRSI(_Symbol,0,9,PRICE_OPEN);
   double rsi[30];
   CopyBuffer(handle,0,0,28,rsi);

手柄应该在OnInit中被初始化,而不是每次创建EA时都被初始化。还有,这个数组有30个元素,只复制了28个。即,索引28和29不能被访问(没有人这样做,但你永远不知道),它们没有被填满。

 
交易员博士


谢谢你的代码,我试过了。我得到了一个更糟糕的结果。但我只用了1个月而不是1年来进行优化,我想快速测试。前面的测试显示,我的专家顾问一开始是好的,然后它开始拉平平衡,然后就跑下来了。它还在靠新的数据生活,还不错。

我将改变这一点

1) double a3 = regr[0]; - 零指数是最古老的时间数据。这里最新的(最新的)酒吧应该是49号(因为50号被拿走了),它更好。但最后一种可能会被透支,所以48种更好。也有必要检查指标是否被透支。
rsi也是如此,你已经删除了较新的那个。试图删除索引为零的那一个是有意义的,它是最古老的。

2)在尤里的第三个版本的EA中,RNN函数包含四个参数,你可以用它同时采取3个rsi和趋势。一般来说,这个函数可以用新的参数进行扩展,就像尤里的文章中写的那样,但每+1个参数都会使系数的数量增加一倍。

3)我不喜欢止损和起飞,它们的最佳值在新条上不断变化。更准确地说,没有最佳值,只有特定时间间隔的EA的某些 "方便 "值。加上经纪人可以在止损前画出烛台。我会尝试在每一个新的条形图上进行预测,并简单地保持这个方向的交易,直到下一个条形图和预测,必要时在那里翻转。

4)

手柄应该在OnInit中被初始化,而不是每次创建EA时都被初始化。还有,这个数组有30个元素,只复制了28个。即,索引28和29不能被访问(没有人会,但他们可能想要),它们没有被填充。


嗯,是吗,我以为复制缓冲区时的零会返回第一个值,需要检查一下...

https://www.mql5.com/ru/docs/series/copybuffer

我添加了尾部而不是sl,以此类推,结果并没有好多少。

关于手柄,是的,为了回归,我把它放在了初始阶段,为了Radi,我忘记了这样做。

我需要选择利润系数最高的前锋,回测的结果应该是差不多的,所以有了这些参数,网格就能做出一个体面的预测。如果我看一下统计数据,我不明白为什么我错过了,我不明白为什么我错过了,我也不明白为什么。

而RN3由于某种原因给出的信号要少得多。

我还是不太明白,如果规范化函数采用5000条数组而不是50条数组是否更好,这样它可以从一开始就找到更正确的最大和最小值,而不是随着时间的推移而更新,因为在测试开始时,我们会收到不太正确的规范化输入值,但后来越来越准确了

另外,我仍然会对图表进行去趋势化,并为网格提供更多可消化的数值,我还不确定如何改进,比如说,静止序列的回归斜率和自相关,因为我对计量经济学 不是很精通,我现在正在看视频剪辑

我还想以后把这个RNN与普通的MLP进行比较,但会有不太正确的比较,因为MLP必须向输出端输入一些东西。另一个选择,做一个由3个RNN组成的委员会,把他们的结果输入RNN :D,或输入一些卷积NS。即使通过克劳德,也需要很长的时间来优化。更好的是,将3个RNN送入MLP,给它一个增量价格的输出,从而摆脱过度训练,在理论上。即RNN将发挥自动编码器的作用http://cyberleninka.ru/article/n/avtoenkoder-podhod-k-ponizheniyu-razmernosti-vektornogo-prostranstva-s-kontroliruemoy-poterey-informatsii


 
马克西姆-德米特里耶夫斯基




要找到一个可以适用于ARIMA的报价,几乎是不可能的。但这是讲座的结束。

Garch怎么样?它更有前途,在不到一天的时间范围内使用非常广泛,甚至用于高频交易。

 
桑桑尼茨-弗门科


要找到一个可以应用ARIMA的报价,几乎是不可能的。但这是讲座的结束。

Garch怎么样?它更有前途,在不到一天的时间框架内使用非常广泛,甚至用于高频交易。


我刚刚开始熟悉这些东西,我甚至还没有做过实验。我只听说过垃圾的事 :)

你认为用RNN作为MLP的自动编码器怎么样?

据我所知,递归网络是一个具有一套逻辑规则的自动编码器类型。


 
马克西姆-德米特里耶夫斯基

那么,减去趋势,然后对其应用自回归,然后把数值和回归斜率一起塞进NS中,又是怎么回事? 我刚刚开始熟悉这些东西,我甚至还没有实验过呢

你最好马上进行实验!

你将节省大量的时间和不必要的知识。

 
桑桑尼茨-弗门科


要找到一个可以适用于ARIMA的报价,几乎是不可能的。但这是讲座的结束。

Garch怎么样?它更有前途,在不到一天的时间范围内被广泛使用,甚至用于高频交易。

我也看了。我认为,这不是我们的主题领域。