指标: 线性回归

 

线性回归:

线性回归

线性回归

作者: Mladen Rakic

 
Automated-Trading:

退步

作者: Mladen Rakic姆拉登-拉基奇

 
Automated-Trading:

退步

作者: Mladen Rakic姆拉登-拉基奇

您的版本似乎与以下数学版本相同:

https://www.mql5.com/zh/code/429

我在 NZDUSD,D1 上运行了 20 个周期,两者完全一致。

不同之处:

  • 您对斜率进行了颜色编码。

  • 他的版本可以 "移动 "条形图和点。

  • 你的可以切换 APPLIED_PRICE。
 
Anthony Garot:

您的版本似乎与数学相同:

https://www.mql5.com/zh/code/429

我在 NZDUSD D1 上以 20 为周期运行了这两个版本,结果完全一致。

差异:

  • 你用颜色代码表示斜率。

  • 他的可以 "移动 "条形图和点。

  • 你的软件可以切换 APPLIED_PRICE。

这种方法(3*lwma-2*sma)在帖子中的链接中有解释(请也查看该链接,该链接https://www.mql5.com/zh/articles/270),存在已久,并首次在本论坛上介绍(坦率地说,我不记得究竟是谁首次介绍了这种算法,我认为是 "mathematics",但请不要相信我的话)。

至于代码:我发布的代码是单程代码(因此速度很快),与尼古拉斯的代码没有任何共同之处,您也可以自己查看。发帖的目的是发布一种快速(CPU 方面的快速)的方法,这种方法足够灵活,可用于任何类型的代码。而且,根据所有测试,它在 metatrader 5 中的运行速度足够快,也足够灵活。

一切顺利

3 Methods of Indicators Acceleration by the Example of the Linear Regression
3 Methods of Indicators Acceleration by the Example of the Linear Regression
  • www.mql5.com
Fast calculation of the indicators is a vitally important task. Calculations can be accelerated by different methods. There are plenty of articles concerning this issue. And now we are going to examine 3 more methods to accelerate calculations and sometimes even to simplify a code itself. All described methods are algorithmic ones, i.e. we...
 
Mladen Rakic:


至于代码:我发布的代码是单程代码(因此速度很快),与 Nikolays 代码没有任何共同之处,您也可以自己查看。发帖的目的是发布一种快速(CPU 方面的快速)方法,这种方法足够灵活,可用于任何类型的代码。而且,根据所有测试,它在 metatrader 5 中的运行速度和灵活性都足够快。

好的。快就是好。我没有真正比较代码,只是比较结果;所以我错说了 "相同的数学"。

我使用 Nikolays 代码有一段时间了,是的,它是我拥有的最慢的指标。快就是好。

继续努力

 
Automated-Trading:

退步

作者: Mladen RakicMladen Rakic

实施得不错。祝贺你。

  • 这样做的目的是什么?混淆吗?
#define ¤ instance
#define _functionInstances 1
  • 有什么理由不在下面的代码中使用 >= 吗?)
   if(i>period)
 
Alain Verleyen:

实施得不错。祝贺你

  • 这样做的目的是什么?混淆?
  • 有什么理由不在下面的代码中使用 >= 吗?)

没有混淆:

"¤":我只是更喜欢这种方式(这是我自己的习惯--对我来说,这样的代码更具可读性--只要看一眼函数 代码,我就能清楚地知道在哪里使用了什么)。我可以直接将其用作参数名,但这样一来,当我输入函数名时,当自动填充显示参数名时,就会显得 "太隐晦"。

关于"_functionInstances":由于它将被翻译成编译时指令,因此可用于规划--如果我想使用多个函数实例(即:出于任何原因使用不同的参数),那么我只需更改定义值,然后编译成正确的数组分配数,以便与不同的参数一起使用--我不必考虑是否在代码中所有需要更改的地方都进行了更改。作为编译器时的指令,运行时不会产生任何代价。

至于">="--有两个原因:

  • 少了一个条件(在每次函数调用时都要执行),除非编译器将其转换为其他条件(">="),但从分析器的结果来看,在这种情况下,编译器将其作为 2 个条件而非 1 个条件使用
  • 这完全不会影响最终速度,而且还能确保为进一步处理正确设置所有条件(额外的初始和处理确保了这一点)
 
Mladen Rakic:

不混淆视听 :

"¤":我只是更喜欢这种方式(这是我自己的习惯--对我来说,这样的代码更易读--只要看一眼函数 代码,我就能清楚地知道在哪里使用了什么)。我可以直接将其用作参数名,但这样在输入函数名和自动填充显示参数名时就会 "太隐晦"。

关于"_functionInstances":由于它将被翻译成编译时指令,因此可用于规划--如果我想使用多个函数实例(即:出于任何原因使用不同的参数),那么我只需更改定义值,然后编译成正确的数组分配数,以便与不同的参数一起使用--我不必考虑是否在代码中所有需要更改的地方都进行了更改。作为编译器时的指令,没有运行时成本。

你应该试试 OOP 方法。

至于">="--有两个原因:

  • 少了一个条件(在每次函数调用时都要执行),除非编译器将其转换为其他条件(">="),但从剖析器的结果来看,在这种情况下,编译器将其作为 2 个条件而非 1 个条件使用
恐怕我不明白你的意思?
  • 这完全不会影响最终速度,而且还能确保为进一步处理正确设置所有条件(额外的初始和处理确保了这一点)。

当然,">"是有效的。我这么说只是想说你损失了 "1 个循环",当然这不会对最终速度有太大影响。"确保 "似乎更像是一种迷信;-)

 

Alain Verleyen:
You should try an OOP approach.

...

你的意思是这样的吧)

我在 OOP 模式下使用的是环形缓冲区方法,因此在整个计算过程中增加了一条修改指令。我想发布的结果也足够好:)


 
Mladen Rakic:

你是指这样的东西吧)

我在 OOP 模式下使用的是环形缓冲区方法,因此在整个计算过程中增加了一条调制指令。我认为发布的结果也足够好:)


是的,速度和内存之间总是存在折衷。

当然,OOP 的主要优势在于维护和可重用性,而不是速度。

 
我一直对正确的数学方法很感兴趣。x,y)的线性回归 模型非常适合市场。我用 NumPy 做了一些实验,使用(条形图、价格、成交量)(成交量加权),得到了类似的结果。此外,我还通过重复(时间、价格)、排序然后查找结果的方式,对成交量进行了加权量化回归。这在 NP 中很容易,但在 MQL5 中却不可能。