Fonction qui renvoie 2 résultats ?

 

J'ai besoin de renvoyer deux résultats à partir d'une seule fonction. Je peux les séparer et créer une fonction pour chaque résultat dont j'ai besoin, mais c'est beaucoup plus de code et cela rend d'autres choses plus compliquées. Est-ce possible avec MT4 ?

 

vérifier le passage des paramètres par référence :

int res1 func(int& res2, autres paramètres...)

 

Vous voulez dire qu'il faut exécuter la fonction deux fois, en passant un paramètre spécial pour obtenir un résultat différent à chaque fois ? Je suppose que cela pourrait fonctionner...

J'aimerais pouvoir faire ça tout simplement :

return(a,b);
 

non,

int x ;

int y=func(x, autres paramètres) ;

après appel x=5 et y=2 ;

int res1 func(int& res2, autres paramètres...)

{

res2=5

retour(3) ;

}

 

Je veux dire y=3

 

Merci d'essayer d'aider, mais je ne comprends pas ce que vous faites ici. Avez-vous une fonction entièrement codée qui fait cela et que vous pourriez copier et coller ici ?

 

Il semble toujours qu'il ne renvoie qu'un seul résultat : "3".

return(3) ;

?

 

Trouvez le passage des paramètres par référence dans l'aide de mql4 :

Généralement, passer par référence signifie que vous passez une variable réelle dans la fonction depuis l'extérieur (en utilisant &) et vous pouvez changer sa valeur à l'intérieur de la fonction et cette variable sera toujours là quand vous reviendrez de l'appel.

Ainsi, la valeur de l'int x est fixée à 0.

à l'intérieur de la fonction vous définissez x=5

quand vous revenez de la fonction, x=5 comme défini par la fonction, vous avez donc donné votre deuxième résultat de la fonction sans retourner 2 résultats.

Les fonctions ne renvoient jamais 2 résultats, seulement un.

 

OK, merci, irusoh1

 

Ce qui manque dans l'explication de irusoh1, c'est que les variables doivent être des tableaux. Il est préférable que le retour ne joue pas un rôle dans le remplissage/modification des tableaux mais qu'il les modifie directement si nécessaire.

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); 
}

Bonne chance.

 

n'a pas besoin d'être un tableau