Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 687

 

Come faccio a sapere perché questo costrutto non funziona?

void OnStart()
  {
//---
   double buf[];
   ArrayInitialize(buf,0);
   for(int i=0; i<10; i++)
     {
      buf[i]= i;
     }
  }
Riporta un errore array fuori portata in '**.mq5' (13,10)
Se sostituisco la stringa double buf[]; con double buf[10]; allora non c'è uscita fuori dall'array.
 
ivanivan_11:

Puoi dirmi perché questa costruzione non funziona?

void OnStart()
  {
//---
   double buf[];
   ArrayInitialize(buf,0);
   for(int i=0; i<10; i++)
     {
      buf[i]= i;
     }
  }
riporta un errore array out of range in '**.mq5' (13,10)
se sostituisco la stringa double buf[]; con double buf[10]; allora non c'è nessuna uscita di array.

O doppio buf[10];

O doppio buf[];, ma poi necessariamente ArrayResize(buf,10);

 
Artyom Trishkin:

O doppio buf[10];

O doppio buf[];, ma poi obbligatorio ArrayResize(buf,10);

Grazie.

posso spiegare un'altra cosa?

Cioè, se inizializzo un array e poi lo riempio nel ciclo, la sua dimensione crescerà ad ogni iterazione, e dovrò ridefinire la sua dimensione? Pensavo che questo fosse fatto automaticamente, non importa quanti elementi vi aggiungo.

Se lo riempio immediatamente con un certo numero di elementi, non devo fare questa procedura.

void OnStart()
  {
//---
   double buf[];
   ArrayInitialize(buf,0);
   int closed1=CopyClose("EURUSD",NULL,0,3,buf);
  
  }
 
ivanivan_11:

Grazie.

Posso essere più chiaro?

Cioè, se inizializzo un array e poi lo riempio nel ciclo, la sua dimensione crescerà ad ogni iterazione, e dovrò ridefinire la sua dimensione? Pensavo che fosse fatto automaticamente, non importa quanti elementi vi aggiungo.

e se lo riempio immediatamente con un certo numero di elementi, non devo fare una tale procedura.

void OnStart()
  {
//---
   double buf[];
   ArrayInitialize(buf,0);
   int closed1=CopyClose("EURUSD",NULL,0,3,buf);
  
  }

La funzione CopyXXXX() sovrascrive automaticamente la dimensione dell'array passato in essa.

Se si compila l'array da soli, se è dinamico, allora sta al programmatore assicurarsi che sia della giusta dimensione.

Potete, quando dichiarate un array, renderlo

  • un array dinamico, nel qual caso sta a voi ridefinire la sua dimensione.
  • non dinamico: buff[5] - in questo caso è necessario inizializzarlo con i giusti valori
  • non dinamico: buff[]={10,20,30,40,50}; - in questo caso è inizializzato con i valori alla dichiarazione
 
Artyom Trishkin:

La funzione CopyXXXX() sovrascrive automaticamente la dimensione dell'array passato ad essa.

Se stai riempiendo l'array da solo, se è dinamico, è compito del programmatore assicurarsi che sia della giusta dimensione.

Potete, quando dichiarate un array, renderlo

  • un array dinamico, nel qual caso sta a voi ridefinire la sua dimensione.
  • non dinamico: buff[5] - in questo caso è necessario inizializzarlo con i giusti valori
  • non dinamico: buff[]={10,20,30,40,50}; - in questo caso sarà inizializzato con i valori che dichiarate
grazie per il chiarimento
 
Chi sa cosa significano i numeri nel grafico della corsa nell'ottimizzazione genetica? Ci sono due numeri, per esempio 0,637 o 7,27. E come scegliere la corsa giusta. Per esempio, sono interessato alla corsa numero 5381. Come sceglierlo?
 
chi sa qual è il segno tra le parentesi?GHPR=(BalanceClose/BalanceOpen)^(1/N)
 
Roma Ivanov:
chi sa qual è il segno tra le parentesi?GHPR=(BalanceClose/BalanceOpen)^(1/N)
Operazione OR esclusivo bitwise
 

Davvero? Davvero?

Ho sempre pensato che(^) fosse un'esponenziazione.

 
Roma Ivanov:
chi sa qual è il segno tra le parentesi?GHPR=(BalanceClose/BalanceOpen)^(1/N)
Conversione di laurea.
Motivazione: