文章 "MQL5 中的统计分布 - 取最佳的 R" - 页 9

 
Sergiy Podolyak:


和你一样,我把程序的可读性放在首位,而不是 OOP。

现在,让我们来看看您的帖子中关于不同语言程序可读性的实质内容。

让我们抛开 C 语言不谈--它与此无关

让我们把实际中遇到的问题简单化。

下面是 R 语言的代码

a<- b + c

这段代码在 MKL 中是怎样的?完全不知道,因为对于 MKL 来说,必须明确 b 和 c 是什么。

让我来说明一下:矢量

所以您的代码 1

然后我改变了主意,认为这些是矩阵。您的代码在 MCL #2 上会是什么样子?在 R 上,代码与上面的一样,但在 MCL 上会发生什么?可见性会发生什么变化?

然后我改变了主意,决定将其中一个的偶数元素与另一个的奇数元素相加。在 R 中,这些都是索引,本身就是操作对象。

现在你在 MKL #3 上的代码呢?

MKL 没有处理复杂对象的工具,我可以在这里将这个想法向复杂化的方向发展。在 R 上只需几行代码,而在 MKL..... 上只需几行代码。如果你根本不需要从一组对象中创建一个复杂对象。

这是关于数据结构

现在是功能。我们暂且不谈 MKL 中完全不可用的功能,但数以万计的功能都是不可用的。我们来看看可用的功能。随机森林。

所以代码在 R 中。

# подгонка и предсказание на наборе обучения целиком
        set.seed(849)
        rf              <- randomForest(trainX, trainY, 
                                                mtry    =       3,
                                                nodesize = 1,
                                                ntree   =       300); rf
        plot(rf)
        
        # ---------------------------------
        #  рисуем результат
        roc.plot(as.integer(as.factor(trainY))-1,
                 rf$votes[,2], main="")
        # ---------------------------------
        #  Предсказываем
                pred_rf         <-  predict(rf, 
                                                newdata = testX, 
                                                type = "response")
        # ---------------------------------
        #  сравниваем вне выборки
        table(pred_rf,  testY,       dnn = c("预测", "事实"))

现在你的答案是 alglib,但别忘了 ashi。我们能不能不要从 alglib 中复制几十页的疯狂代码?

您给出的比较在 C 和 MCL 中是正确的,但在 R 中绝对不正确。从 MKL 到 R 重写代码是疯狂的。R 语言有一个庞大的工具包(8000 个软件包和大约 13 万个函数),您应该在事先了解 R 语言的功能之后再使用 R 语言进行编写,而不是将代码从一种语言重写到另一种语言。

PS.

我想指出的是,这是预测 H4 移动方向的真实 EA 的一部分。

 
Sergiy Podolyak:


您引用的比较完全不正确。


R 是一种超一流的算法语言,它有很多 MKL 没有的功能。原因显而易见。MKL 源于终端,而 R 源于统计。因此,我反对对这两种语言的算法能力进行任何比较--它们针对的是不同的学科领域。

我所写的关于 R 的所有内容都是说,R 是 MKL 的补充,而且是在交易的最重要部分--对头寸进行决策时--的补充。

[删除]  
СанСаныч Фоменко:

和你一样,我把程序的可读性放在首位,而不是 OOP。

现在,让我们来看看您的帖子中关于不同语言程序可读性的实质内容。

.......

San-Sanych,亲爱的,我是一名程序员。你明白吗?

不,你不明白。

我是一个程序员。

也就是说,我是一个不会重复工作的

编程本身,以及所有控制论、所有计算数学、所有数学--这一切都源于懒惰--不做重复的工作。

因此,我不会再去学习某种 R 语言的火星语法。

为什么?因为我特别懒(读作:"经验丰富的肤浅程序员"),不会沉迷于新语法和新框架,而这些语法和框架数不胜数。

其次:任何新框架的愚蠢或半愚蠢语法都会使我的数学思维失去清晰度。你知道吗?

我越是沉浸于那些不知是谁用不知是谁的思维写出来的新框架,我就越会被我的 "为什么会这样 "的问题搞得晕头转向。这可不是什么好事。当你接受一种新的语法时,你也就接受了它的作者的思维方式,这会影响你的世界观。 英语的作者是英国人和美国人--他们在当时一般都是正直的人。C 语言和 MQL4 语法的作者是一群高素质的程序员。而 R 语言语法的作者是一位无名的匿名作者,他是一位物理学家,可能是一个精神分裂的疯子。

而 C 语言(以及 MQL4-5)则不存在这个问题,它尽可能地接近英语,而算法和数学文本都是用英语书写的。

因此,当所有的年轻人都在快速地从一个框架奔向另一个框架时,我却在慢慢 咀嚼我的草 ,研究算法,然后慢慢地从山上下来 ,思考如何将它分解成易于理解的小子程序,然后........ 写出一个工作程序,并忠实地为我服务了 20 多年。

在我的 OBz 子程序库中,我在最前面提到过,有一个用高斯-焦尔达诺(Gauss-Giordano)求解线性方程组的程序,是我在 1998-1999 年间用 C 语言写的,也就是 16-17 年前。它的工作原理和以前一样,没有什么需要改动的地方。更准确地说,在将它从 C 语言转到 MQL4 时,发现了一个错误,在极少数情况下可能导致结果不准确。MQL4-5 编译器生成了一个正确的警告,16 年来,包括 Watcom、Borland、Lattice C (MSVisual Studio) 在内的许多不同版本的编译器都从未生成过这样的警告。

感谢元引号。

 
СанСаныч Фоменко:
您引用的比较完全不正确。


R 是一种超一流的算法语言,它有很多 MKL 没有的功能。原因显而易见。MKL 源于终端,而 R 源于统计。因此,我反对对这两种语言的算法能力进行任何比较--它们针对的是不同的学科领域。

我所写的关于 R 的所有内容都是说,R 是 MKL 的补充,而且是在交易的最重要部分--对头寸进行决策时--的补充。

多亏了您详细介绍 R 语言的文章,我才开始了解它的真谛。从您对这种语言的描述中,我得到的印象是,它不是建立在简单函数的基础上,而是建立在整个机制的基础上,每个机制都是为了解决自己的一类任务,并通过简短的调用启动。当然,这样的功能看起来很吸引人,但与这样的巨头联合会使 MQL 自身的发展停滞不前。

尽管其他语言有很多优势,但我个人还是希望 MQL 能够独立成长和发展,而不是被别人的力量所 "宠坏"。

独立自主发展的权利是人生最宝贵的权利。

你以一个从外面来到 MQL 的人,一个已经成型的专家的逻辑来争论,我则以一个在 MQL "长大 "的人的逻辑来争论。

我们无法相互理解。

 

是的,我来自外部,无法帮助自己.....。

下面这句话出自一个外来人之口,看起来是这样的。

所以这句话

独立自主发展的权利是人生最宝贵的权利。

补充:

说着,莫格利又吐出了他前 16 年领悟到的智慧:

"你我血脉相连"。

PS.

起初想作为对上一个帖子的回复,但后来改变了主意,因为这适用于论坛上的许多人。

PSPS

男人们

用你生命中的 3 个小时来代替这个论坛吧。放 R,放拨浪鼓,把我的文章 以说明和本文附录的形式拿出来,这样就不用在源数据上浪费时间了,在你到达山坡之前,你就会发现自己坐在一个洞里....。

这只是三四个小时的问题。你的大脑会与众不同。这就价值连城了。

 
СанСаныч Фоменко:

和你一样,我把程序的可读性放在首位,而不是 OOP。

现在,让我们来看看您的帖子中关于不同语言程序可读性的实质内容。

让我们抛开 C 语言不谈--它与此无关

让我们把实际中遇到的问题简单化。

下面是 R 语言的代码

a<- b + c

这段代码在 MKL 中是怎样的?我们完全不知道,因为对于 MKL 来说,有必要说明 b 和 c 是什么。

我想问几个问题。

1.您是否了解 R 是用 C++ 编写的,R 本质上是 C++ 函数和类的封装集?这是否等同于在 C 语言中收集了一堆 stat 和 mat 库,并将其形式化为类,然后将其称为 D?

2.如果你理解了我在第一个问题中提出的问题,那么下面是第二个问题:你是否理解在 MQL 中矩阵、向量或其他任何东西都可以是这样的:

a=b+c;

?

 
СанСаныч Фоменко:

是的,我来自外部,无法帮助自己.....。

下面这句话出自一个外来人之口,看起来是这样的。

所以这句话

独立自主发展的权利是人生最宝贵的权利。

补充:

说着,莫格利又吐出了他前 16 年领悟到的智慧:

"你我血脉相连"。

PS.

起初想作为对上一个帖子的回复,但后来改变了主意,因为这适用于论坛上的许多人。

PSPS

男人们

用你生命中的 3 个小时来代替这个论坛吧。放 R,放拨浪鼓,把我的文章 以说明和本文附录的形式拿出来,这样就不用在源数据上浪费时间了,在你到达山坡之前,你就会发现自己坐在一个洞里....。

这只是三四个小时的问题。你的大脑会与众不同。这就价值连城了。

展示你个人使用 R 语言的成果。

展示你的才能,而不是 R 开发人员的才能。

你能做到吗?

有才能的人需要问题,没才能的人需要解决方案。

 
Реter Konow:

展示你个人使用 R 语言的成果。

展示你的才能,而不是 R 开发人员的才能。

你能吗?

有才能的人需要一个问题,没有才能的人需要一个解决方案。

这个问题问得好。我同意。
 
Реter Konow:

展示你个人使用 R 语言的成果。

展示你的才能,而不是 R 开发人员的才能。

你能吗?

有才能的人需要一个问题,没有才能的人需要一个解决方案。

什么叫 "展示"?

我有一个 PAMM,因为英镑现在不工作了....。

这不是重点....

我写的是关于模特的文章,但不是关于模特的--它始终是关于钱的,或者更准确地说,是关于未来是否一定能收到钱的。

我认为,金融市场交易系统的主要问题不在于是否应用了复杂的数学模型,而在于对这些模型的过度训练(过度拟合)。过度训练的表现是,随着时间的推移(如果不是立即),TS 会失去与其训练相关的性能。

为了解决这个问题,我试图证明我开发的交易系统没有过度训练。也就是说,我想确保 TS 的未来表现不会有太大变化,而且无论如何也不会耗尽我的存款。

我正忙于这项工作。R 中有大量完成这项任务所需的工具。MKL 中根本没有相应的工具。

请看 Burnakov 关于机器学习的主题。我曾在那里详细讨论过这个问题。顺便说一句,我并不是唯一一个这样做的人。

 
СанСаныч Фоменко:

为了解决这个问题,我试图证明我所开发的交易系统没有变形。也就是说,我想确保 TS 的未来性能指标不会有太大变化,而且无论如何也不会耗尽我的存款

我正忙于这项工作。R 中有大量完成这项任务所需的工具。MKL 中根本没有相应的工具。

有人告诉您,您会使用现成的解决方案来完成任务,您会对别人已经完成的任务感到满意,您不会在 R(R 开发人员的才能)中已有的东西之外再创造新的东西。而要对粗体字所强调的内容有信心,你需要的不仅仅是 R 中的现成解决方案,你至少需要有能力查看别人所创建的内容,你需要能够并有能力改变它或创建新的内容。否则,你永远不会有信心。