Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1417

 

Y esto es lo interesante que he notado... No presté atención a esta diferencia.

En mql4, si se escribe esta suma de cadenas a través de la función StringConcatenate(), se obtiene

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

y en mql5 sólo

StringConcatenate(eStr, i, ": ", eArray[i], ", ");
Tal vez me equivoque al no usar esto............
 
Alexey Viktorov:

No recomiendo utilizar esta función porque funciona de forma diferente en MQL5 que en MQL4. En consecuencia, puede ser difícil de entender cuando se cambia a MQL5


Pero tal vez me equivoque...

mql4

mql5

Como puedes ver, mql5 es muy similar a la simple suma de cadenas.

Y la conversión de tipos tiene lugar en esta función sin ninguna preocupación adicional.

Sí, ya se ha discutido antes.

de las tres opciones StringAdd() , StringConcatenate() y pluses,

Las ventajas son menos costosas.

 
ANDREY:

¿Por qué no se puede convertir 1,6251 en una cadena tan explícitamente como i? Es más corto y ahorra recursos computacionales..... me parece.

Gracias por la explicación.

Porque dicha conversión puede dar un valor de hasta 16 (si mis sesos no se han secado del todo) caracteres. Y DoubleToString() "recorta" la cadena hasta el número de decimales especificado. Un número entero i seguirá siendo un número entero sin importar cómo lo hagas girar.

 
Alekseu Fedotov:

Sí, se discutió una vez, no voy a buscarlo

de las tres opciones StringAdd() , StringConcatenate() y pluses,

Las ventajas son menos costosas.

Tal vez... Pero no soy partidario de hurgar en discrepancias tan pequeñas.
 
TrederMT5:

Cambiado el código, todavía array fuera de rango en el mismo lugar

Comprobar si N en la matriz
double price[N];

siempre toma valores válidos?
 

Me pueden decir cómo hacer que Print(), imprima una vez cuando el valor cambia

      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:

Dime cómo hacer que Print(), imprima una vez cuando el valor cambia

Poner el contador

      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:

Ajustar el contador

Gracias
 
Vitaly Muzichenko:

Ajustar el contador

No funciona(
 
MakarFX:

Me pueden decir cómo hacer que Print(), imprima una vez cuando el valor cambia

Me gustan más las opciones booleanas

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