非滞后工具 - 页 47

 

你从不睡觉 ????

现在是法国的凌晨1点...

也只是为了确定一下。在最后,我们的第一个和是nlmprices[r-k]。

它是所有价格的总和还是以m为动量 的所有价格的总和(可以是1、2或更多,如RMI?

我这么说是因为我的代码很奇怪,当我把Length>6的时候,NonLagMa就不在蜡烛上了,而是在下面,因为它与其他MA(Tillson, SSmoother等)不一样。

谢谢

Zilliq

 

例如,一个长度为4的非拉格玛:还行

但是蓝色的长度为9,远远低于红色的Tillson MA,后者在蜡烛上的长度为6,而且更加平稳。

这是符合逻辑的,但NonlagMa似乎反应更快,但不那么平滑,是吗?

附加的文件:
 
zilliq:
例如,一个长度为4的nonlagma:它是可以的。

但是,蓝色的长度为9,远远低于红色的Tillson MA,他的长度为6,在蜡烛上停留,而且更平稳。

这是符合逻辑的,但NonlagMa似乎反应更快,但不太平滑,对吗?

zilliq

是的。作为一条经验法则,一些过滤器的反应越快(除非它是一个拟合/重新计算的过滤器),它就越不平滑。

 

我想我的代码有问题,因为在长度为1的情况下,NonlagMa不在价格上,与你的代码不同。

我将寻找问题所在,似乎是在阿尔法上。

见U

Zilliq

 
zilliq:
我想我的代码有问题,因为长度为1时,NonlagMa不在价格上,与你的代码不同。

我将寻求问题出在哪里,似乎是在阿尔法上。

见U

Zilliq

Zillq

长度1应该等于价格本身(对于长度1,每个平均值必须返回价格本身)。

 

嗨,姆拉登。

我希望你一切顺利。

我想我已经成功地完成了Nonlagma的编码工作

我看到一个非常奇怪的现象:它似乎与T3 Tillson非常相似,正如你在我的图上看到的那样(紫色的是Nonlagma,蓝色的是T3)。你见过这种情况吗,你有什么解释吗?T3更平滑,有同样的 "非拉格 "位移。我认为Nonlagma会更好。

也许这是一个愚蠢的问题,但对你来说,什么是 "最好的 "MA(T3、Oma、NonlagMa、Hull等),谁意味着最好的平滑/非拉格比率?

祝您有一个愉快的夜晚,感谢您的帮助

Zilliq

附加的文件:
 
zilliq:
嗨,Mladen。

我希望你没事。

我想我成功地完成了Nonlagma的编码。

我看到一个非常奇怪的现象:它似乎与T3 Tillson非常相似,正如你在我的图上看到的那样(紫色的是Nonlagma,蓝色的是T3)。你见过这种情况吗,你有什么解释吗?T3更平滑,有同样的 "非拉格 "位移。我认为Nonlagma会更好。

也许这是一个愚蠢的问题,但对你来说,什么是 "最好的 "MA(T3、Oma、NonlagMa、Hull等),谁意味着最好的平滑/非拉格比率?

祝您有一个愉快的夜晚,感谢您的帮助

Zilliq

zilliq

每一个平均数,如果你比较短的时期,看起来也像另一个平均数(这就是为什么,例如,适应性平均数在短时期内看起来像任何其他平均数--它们根本没有 "空间 "来显示它们实际上是什么样的)。

只有当计算周期 足够长时,你才能看到其中的差别。下面是一个25个周期的T3和非滞后MA的比较--随着周期的增长,差别会越来越大--橙色是非滞后MA,绿色是T3

附加的文件:
comparison.gif  65 kb
 

谢谢姆拉登。

我明白了,你的图上很清楚。

这很奇怪,因为当我在我的图表上使用nonlagma I代码时,它不像你的图表上的价格那么接近(蓝色是T3紫色是Nonlagma) ,这里的周期是20

我知道这和MT4的代码语言不一样,但你能确认我们对每个价格的alfa的计算吗。

*************************************

pi=3.14159265358979323846264338327950288

周期e=4

Coeff=3*pi

相位=长度-1

Len=Length*Cyclee+Phase

重量=0

总和=0

for i=0 to Len

如果i<=相位1,那么

t = 1.0*i/(Phase-1)

否则

t = 1.0 + (i-Phase+1)*(2.0*Cyclee-1.0) /(Cyclee*Length-1.0)

结束语

beta = Cos(pi*t)

g = 1.0/(Coeff*t+1)

如果t <= 0.5 那么

g = 1

endif

alfa = g * beta

sum=close*alfa

weight=alfa

下一步

**************************

因为我似乎有一个很大的差异,我不明白为什么

之后,我们将所有的alfa*price加在 "Length "的周期上。

在alfa上也是如此,我们将所有alfa加在Length周期上

****************************

sum1=summation[Length](sum)

weight1=summation[Length](weight)

nonlagma=sum1/weight1

****************************

但我没有相同的Nonlagma。

我在MT4的代码中错过了什么吗?

谢谢你的帮助

Zilliq

附加的文件:
 
zilliq:
谢谢 Mladen,

我明白了,你的图上很清楚。

这很奇怪,因为当我在我的图表上使用nonlagma I代码时,它不像你的图表上的价格那么接近(蓝色是T3,紫色是Nonlagma) ,周期为20。

我知道这和MT4的代码语言不一样,但你能确认我们对每个价格的alfa的计算吗。

*************************************

pi=3.14159265358979323846264338327950288

周期e=4

Coeff=3*pi

相位=长度-1

Len=Length*Cyclee+Phase

重量=0

总和=0

for i=0 to Len

如果i<=相位1,那么

t = 1.0*i/(Phase-1)

否则

t = 1.0 + (i-Phase+1)*(2.0*Cyclee-1.0)/(Cyclee*Length-1.0)

结束语

beta = Cos(pi*t)

g = 1.0/(Coeff*t+1)

如果t <= 0.5 那么

g = 1

endif

alfa = g * beta

sum=close*alfa

weight=alfa

下一步

**************************

因为我似乎有一个很大的差异,我不明白为什么

之后,我们将所有的alfa*price加在 "Length "的周期上。

在alfa上也是如此,我们将所有alfa加在Length周期上

****************************

sum1=summation[Length](sum)

weight1=summation[Length](weight)

nonlagma=sum1/weight1

****************************

但我没有相同的Nonlagma。

我在MT4的代码中错过了什么吗?

谢谢你的帮助

Zilliq

余弦函数 在你的平台上是如何工作的:它是使用弧度还是度作为参数?

Metatrader的余弦是使用弧度的。

 

我们也使用弧度

可能是一种解释。在MT4的代码中,我们用价格乘以阿尔法

我想这是价格,我之前的périods,不是吗?

因此,我们需要添加,例如,在长度为5的情况下

alfa*close[4]+alfa*close[3]+alfa*close[2]+alfa*close[1] and alfa*close

alfa[4]*close[4]+alfa[3]*close[3]+alfa[2]*close[2]+alfa[1]*close[1] 和 alfa*close ?

这很奇怪,因为长度为1时,len等于4(4*1+0),所以nonlagma不可能等于close,因为我们把最后4期的alfa*price加在一起。

谢谢你接下来的评论

Zilliq

我使用了你的代码,但是为了更好的理解,我使用了NonlagMav3的最简单的代码

double pi = 3.1415926535;

double Coeff = 3*pi;

int Phase = Length-1;

double Len = Length*Cycle + Phase;

if ( counted_bars > 0 ) limit=Bars-counted_bars;

if ( counted_bars < 0 ) return(0);

如果 ( counted_bars ==0 ) limit=Bars-Len-1;

for(shift=limit;shift>=0;shift--)

{

Weight=0; Sum=0; t=0;

for (i=0;i<=Len-1;i++)

{

g=1.0/(Coeff*t+1)。

如果(t <= 0.5 ) g = 1;

beta = MathCos(pi*t)。

alfa = g * beta;

价格 = iMA(NULL,0,1,0,MODE_SMA,Price,shift+i)。

Sum += alfa*price;

Weight += alfa;

if ( t < 1 ) t += 1.0/(Phase-1);

else if ( t < Len-1 ) t += (2*Cycle-1)/(Cycle*Length-1);

}

如果( Weight > 0) MABuffer[shift] = Sum/Weight;