新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1451

 
你能告诉我如何总结文中的所有数值吗?
void Hmin(){datetime   h = iBars(NULL,PERIOD_H1); 
       ObjectCreate(0,"Hmin"+h,OBJ_TEXT,1,TimeCurrent(),0);     
       double Hmin=ObjectDescription("Hmin"+h);     
       ObjectSetText("Hmin"+h,MathMin(Hmin,AccountEquity()-AccountBalance()),15,"Arial",clrWhite);
       ObjectSetInteger(0,"Hmin"+h,OBJPROP_ANCHOR,ANCHOR_RIGHT);  
           }
这段代码只创建了它们
 
Дмитрий:

下午好,请帮助我了解...

MathMax返回两个数值的最大值,即它从两个相同的数组high[rate_total]中返回最大的数值,其差值为-1和-2条?

简单地说:在第一个数组12345和第二个数组1234中,这个函数会返回5吗?

不,该函数将返回12345。

 
Дмитрий:

下午好,请帮助我了解...

MathMax返回两个数值的最大值,即它从两个相同的数组high[rate_total]中返回最大的数值,其差值为-1和-2条?

简单地说:第一个数组有12345,第二个数组有1234,这个函数会返回5吗?

它将返回两者的最大值,即high[rate_total-1]和high[rate_total-2]。

如果地址high[rate_total-1]包含值12345,而地址high[rate_total-2]包含值1234,这两个值哪个更大?

12345显然比1234要大一个数量级。将返回high[rate_total-1]的值12345。

 
Artyom Trishkin:

将返回high[rate_total-1]和high[rate_total-2]两处的最大值。

如果地址high[rate_total-1]包含值12345,而地址high[rate_total-2]包含值1234,这两个值哪个更大?

12345显然比1234要大一个数量级。将返回high[rate_total-1]的值12345。

谢谢...但是,如果high[rate_total-1]已经比high[rate_total-2]大一格,那么字符串的合理性就有问题了。

还是这里有不同的含义?

谢谢你。

 
Дмитрий:

谢谢你...但是,如果high[rate_total-1]已经比high[rate_total-2]多一格,这就引起了一个关于字符串的合理性的问题。

或者这里有什么其他的意义吗?

谢谢你。

酒吧与此有什么关系?

你是在比较同一个数组中两个柱子上的高值。rates_total-1和rate_total-2表示你要比较的是两根柱子的哪个数值。

你是在比较位于rate_total-1和rate_total-2的柱状图的High值,而不是指数的值。

你所想的是这样的:MathMax(rate_total-1, rates_total-2) - 这就是rate_total-1将永远被返回。

 
Rustam Bikbulatov:
你能告诉我如何将文本中的所有数值相加吗?这段代码只创建了

你想得到的是余额减去股权价值吗?

 
Artyom Trishkin:

酒吧与此有什么关系?

你正在比较"高 "的值,它在...

谢谢你...为了说明问题)
 

大家好!

在MT4中,在ALL TIKES模型上,在分钟烛台上,我正在测试专家顾问。我的任务是使程序在代码执行上花费的时间尽可能少。但令我吃惊的是!!!!

在这段代码中,程序检查每一个刻度,并花费6秒钟来执行代码。375毫秒。

void OnTick()
{
Tick++;
if (Tick!=x3)
{
Print("---------------------КАЖДЫЙ ТИК ----------Tick-----=",Tick);
x3=Tick;
}
}

在我看来,该程序不应该检查每一个刻度,而应该只检查每分钟蜡烛的第一个刻度,并在代码执行上花费更少的时间。

 
void OnTick()
{
Tick++;

if (Minute()!=x3)//&&Seconds()==0

{
Print("---------------------КАЖДЫЙ ТИК ----------Tick-----=",Tick, "  Bid  ",   Bid, "  LoY  ",   LoY);
x3=Minute();
}
}



但该程序花了6秒钟。219毫秒。由此我得出的结论是,尽管代码告诉程序每60秒只检查一次括号中的表达式,但它仍然在每一个刻度上检查这个表达式,并且花费的执行时间几乎与之前的代码一样多。
然后我把模型改为VALUABLE VALUES,并运行第二个变量。但该程序 的执行时间同样为6秒219毫秒。


问题.是否有可能在MT4的模型上 做一个ALL TICK 的程序,不检查每一个刻度,只检查新的一分钟蜡烛的第一个刻度,这将花费更少的时间来执行代码如果可以的话,可以使用什么功能或语言结构?
谢谢你。

 
datetime current, last;

void OnTick()
   {
   current=iTime(symbol,frame,0);
   if(last==current) return;
   last=current;

   } 
 
Aleksei Stepanenko:

修改了我的代码以配合你的代码

datetime current, last;
void OnTick()
{
Tick++;
current=iTime( NULL,0,0);
if(last==current) return;
last=current;
{
Print("---------------------КАЖДЫЙ ТИК ----------Tick-----=",Tick);
}
}


程序执行代码所需的时间....6 , 235,即比我的代码(6.375)少,但不是少几倍
。在我看来应该少几倍,因为程序只需要在每分钟的蜡烛开盘时检查一次刻度值。

在我看来,我们中的哪一个是错误的.....。


原因: