Funzione che restituisce 2 risultati?

 

Ho bisogno di restituire 2 risultati da una funzione. Posso separarli e creare una funzione per ogni risultato di cui ho bisogno, ma è un sacco di codice in più e rende altre cose più complicate. È possibile con MT4?

 

controlla il passaggio di parametri ny reference:

int res1 func(int& res2, altri parametri...)

 

Intendi fondamentalmente eseguire la funzione due volte, passando un parametro speciale per ottenere un risultato diverso ogni volta? Suppongo che potrebbe funzionare...

Vorrei poter fare solo questo però:

return(a,b);
 

no,

int x;

int y=func(x, altri parametri);

dopo la chiamata x=5 e y=2;

int res1 func(int& res2, altri parametri...)

{

res2=5

return(3);

}

 

Voglio dire y=3

 

Wow, grazie per aver cercato di aiutare ma non capisco cosa stai facendo qui. Hai una funzione completamente codificata che fa questo che potresti semplicemente copiare e incollare qui?

 

Sembra ancora che restituisca solo un risultato: "3".

return(3);

?

 

Basta trovare il passaggio di parametri per riferimento nella guida di mql4:

Generalmente passare per riferimento significa che si passa una variabile reale nella funzione dall'esterno (usando &) e si può cambiare il suo valore all'interno della funzione e quella variabile sarà ancora lì quando si torna indietro dalla chiamata.

Quindi int x imposta il valore a 0.

all'interno della funzione impostate x=5

quando tornate dalla funzione x=5 come impostato dalla funzione, quindi avete dato il vostro secondo risultato dalla funzione senza restituire 2 risultati.

Le funzioni non restituiscono mai 2 risultati, solo uno.

 

OK, grazie, irusoh1

 

Quello che manca nella spiegazione di irusoh1 è che la variabile deve essere Array(s). E piuttosto il ritorno non gioca un ruolo nel riempire/modificare gli array, ma invece lo modifica direttamente come necessario.

int Xarray[]; int Yarray[];

void Fun2result(int& Array[], int& Brray[], int pos)
{    Array[pos] = 2 + pos;
     Brray[pos] = 5 + pos;
} 
int start()
{  
    for(i=Bars-1; i>=0; i--)
       Fun2result(Xarray, Yarray, i); 
}

Buona fortuna.

 

non ha bisogno di essere un array