Любые вопросы новичков по 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()  и плюсики,

плюсики менее затратны.

 
ANDREY:

А почему   1.6251 нельзя привести к типу  string так же явно как и  i? Это короче и экономит ресурсы вычислительные..... как мне кажется.

Спасибо за объяснение

Потому, что такое преобразование может дать значение до 16(если мои мозги не совсем высохли) знаков. А функция DoubleToString() «обрезает» строку до указанного количества знаков после запятой. А целочисленное i как ни крути оно так и останется целочисленным.

 
Alekseu Fedotov:

Да, когда то обсуждалось     искать не буду

из трех вариантов    StringAdd()  , StringConcatenate()  и плюсики,

плюсики менее затратны.

Может быть… Но я не сторонник выискиваний таких незначительных расхождений.
 
TrederMT5:

Изменил код, всё равно  array out of range в том же самом месте

Проверьте, всегда ли 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;
     }                    
Причина обращения: