您的版本似乎与以下数学版本相同:
https://www.mql5.com/zh/code/429
我在 NZDUSD,D1 上运行了 20 个周期,两者完全一致。
不同之处:
- 您对斜率进行了颜色编码。
-
- 他的版本可以 "移动 "条形图和点。
-
- 你的可以切换 APPLIED_PRICE。
您的版本似乎与数学相同:
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 中的运行速度足够快,也足够灵活。
一切顺利
- www.mql5.com
实施得不错。祝贺你。
- 这样做的目的是什么?混淆吗?
#define ¤ instance #define _functionInstances 1
- 有什么理由不在下面的代码中使用 >= 吗?)
if(i>period)
实施得不错。祝贺你
- 这样做的目的是什么?混淆?
- 有什么理由不在下面的代码中使用 >= 吗?)
没有混淆:
"¤":我只是更喜欢这种方式(这是我自己的习惯--对我来说,这样的代码更具可读性--只要看一眼函数 代码,我就能清楚地知道在哪里使用了什么)。我可以直接将其用作参数名,但这样一来,当我输入函数名时,当自动填充显示参数名时,就会显得 "太隐晦"。
关于"_functionInstances":由于它将被翻译成编译时指令,因此可用于规划--如果我想使用多个函数实例(即:出于任何原因使用不同的参数),那么我只需更改定义值,然后编译成正确的数组分配数,以便与不同的参数一起使用--我不必考虑是否在代码中所有需要更改的地方都进行了更改。作为编译器时的指令,运行时不会产生任何代价。
至于">="--有两个原因:
- 少了一个条件(在每次函数调用时都要执行),除非编译器将其转换为其他条件(">="),但从分析器的结果来看,在这种情况下,编译器将其作为 2 个条件而非 1 个条件使用
- 这完全不会影响最终速度,而且还能确保为进一步处理正确设置所有条件(额外的初始和处理确保了这一点)
不混淆视听 :
"¤":我只是更喜欢这种方式(这是我自己的习惯--对我来说,这样的代码更易读--只要看一眼函数 代码,我就能清楚地知道在哪里使用了什么)。我可以直接将其用作参数名,但这样在输入函数名和自动填充显示参数名时就会 "太隐晦"。
关于"_functionInstances":由于它将被翻译成编译时指令,因此可用于规划--如果我想使用多个函数实例(即:出于任何原因使用不同的参数),那么我只需更改定义值,然后编译成正确的数组分配数,以便与不同的参数一起使用--我不必考虑是否在代码中所有需要更改的地方都进行了更改。作为编译器时的指令,没有运行时成本。
至于">="--有两个原因:
- 少了一个条件(在每次函数调用时都要执行),除非编译器将其转换为其他条件(">="),但从剖析器的结果来看,在这种情况下,编译器将其作为 2 个条件而非 1 个条件使用
- 这完全不会影响最终速度,而且还能确保为进一步处理正确设置所有条件(额外的初始和处理确保了这一点)。
当然,">"是有效的。我这么说只是想说你损失了 "1 个循环",当然这不会对最终速度有太大影响。"确保 "似乎更像是一种迷信;-)
你是指这样的东西吧)
我在 OOP 模式下使用的是环形缓冲区方法,因此在整个计算过程中增加了一条调制指令。我认为发布的结果也足够好:)
是的,速度和内存之间总是存在折衷。
当然,OOP 的主要优势在于维护和可重用性,而不是速度。

线性回归:
线性回归
作者: Mladen Rakic