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

 
桑桑尼茨-弗门科

亲爱的同事!

有好几页都在争论你和R的算法在函数 域边缘的区别。边缘点是边缘点,在实践中,差异可以忽略不计。

但在这种情况下,我有一个更实质性的问题。

你所有的功能的文档在哪里?

以前,我认为我们把你的函数,然后把R的文档,因为你的函数是类比的,然后深入到R的文档中那些描述算法的部分,或者去找R提供的链接。R有非常高质量的文档和参考仪器。

在争论的过程中,我发现你的函数与R不同--它们是一些其他的函数,其算法依赖于其他来源。文章本身没有关于这一点,没有文件。而我们在完全不同的背景下从雷纳特那里了解到了这一点。

在实践中,我们可以得出一个毫不含糊的结论:代码不能从R移植到MQL5。

原因就在这里。

这是因为你没有读过这篇文章,而且错过了几次重复的内容。

  1. 我们在源代码中附上了单元测试,证明了计算的正确性。
  2. 我们在全面检查正确性方面做了大量的工作,使我们能够对R错误进行彻底的检查
  3. 在我们的工作中,我们不断地在MQL5、Wolfram Alpha和R中重新检查结果。
与你不同的是,我们已经解析了R的源代码,详细分析了每个函数,设法将一些函数的速度提高到46倍,写了一篇文章,并准备为之解答。

但相反,批评者设法在没有仔细阅读文章本身的情况下,就对他们对R的知识和信心的老酵母发表声明。当然也没有试图用证据来运行测试脚本。

 

这样就不会有误解了。

  1. 上述R函数的翻译/相似性是正确的
  2. 在MQL5中使用R的逻辑几乎是相同的,而且MQL5中的代码更清晰
  3. MQL5中提到的函数的所有代码都在干净的源代码中呈现,包括检查单元测试(在R中它们在哪里?)
  4. MQL5中的计算比R中的计算快数倍。
  5. 我们的专家擅长数学,和那些写R的人一样优秀(或更好)。
这是一个将复杂数学引入标准 MQL5 的漫长旅程的开始。现在Alglib、Fuzzy和Stat都在那里。

今天,我们将发布一个类似于R中的plot的图形库。已经有一个以几十个新功能为形式的Stat库垫功能的扩展。

 
量子化

目前,在文章https://www.mql5.com/ru/articles/2742,有关于这些功能的描述。


谢谢你,我理解你的观点。

PS。

据我所知,你已经看过R中Normal和其他函数的文档,所以我就不做复制粘贴,与你的链接进行比较。

 
雷纳特-法特库林

这是因为你没有读过这篇文章,错过了几次重复的内容。

  1. 我们在源代码中附上了单元测试,证明了计算的正确性。
  2. 我们在完全正确性检查方面做了大量工作,使我们能够深入了解R错误的根源。
  3. 在我们的工作中,我们不断地在MQL5、Wolfram Alpha和R中重新检查结果。
与你不同的是,我们已经解析了R的源代码,详细分析了每个函数,设法将一些函数的速度提高到46倍,写了一篇文章,并准备为之解答。

但相反,批评者设法在没有仔细阅读文章本身的情况下,就对他们对R的知识和信心的老酵母发表声明。当然也没有试图用证据来运行测试脚本。

谢谢你,你的观点我很清楚。

PS。

这是你第二次责备我没有阅读文章。

我读过了,而且我发现了函数中的错误(返回标量而不是向量),你已经纠正了,现在这个错误已经消失了。

 
桑桑尼茨-弗门科

谢谢你,你的观点对我来说很清楚。

PS。

这是你第二次责备我没有阅读文章。

我读过了,而且,我发现了函数中的错误(返回标量而不是向量),你已经纠正了,现在这个错误已经不存在了。

这是对你的评论 "实际上,从R到MQL5的代码迁移是不可能的结论 "的反击。

也许,你读的是一篇旧文章,而不是昨天的新文章。那里没有错误--有一个带标量返回的版本(很久以前),我们增加了向量函数。自旧文章以来,图书馆已经严重增长,基本上是重写的。

我是对的--你还没有读过新的文章。

我希望不会再有关于 "你没有这些功能,你自己编造的 "的谈话。
 
阿列克谢-伯纳科夫

关于t分布,我在最新版本的R上重现了这个错误,但并没有深入到算法的本质。我承认确实需要纠正。

我将尝试向R支持团队提出问题。

文章 "计算连续分布的离散混合物 "可在作者的网站 上找到。

文章的作者说,问题出在数列的收敛标准上。


他们提出的递归算法的实现 7.2https://github.com/neurodebian/afni_removeme_eventually/blob/master/nct.c

然而递归计算有误差。例如,对于β函数。


#include <Math\Stat\Math.mqh>
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   double a=1;
   double b=1;
   double r_beta=MathBeta(a,b);
   for(int j=0; j<40; j++)
     {
      if(j>0)
        {
         r_beta*=((a+j-1)/(a+b+j-1));
        }
      double beta=MathBeta(a+j,b);
      PrintFormat("%d   error=%5.20e",j,beta-r_beta);
     }
  }

2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 0 error=0.000000000000000000e+00
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 1 error=-5.55111512312578270212e-17
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 2 error=0.000000000000000000e+00
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 3 error=1.11022302462515654042e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 4 error=1.38777878144567553e-16
。11.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 5 error=-2.22044604925031308085e-16
2016.11.11 12:28:30。015 RecurrentBeta (EURUSD,H1) 6 error=2.22044604925031308085e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 7 error=1.66533453693773481064e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 8 error=-2.91433543964103591861e-16
。11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 9 error=-1.24900090270330110798e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 10 error=-2.77555756156289135106e-17
2016.11.11 12:28:30。015 RecurrentBeta (EURUSD,H1) 11 error=-1.24900090270330110798e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 12 error=5。68989300120392726967e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 13 error=-2.91433543964103591861e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 14 error=-5.55111512312578270212e-17
2016.11.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 15 error=-4.85722573273505986435e-17
2016.11.11 12:28:30。015 RecurrentBeta (EURUSD,H1) 16 error=-1.87350135405495166e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 17 error=5。27355936696949356701e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 18 error=-1.04083408558608425665e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 19 error=-3.400058018291454190505e-16
2016.11.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 20 error=-3.26128013483639733749e-16
2016.11.11 12:28:30。015 RecurrentBeta (EURUSD,H1) 21 error=4.57966997657877072925e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 22 error=3.19189119579732505372e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 23 error=1。52655665885959024308e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 24 error=5.55111512312578270212e-17
2016.11.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 25 error=-6.24500451351650553988e-17
2016.11.11 12:28:30。015 RecurrentBeta (EURUSD,H1) 26 error=-2.70616862252381906728e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 27 error=4.85722573273505986435e-17
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 28 error=4.64905891561784301302e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 29 error=8.32667268468867405318e-17
201611.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 30 error=-9.02056207507939689094e-17
2016.11.11 12:28:30。015 RecurrentBeta (EURUSD,H1) 31 error=-2.98372437868010820239e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 32 error=2。22044604925031308085e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 33 error=2.74086309204335520917e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 34 error=-3.43475248243407804694e-16
201611.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 35 error=2.08166817117216851329e-17
2016.11.11 12:28:30。015 RecurrentBeta (EURUSD,H1) 36 error=4.16333634234433702659e-17
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 37 error=8.673617379889403547206e-17
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 38 error=-1.21430643318376496609e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 39 error=-2.18575157973077693896e-16

对于CDF计算精度可能已经足够,但对于高精度的量化转换,可能就不够了。

这就是为什么我们在量化算法中使用了直接求和而没有递归计算的原因。

 
雷纳特-法特库林

这是对你的大纲 "在实践中,有一个明确的结论,即从R到MQL5的代码迁移是不可能的 "的对策。

我希望不会再有 "你没有这些功能,你自己发明了这些功能 "的说法。

我有个坏习惯,在写东西之前先看书。"我从来没有进行过这样的谩骂;我只说了我的主题的本质。

事实证明,我无法向你表明我的观点,这不是第一次了。

因此,没有我。

我真诚地祝愿你好运,Renat!

 

先生们,100,500页有什么好争论的? 数学方面谁更清楚? 如果函数在0中定义或不定义,如果R中的错误写在文章中或不写,对你来说有什么原则性 的区别。 就好像你的孩子在这里被讨论,被告知他是一个完全......而你用整个胸膛为他站起来。

把它作为一个既定事实,使用mt5的内置功能,向开发人员询问新的功能,如果缺少什么,就自己写。你应该使用mt5的内置功能,要求开发人员提供新的功能,如果你错过了什么,就自己写。

 
谢谢你的参与@SanSanych Fomenko,但你没能反驳我们的任何立场,目前的提纲也失败了。
 
雷纳特-法特库林

这样就不会有误解了。

  1. 上述R函数的翻译/相似性是正确的
  2. 在MQL5中使用R的逻辑几乎是相同的,而且MQL5中的代码更清晰
  3. MQL5中提到的函数的所有代码都在干净的源代码中呈现,包括检查单元测试(在R中它们在哪里?)
  4. MQL5中的计算比R中的计算快数倍。
  5. 我们的专家擅长数学,和那些写R的人一样优秀(或更好)。
这是一个将复杂数学引入标准 MQL5 的漫长旅程的开始。现在Alglib、Fuzzy和Stat都在那里。

今天,我们将发布一个类似于R中的plot的图形库。我们已经在努力扩展Mat库的功能,Stat的形式是几十个新函数。

这只是一个假期