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

 

而我注意到的有趣的事情是......我没有注意到这种差异。

在mql4中,如果你通过StringConcatenate()函数来写这个字符串的加法,那么你会得到

eStr+=StringConcatenate(i,": ",eArray[i],", ");

而在mql5中,它只是

StringConcatenate(eStr, i, ": ", eArray[i], ", ");
也许我错误地没有使用这个............
 
Alexey Viktorov:

我不建议使用这个函数,因为它在MQL5中的工作方式与在MQL4中不同。因此,当你切换到MQL5时,可能很难理解


但也许我错了...

mql4

mql5

正如你所看到的,mql5与字符串的简单加法非常相似。

而类型转换在这个函数中进行,没有任何额外的顾虑。

是的,以前也讨论过这个问题。

的三个选项StringAdd()、StringConcatenate()和pluses。

优点是成本较低。

 
ANDREY:

为什么1.6251不能像i 一样明确地 投给 字符串?在我看来,它更短,而且节省了计算资源.....。

谢谢你的解释。

因为这样的转换可以给出一个多达16个(如果我的大脑还没有完全干涸的话)字符的值。而DoubleToString()将字符串 "修剪 "到指定的小数位数。一个整数i不管你怎么转,都是一个整数。

 
Alekseu Fedotov:

是的,曾经讨论过,我就不找了。

的三个选项StringAdd()、StringConcatenate()和pluses。

优点是成本较低。

也许......但我不赞成探究这种微小的差异。
 
TrederMT5:

修改了代码,仍然是在同一个地方的数组超出了范围

检查阵列中是否有N
double price[N];

总是取有效值?
 

你能告诉我如何使Print(),在值发生变化时打印一次吗?

      string symbol;
      long currChart=ChartFirst(); int i=0;
      while(currChart>=0)
        {
         if(ChartGetInteger(currChart,CHART_BRING_TO_TOP,0)==true) 
           { 
            if(ChartSymbol(currChart)!=symbol)
              {
               symbol=ChartSymbol(currChart); Print(symbol);
              }
           } 
         currChart=ChartNext(currChart);  i++;
        }
 
MakarFX:

告诉我如何使Print(),在值改变时打印一次

设置计数器

      string symbol;
      long currChart=ChartFirst(); int i=0;
      while(currChart>=0)
        {
         if(ChartGetInteger(currChart,CHART_BRING_TO_TOP,0)==true) 
           { 
            if(ChartSymbol(currChart)!=symbol)
              {
               i++;
               symbol=ChartSymbol(currChart); 
               if(i==1) Print(symbol);
              }
           } 
         currChart=ChartNext(currChart);
        }
 
Vitaly Muzichenko:

设置仪表

谢谢你
 
Vitaly Muzichenko:

设置仪表

不起作用(
 
MakarFX:

你能告诉我如何使Print(),在值发生变化时打印一次吗?

我更喜欢布尔型选项

 if(Work==false) // Критическая ошибка
     {
      if(AlertWork==false)   // Если Алерта еще не было
        {  Alert("Critical error. The expert Advisor doesn't work."); AlertWork=true; }
      return;
     }                    
原因: