Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1417

 

Ed ecco la cosa interessante che ho notato... Non ho prestato attenzione a questa differenza.

In mql4, se si scrive questa aggiunta di stringhe attraverso la funzione StringConcatenate(), allora si ottiene

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

e in mql5 è solo

StringConcatenate(eStr, i, ": ", eArray[i], ", ");
Forse erroneamente non sto usando questo............
 
Alexey Viktorov:

Non consiglio di usare questa funzione perché funziona diversamente in MQL5 che in MQL4. Di conseguenza, può essere difficile da capire quando si passa a MQL5


Ma forse mi sbaglio...

mql4

mql5

Come potete vedere, mql5 è molto simile alla semplice addizione di stringhe.

E la conversione di tipo avviene in questa funzione senza alcuna preoccupazione aggiuntiva.

Sì, è stato discusso prima.

delle tre opzioni StringAdd() , StringConcatenate() e plus,

I vantaggi sono meno costosi.

 
ANDREY:

Perché 1.6251 non può essere convertito in stringa in modo esplicito come i? È più breve e risparmia risorse computazionali..... mi sembra.

Grazie per la spiegazione.

Perché tale conversione può dare un valore fino a 16 caratteri (se il mio cervello non si è completamente prosciugato). E DoubleToString() "rifila" la stringa al numero di decimali specificato. Un intero i rimarrà un intero, non importa come lo giri.

 
Alekseu Fedotov:

Sì, è stato discusso una volta, non lo cercherò

delle tre opzioni StringAdd() , StringConcatenate() e plus,

I vantaggi sono meno costosi.

Forse... Ma non sono favorevole a frugare in queste piccole discrepanze.
 
TrederMT5:

Cambiato il codice, ancora array fuori portata nello stesso posto

Controlla se N nell'array
double price[N];

prende sempre valori validi?
 

Puoi dirmi come fare in modo che Print(), stampi una volta quando il valore 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:

Dimmi come fare in modo che Print(), stampi una volta quando il valore cambia

Imposta contatore

      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:

Impostare il misuratore

Grazie
 
Vitaly Muzichenko:

Impostare il misuratore

Non funziona(
 
MakarFX:

Puoi dirmi come fare in modo che Print(), stampi una volta quando il valore cambia

Mi piacciono di più le opzioni booleane

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