[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 670

 
artmedia70:

当前所有的EA计算完成之前,一个新的tick到达的概率是多少?在我看来,只有在这种情况下,数据才会变得陈旧和不相关。

我检查了你的代码计算的时间--我也是,只是最近有疑问,MT4的计算速度对我的EA来说是否足够,结果是现在足够了,我的代码大约需要18毫秒,即在1秒内你被检查55次,每分钟有10到70个点,如果每分钟超过50个点,这意味着有一个蜡烛。

试着看看你的代码是如何工作的,就像这样

int tik,barM1


int init(){
   barM1  = Bars;
   tik = 0;

return (0);
}


//_______________________________________________________
//  это добавить в start()
//_______________________________________________________
int start=GetTickCount();
 

 // некие серьёзные вычисления...


tik++;
Print("Время вычисления ", GetTickCount()-start, " миллисекунд.");

int counted  = Bars;
if (counted != barM1) {
print("за один бар было принято ",tik, "тиков" )
tik=0;
barM1=counted;
}

这是计算刻度的指标--用于核对

好吧,如果你有一个开盘价,抱歉我错过了

OpnPrice =iOpen(NULL,PERIOD_M5,0); 你可以只在一个闭合的酒吧改变 - 上面的代码与条件if(counted != barM1) {

附加的文件:
 

如何改变指标iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0)在专家体中计算时小数点后的数字?结果显示为4(即0.0001),而为了准确分析,应该显示为5(如0.00012)。而MT4终端在图表上的指标窗口显示5位数的数值。

 
NormalizeDouble() 操作符将解决你的问题。
 
Roger:
NormalizeDouble()操作符将解决你的问题。


例如,NormalizeDouble(iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0),5)将产生 所需的0.00012 ?

P.S. 添加并测试--没有什么。输出只是0.00010,也就是4位...

 

不,不完全正确,罗杰

IndicatorDigits() 见Boris.但它必须插入指标本身,因为它将参考它,而不是参考EA。

P.S. 另一件事:这个功能只适用于你有代码的指标。然后就可以用iCustom()来调用它。

而对于那些被称为 "标准 "的,如iMACD(),我不知道正确的解决方案。

 
pathfinder1:

那么,NormalizeDouble(iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0),5)的结果将是想要的0.00000?

是的,这是正确的。关键短语是在EA正文的计算中? 显然,在标准指标下这是不可能的((())。
 
pathfinder1:

如何改变指标iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0)在专家体中计算时小数点后的数字?结果显示为4(即0.0001),而为了准确分析,应该显示为5(如0.00012)。而MT4终端在图表上的指标窗口显示5位数的数值。

你不应该改变任何东西,标准指标中的精度被设置为最大(最多8位),你对数据输出精度的结论是错误的,因为Print() 默认输出最多4位,在计算中(例如在Expert Advisors的肠道中)使用最大精度,你需要通过DoubleToStr()输出双数 ,作为一个例子

Print("iMACD ", DoubleToStr(iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0), 8));

我们得到这样的输出。

 
ToLik_SRGV:

你不需要改变任何东西,在标准指标中,精度被设置为最大(最多8位),你对数据输出精度的结论是错误的,因为Print() 默认输出最多4位,在计算中(例如在专家顾问的肠道中)使用最大精度,要看到这一点,你需要通过DoubleToStr()输出双数 作为一个例子。

而我们得到了这样一个输出。


对,对,对 !!! 安纳托利--伟大的赞誉,我正在为这个问题而烦恼。

生活的真相是 "一个头是好的,但两个头更好"(引用)。

 
ToLik_SRGV:

不需要改变任何东西,标准指标已设置为最大精度(最多8位)。


这是正确的,我也有同样的怀疑 :)
 
正如经常发生的那样--真相就在表面))我承认我的错误。
原因: