Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1417

 

Und hier ist das Interessante, das mir aufgefallen ist... Ich habe nicht auf diesen Unterschied geachtet.

Wenn Sie in mql4 diese Addition von Strings mit der Funktion StringConcatenate() schreiben, erhalten Sie

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

und in mql5 ist es einfach

StringConcatenate(eStr, i, ": ", eArray[i], ", ");
Vielleicht verwende ich das fälschlicherweise nicht............
 
Alexey Viktorov:

Ich empfehle nicht, diese Funktion zu verwenden, da sie in MQL5 anders funktioniert als in MQL4. Daher kann es schwer zu verstehen sein, wenn Sie zu MQL5 wechseln


Aber vielleicht täusche ich mich...

mql4

mql5

Wie Sie sehen können, ist mql5 der einfachen Addition von Zeichenketten sehr ähnlich.

Und die Typumwandlung erfolgt in dieser Funktion ohne weitere Probleme.

Ja, das wurde schon einmal diskutiert.

der drei Optionen StringAdd() , StringConcatenate() und Pluspunkte,

Pluspunkte sind weniger kostspielig.

 
ANDREY:

Warum kann 1,6251 nicht so explizit in eine Zeichenkette umgewandelt werden wie i? Es ist kürzer und spart Rechenressourcen....., wie mir scheint.

Vielen Dank für die Erklärung.

Denn eine solche Umwandlung kann einen Wert von bis zu 16 Zeichen ergeben (wenn mein Hirn nicht völlig ausgetrocknet ist). Und DoubleToString() "beschneidet" die Zeichenkette auf die angegebene Anzahl von Dezimalstellen. Eine ganze Zahl i bleibt eine ganze Zahl, egal wie man sie dreht.

 
Alekseu Fedotov:

Ja, es wurde einmal diskutiert, ich werde nicht danach suchen.

der drei Optionen StringAdd() , StringConcatenate() und Pluspunkte,

Pluspunkte sind weniger kostspielig.

Vielleicht... Aber ich bin nicht dafür, an solch kleinen Unstimmigkeiten herumzustochern.
 
TrederMT5:

Code geändert, aber immer noch Array außerhalb des Bereichs an der gleichen Stelle

Prüfen, ob N im Array
double price[N];

immer gültige Werte annimmt?
 

Können Sie mir sagen, wie man Print(), einmal drucken, wenn der Wert ändert

      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:

Sagen Sie mir, wie man Print() dazu bringt, einmal zu drucken, wenn sich der Wert ändert

Zähler setzen

      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:

Das Messgerät einstellen

Dankeschön
 
Vitaly Muzichenko:

Das Messgerät einstellen

Funktioniert nicht(
 
MakarFX:

Können Sie mir sagen, wie man Print(), einmal drucken, wenn der Wert ändert

Mir gefallen die booleschen Optionen besser

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