非滞后工具 - 页 48

 
zilliq:
我们也使用弧度

可能是一种解释。在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。

你应该使用alfa[4]*close[4]+alfa[3]*close[3]+alfa[2]*close[2]+alfa[1]*close[1]和alfa*close形式(每个元素的alpha都不同)

你为什么不做一个简单的版本,显示字母的值,并将其与metatrader 4中的字母值进行比较?

 

谢谢Mladen。

我将尝试这个

事实上,在MT4上,我有我的经纪人(Activtrade)的cfd价格,而在Prorealtime上,这是另一个现金流量,所以有一些很大的差异

非常感谢,回头见

Zilliq

 

我尝试了很多不同的方法,但都没有成功,我也不知道为什么。

我的代码似乎是好的。

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

weight=0

sum=0

for i=0 to Len

如果i<=相位1,那么

t = 1.0*i/(阶段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=sum+alfa*close

weight=weight+alfa

接下来

nonlagma=sum/weight

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

和你的相似,但是你在我的图上看到,nonlagma离close很远。

你知道为什么吗?你有Easy语言的NonlagMa代码吗(通常更容易抄写)?

非常感谢Mladen,我很累了...

见U

Zilliq

附加的文件:
 
zilliq:
好吧,我尝试了很多不同的方法,但都没有成功,我也不知道为什么

我的代码似乎是可以的。

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

weight=0

sum=0

for i=0 to Len

如果i<=相位1,那么

t = 1.0*i/(阶段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=sum+alfa*close

weight=weight+alfa

接下来

nonlagma=sum/weight

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

和你的相似,但是你在我的图上看到,nonlagma离close很远。

你知道为什么吗?你有Easy语言的NonlagMa代码吗(通常更容易抄写)?

非常感谢Mladen,我很累了...

见U

Zilliq

这里有一个只计算字母的版本:_nonlag_ma_alphas.mq4

在protrader中做一个类似的东西。一旦它们是相同的,之后应该很容易使非滞后马也是相同的。这个例子是针对50期的

附加的文件:
 

非常感谢Mladen。

我将用这第一步进行测试

见U

Zilliq

 

好吧。

首先:好消息是我有和你一样的欧元/美元,因为这将更容易比较

但实际上我并没有成功

你计算阿尔法的代码是。

double Cycle = 4.0;

double Coeff = 3.0*Pi;

int Phase = NlmPeriod-1;

int len = NlmPeriod*4 + Phase;

if (ArraySize(alphas) != len) ArrayResize(alphas,len)。

for (int k=0; k<len; k++)

{

如果(k<=Phase-1)

double t = 1.0 * k/(Phase-1);

否则t = 1.0 + (k-Phase+1)*(2.0*Cycle-1.0)/(Cycle*NlmPeriod-1.0)。

double beta = MathCos(Pi*t);

double g = 1.0/(Coeff*t+1); if (t <= 0.5 ) g = 1;

alphas[k] = g * beta。

}

for(int i=len-1; i>=0; i--) nlm = alphas;

所以,如果我有很好的理解。

1/ 第一段:它计算从0到len-1的所有alphas。

这就是。

alphas[k] = g * beta。

2/ 第二步,它将所有从0到len-1的字母加起来

这就是

for(int i=len-1; i>=0; i--) nlm = alphas;

问题是,我的图上总是有相同的字母?你怎么能在每根蜡烛上有不同的阿尔法,因为k、t等在每根蜡烛上都是一样的,而且不取决于收盘?

我在Prorealtime上的代码似乎是一样的。

Pi=3.14159265358979323846264338327950288

Cyclee = 4.0

Coeff = 3.0*Pi

相位=NlmPeriod-1

len = NlmPeriod*4 + Phase

alph=0

for k=0 to len-1

t=0

如果(k<=Phase-1) 那么

t = 1.0 * k/(Phase-1)

否则

t = 1.0 + (k-Phase+1)*(2.0*Cyclee-1.0)/(Cyclee*NlmPeriod-1.0)

结束语

beta = Cos(Pi*t)

g = 1.0/(Coeff*t+1)

如果(t <= 0.5 ) 那么

g = 1

endif

alphas= g * beta

alph=alph+alphas

接下来

 
zilliq:
好吧。

首先:好消息是我有和你一样的欧元/美元,因为这样更容易比较。

但实际上我并没有成功

你计算阿尔法的代码是。

double Cycle = 4.0;

double Coeff = 3.0*Pi;

int Phase = NlmPeriod-1;

int len = NlmPeriod*4 + Phase;

if (ArraySize(alphas) != len) ArrayResize(alphas,len)。

for (int k=0; k<len; k++)

{

如果(k<=Phase-1)

double t = 1.0 * k/(Phase-1);

否则t = 1.0 + (k-Phase+1)*(2.0*Cycle-1.0)/(Cycle*NlmPeriod-1.0)。

double beta = MathCos(Pi*t);

double g = 1.0/(Coeff*t+1); if (t <= 0.5 ) g = 1;

alphas[k] = g * beta。

}

for(int i=len-1; i>=0; i--) nlm = alphas;

所以,如果我有很好的理解。

1/ 第一段:它计算从0到len-1的所有alphas。

这就是。

alphas[k] = g * beta。

2/ 第二步,它将所有从0到len-1的字母加起来

这就是

for(int i=len-1; i>=0; i--) nlm = alphas;

问题是,我的图上总是有相同的字母?你怎么能在每根蜡烛上有不同的阿尔法,因为k、t等在每根蜡烛上都是一样的,而且不取决于收盘?

我在Prorealtime上的代码似乎是一样的。

Pi=3.14159265358979323846264338327950288

Cyclee = 4.0

Coeff = 3.0*Pi

相位=NlmPeriod-1

len = NlmPeriod*4 + Phase

alph=0

for k=0 to len-1

t=0

如果(k<=Phase-1) 那么

t = 1.0 * k/(Phase-1)

否则

t = 1.0 + (k-Phase+1)*(2.0*Cyclee-1.0)/(Cyclee*NlmPeriod-1.0)

结束语

beta = Cos(Pi*t)

g = 1.0/(Coeff*t+1)

如果(t <= 0.5 ) 那么

g = 1

endif

alphas= g * beta

alph=alph+alphas

下一个

Zilliq

正如我所说的:有一个数组的alphas

我所显示的是一个阿尔法数组--不考虑时间部分。这些是阿尔法数组中每一个阿尔法值的值,这些是应用于每个价格元素的权重,你用来计算的。

 

我可能不明白你所说的字母阵列是什么意思(我理解的是每支蜡烛上的字母不同),抱歉

我将再试一次...

 
zilliq:

我可能不理解你所说的字母阵列(我理解的是每支蜡烛上的不同字母),对不起。

我将再试一次...

Zilliq

价格0的系数(α)==1

价格1的系数(α)==0.9nnnnn

以此类推(因为它是由非滞后指数指标显示的),所有这些都用于连价,以获得当前的非滞后指数值。

 

好的,我想我理解了你的解释(你是伟大的 ),我用你的代码在MT4上做了不同的测试

从1到len-1的不同值的阿尔法思考价格,最后我们除以阿尔法的总和。

这就是为什么右边的第一个字母值总是1,这就是为什么即使我们改变ne nlm值,图形上的字母方面总是相同的那种蛇)。

好吧,我知道我需要寻求如何在Prorealtime上做到这一点...。