Print("This is the data in the T3"+"\t "+limit+"\t "+period+"\t "+priceType);
Print("Info Indicator from the Indicator "+IndicatorCounted() );
if (t3.period != period)
{
t3.period = period;
b2 = b*b;
b3 = b2*b;
c1 = -b3;
c2 = (3*(b2+b3));
c3 = -3*(2*b2+b+b3);
c4 = (1+3*b+b3+3*b2);
w1 = 2 / (2 + 0.5*(MathMax(1,period)-1));
w2 = 1 - w1;
}
//
//
//
//
//
for(int i=limit; i>=0; i--)
{
if(i == index_posi)
{
//v_manipul=
double price = v_manipul;
e1 = w1*price + w2*ae1;
e2 = w1*e1 + w2*ae2;
e3 = w1*e2 + w2*ae3;
e4 = w1*e3 + w2*ae4;
e5 = w1*e4 + w2*ae5;
e6 = w1*e5 + w2*ae6;
t3Array=c1*e6 + c2*e5 + c3*e4 + c4*e3;
ae1 = e1;
ae2 = e2;
ae3 = e3;
ae4 = e4;
ae5 = e5;
ae6 = e6;
}else{
price = iMA(NULL,0,1,0,MODE_SMA,priceType,i);
e1 = w1*price + w2*ae1;
e2 = w1*e1 + w2*ae2;
e3 = w1*e2 + w2*ae3;
e4 = w1*e3 + w2*ae4;
e5 = w1*e4 + w2*ae5;
e6 = w1*e5 + w2*ae6;
t3Array=c1*e6 + c2*e5 + c3*e4 + c4*e3;
ae1 = e1;
ae2 = e2;
ae3 = e3;
ae4 = e4;
ae5 = e5;
ae6 = e6;
}
}
}[/CODE]
I am trying to adapt it inside an Expert so it can be call to calculate any t3_clean value on demand, by changing the last bar value. e.g, the t3 for the bar 83.8167 is 85.9751; what if the bar was 81 and not 83 ? ect..., so so far, this is my code :
[CODE]
double CalculateT3(int limit,int period,int priceType,int index_posi, double v_manipul, int index_i)
{
double t3Array[];
double ae1[];
double ae2[];
double ae3[];
double ae4[];
double ae5[];
double ae6[];
ArrayResize( t3Array, limit);
ArrayResize( ae1, limit);
ArrayResize( ae2, limit);
ArrayResize( ae3, limit);
ArrayResize( ae4, limit);
ArrayResize( ae5, limit);
ArrayResize( ae6, limit);
Print("This is the data in the T3 FROM THE EA >>>>>> "+"\t "+limit+"\t "+period+"\t "+priceType);
Print("Info Indicator from the Indicator FROM THE EA <<<<<<<< "+IndicatorCounted() );
if (t3.period != period)
{
t3.period = period;
b2 = b*b;
b3 = b2*b;
c1 = -b3;
c2 = (3*(b2+b3));
c3 = -3*(2*b2+b+b3);
c4 = (1+3*b+b3+3*b2);
w1 = 2 / (2 + 0.5*(MathMax(1,period)-1));
w2 = 1 - w1;
}
Print("Voici w in the EA A VOIT XXXXXXXXX>>>XXXX<<>>"+w2+" "+w1);
//
//
//
//
//
for(int i=limit; i>=0; i--)
{
if(i == index_posi)
{
//v_manipul=
double price = v_manipul;
e1 = w1*price + w2*ae1;
e2 = w1*e1 + w2*ae2;
e3 = w1*e2 + w2*ae3;
e4 = w1*e3 + w2*ae4;
e5 = w1*e4 + w2*ae5;
e6 = w1*e5 + w2*ae6;
t3Array=c1*e6 + c2*e5 + c3*e4 + c4*e3;
ae1 = e1;
ae2 = e2;
ae3 = e3;
ae4 = e4;
ae5 = e5;
ae6 = e6;
Print("PREMIERE ETAPE DATA DANS LARRAY ]]]]]]]]]]]]]]}}}}} "+t3Array);
}else{
price = iMA(NULL,0,1,0,MODE_SMA,priceType,i);
e1 = w1*price + w2*ae1;
e2 = w1*e1 + w2*ae2;
e3 = w1*e2 + w2*ae3;
e4 = w1*e3 + w2*ae4;
e5 = w1*e4 + w2*ae5;
e6 = w1*e5 + w2*ae6;
t3Array=c1*e6 + c2*e5 + c3*e4 + c4*e3;
ae1 = e1;
ae2 = e2;
ae3 = e3;
ae4 = e4;
ae5 = e5;
ae6 = e6;
double op = c1*e6 + c2*e5 + c3*e4 + c4*e3;
Print("DEUXIEME ETAPE DATA DANS LARRAY ]]]]]]]]]]]]]]}}}}} "+op);
嗨,伙计们。
我完全不会编程,但我设法把我喜欢的这两个指标结合起来(一个是fxbs做的,另一个我不知道),所以基本上你有一个T3MA,它不是在其角度变化时改变颜色(像All_Averages_V2.2),而是在它被价格穿透时改变颜色。
RoundPrice indie是Ma_RoundPrice发挥作用的必要条件。
请享用。亲爱的SVGuss
我试图在MT4编辑器上编译它,但我有一个错误信息--"breakBars "变量未定义。
有什么办法可以解决吗?
谢谢
丹![](https://c.mql5.com/forextsd/smiles/embaressed_smile.png)
亲爱的SVGuss
我试图在MT4编辑器上编译它,但我有一个错误信息--"breakBars "变量未定义。
有什么办法可以解决吗?
请注意
Dan你好,dansmol。
你还需要在指标文件夹中设置`RoundPriceNE_big_mod[5dig]`。( 对不起,我没有mq4文件)
祝你有一个好的WE
Tomcat
博斯特
我知道帖子中的指标发生了什么(当我有一天对tro的美丽工作 "过度高兴 "时,它被我删除了),但现在我在我的电脑上找不到那个版本(那是很久很久以前的事了......)。
无论如何,在这段时间里,metatrader设法修复了他们在iStdDevOnArray()函数上的错误,所以现在可以使用原来的指标,因为不再需要单独的自定义iStdDevOnArray()函数。
问候
姆拉登你好。
那一个?
指标文件夹中的KAMA
PriceSeries在include文件夹中。
希望有帮助。
祝你有一个好的WE。
Tomcat
Tomcat
这不是一个(我有一个自定义的偏差计算,取代了内置的 "on array "功能),但还是要感谢。
正如我所说的,自从metatrader的那个错误在一次更新中被纠正后,对自定义偏差计算的需求就不存在了,所以对那个版本的考夫曼自适应移动平均线指标的需求也不存在了。
问候
姆拉登
你好。
那一个?
KAMA在指标文件夹中
PriceSeries在include文件夹中。
希望有帮助。
祝你有一个好的WE。
汤姆猫嗨,dansmol。
这里是固定的;你还需要在指标文件夹里有`RoundPriceNE_big_mod[5dig]`。( 对不起,我没有mq4文件)
祝你有一个好的WE
汤姆猫非常感谢 tomcat98
注意事项
丹![](https://c.mql5.com/forextsd/smiles/hail.png)
从EA中计算t3_clean,而不是从指标中计算
大家好!我希望能够从EA而不是指标中计算不同的t3_clean值,这样我就可以操纵用于计算指标的最后价格。我正在使用:来自mladen的t3_clean,网址是https://www.mql5.com/en/forum/173058/page4。
任何帮助都将是巨大的。
所以在t3_clean代码中我们有这样的代码块。
double CalculateT3(int limit,int period,int priceType)
{
Print("This is the data in the T3"+"\t "+limit+"\t "+period+"\t "+priceType);
Print("Info Indicator from the Indicator "+IndicatorCounted() );
if (t3.period != period)
{
t3.period = period;
b2 = b*b;
b3 = b2*b;
c1 = -b3;
c2 = (3*(b2+b3));
c3 = -3*(2*b2+b+b3);
c4 = (1+3*b+b3+3*b2);
w1 = 2 / (2 + 0.5*(MathMax(1,period)-1));
w2 = 1 - w1;
}
//
//
//
//
//
for(int i=limit; i>=0; i--)
{
if(i == index_posi)
{
//v_manipul=
double price = v_manipul;
e1 = w1*price + w2*ae1;
e2 = w1*e1 + w2*ae2;
e3 = w1*e2 + w2*ae3;
e4 = w1*e3 + w2*ae4;
e5 = w1*e4 + w2*ae5;
e6 = w1*e5 + w2*ae6;
t3Array=c1*e6 + c2*e5 + c3*e4 + c4*e3;
ae1 = e1;
ae2 = e2;
ae3 = e3;
ae4 = e4;
ae5 = e5;
ae6 = e6;
}else{
price = iMA(NULL,0,1,0,MODE_SMA,priceType,i);
e1 = w1*price + w2*ae1;
e2 = w1*e1 + w2*ae2;
e3 = w1*e2 + w2*ae3;
e4 = w1*e3 + w2*ae4;
e5 = w1*e4 + w2*ae5;
e6 = w1*e5 + w2*ae6;
t3Array=c1*e6 + c2*e5 + c3*e4 + c4*e3;
ae1 = e1;
ae2 = e2;
ae3 = e3;
ae4 = e4;
ae5 = e5;
ae6 = e6;
}
}
}[/CODE]
I am trying to adapt it inside an Expert so it can be call to calculate any t3_clean value on demand, by changing the last bar value. e.g, the t3 for the bar 83.8167 is 85.9751; what if the bar was 81 and not 83 ? ect..., so so far, this is my code :
[CODE]
double CalculateT3(int limit,int period,int priceType,int index_posi, double v_manipul, int index_i)
{
double t3Array[];
double ae1[];
double ae2[];
double ae3[];
double ae4[];
double ae5[];
double ae6[];
ArrayResize( t3Array, limit);
ArrayResize( ae1, limit);
ArrayResize( ae2, limit);
ArrayResize( ae3, limit);
ArrayResize( ae4, limit);
ArrayResize( ae5, limit);
ArrayResize( ae6, limit);
Print("This is the data in the T3 FROM THE EA >>>>>> "+"\t "+limit+"\t "+period+"\t "+priceType);
Print("Info Indicator from the Indicator FROM THE EA <<<<<<<< "+IndicatorCounted() );
if (t3.period != period)
{
t3.period = period;
b2 = b*b;
b3 = b2*b;
c1 = -b3;
c2 = (3*(b2+b3));
c3 = -3*(2*b2+b+b3);
c4 = (1+3*b+b3+3*b2);
w1 = 2 / (2 + 0.5*(MathMax(1,period)-1));
w2 = 1 - w1;
}
Print("Voici w in the EA A VOIT XXXXXXXXX>>>XXXX<<>>"+w2+" "+w1);
//
//
//
//
//
for(int i=limit; i>=0; i--)
{
if(i == index_posi)
{
//v_manipul=
double price = v_manipul;
e1 = w1*price + w2*ae1;
e2 = w1*e1 + w2*ae2;
e3 = w1*e2 + w2*ae3;
e4 = w1*e3 + w2*ae4;
e5 = w1*e4 + w2*ae5;
e6 = w1*e5 + w2*ae6;
t3Array=c1*e6 + c2*e5 + c3*e4 + c4*e3;
ae1 = e1;
ae2 = e2;
ae3 = e3;
ae4 = e4;
ae5 = e5;
ae6 = e6;
Print("PREMIERE ETAPE DATA DANS LARRAY ]]]]]]]]]]]]]]}}}}} "+t3Array);
}else{
price = iMA(NULL,0,1,0,MODE_SMA,priceType,i);
e1 = w1*price + w2*ae1;
e2 = w1*e1 + w2*ae2;
e3 = w1*e2 + w2*ae3;
e4 = w1*e3 + w2*ae4;
e5 = w1*e4 + w2*ae5;
e6 = w1*e5 + w2*ae6;
t3Array=c1*e6 + c2*e5 + c3*e4 + c4*e3;
ae1 = e1;
ae2 = e2;
ae3 = e3;
ae4 = e4;
ae5 = e5;
ae6 = e6;
double op = c1*e6 + c2*e5 + c3*e4 + c4*e3;
Print("DEUXIEME ETAPE DATA DANS LARRAY ]]]]]]]]]]]]]]}}}}} "+op);
Print("SHOW ME PRICE "+ ae1[0]);
}
}
return (t3Array);
}但它完全不起作用......有人能帮忙吗?
T3振荡器...
首先,我想用T3制作一个令人敬畏的 振荡器版本,但当我试过之后,发现用令人敬畏的振荡器计算长度(5,14)时,速度太快了。所以我决定将长度作为参数打开,并使用其他默认的计算长度。
这就是现在使用默认参数时的样子。
首先,我想用T3做一个超强震荡器的版本,但当我试过之后,发现用超强震荡器计算长度(5,14)的速度太快了。所以决定将长度作为参数打开,并使用其他默认的计算长度。
这就是现在默认参数下的样子。
用快/慢设置:6/12在仁科图表上,它是美丽的,可能是一个 "简单 "的策略。![](https://c.mql5.com/forextsd/smiles/biggrin.png)
谢谢mladen !
还有一个T3版本:T3 GMMA
对于短线(较短周期--较快)部分,将ShowLongGmma参数设置 为假。对于长(较长时期--较慢)的部分,将其设置为true,通过结合这两个参数,你可以得到这样的结果。