[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 512

 
hoz:


C'est le moyen le plus simple. Mais je regarde les articles d'un programmeur et rien n'est déclaré dans sa fonction de démarrage.

Voici un lien vers son conseiller :

http://www.forextrade.ru/media/Image/MQLabs/181_ag/ChannelByMACross_Expert.mq4

En particulier, je suis très intéressé par la façon dont il écrit le code intelligemment. Je veux donc apprendre à tout écrire dans des fonctions séparées, et à n'ajouter que l'essentiel pourcommencer sans y déclarer de variables.

Si nous passons une variable par référence dans une fonction, nous travaillons avec un tampon de la variable originale, et non avec son double séparé. Cela signifie que la fonction dans laquelle nous l'avons précédemment déclaré n'a pas d'importance. N'est-ce pas ?


Il a aussi écrit intelligemment

lire

Oui, changez la ligne

if(!Trade(signal, priceForBuy, priceForSell))

à

if(!GetPriceToInput (signal))                                                                                                         
 
Roman.:

Quand vas-tu avoir ton propre camping-car personnel, Diman ?)

Vous n'avez pas gagné d'argent en un an dans le monde réel, n'est-ce pas ? Vous avez beaucoup de montants START qui vous sont attribués là, n'est-ce pas ?)



Bientôt.
 
Reshetov:

Vous pouvez déclarer une variable statique en dehors des fonctions et vous n'aurez plus besoin de passer quoi que ce soit par référence.

Vous pensez de manière incorrecte. Si vous passez une variable comme argument à une fonction, elle ne doit pas être déclarée dans le corps de la fonction - elle est déjà déclarée dans l'argument. La fonction doit être déclarée à l'endroit d'où elle est passée.


Je veux dire que ça n'a pas d'importance si on le passe depuis la fonction de départ ou depuis une autre fonction.

Dans ce cas, j'ai déclaré des variables dans la fonctiondouble GetPriceToInput(int signal) et j'ai passé les variablespriceForSell etpriceForBuy déclarées dans la même fonction double GetPriceToInput(int signal) par référence dans la fonctionbool Trade(int signal, double& priceForBuy, double& priceForSell).

J'ai ajouté cette fonction à la fonction dedémarrage et je constate qu'elles y sont déjà indéfinies. Je veux savoir comment le réparer.

Bien sûr, je peux déclarer ces 2 variables en une seule fois au démarrage, comme vous l'avez dit, mais je peux les passer directement de la fonctiondouble GetPriceToInput(int signal). Voilà ce que je veux dire.

 
hoz:


Je veux dire que cela n'a pas d'importance si nous les passons depuis la fonction de départ ou depuis une autre fonction.

Dans ce cas, j'ai déclaré des variables dans la fonctiondouble GetPriceToInput(int signal) et j'ai passé les variablespriceForSell etpriceForBuy déclarées dans la même fonction double GetPriceToInput(int signal) par référence dans la fonctionbool Trade(int signal, double& priceForBuy, double& priceForSell).

J'ai ajouté cette fonction à la fonction dedémarrage et je constate qu'elles y sont déjà indéfinies. Je veux comprendre comment le réparer.

Où les avez-vous passés et pourquoi attribuez-vous des valeurs là où vous ne les avez pas passés ?

 
Reshetov:

Où les avez-vous passés et où leur attribuez-vous des valeurs ?


Eh bien, j'ai obtenu les valeurs des variables dans la fonctiondouble GetPriceToInput(int signal)

Ici :

double priceForSell = secondBarClosed - deltaForSell;
double priceForBuy = secondBarClosed + deltaForBuy;

Je renvoie ces valeurs :

return(priceForSell);
return(priceForBuy);

C'est-à-dire que les valeurs ont déjà été renvoyées par la fonction.

J'envoie ensuite ces valeurs par référence à la fonction bool Trade(int signal, double& priceForBuy, double& priceForSell):

C'est tout à fait évident !

 
hoz:

C'est-à-dire que les valeurs ont déjà été renvoyées par la fonction.

Où les a-t-elle renvoyées, c'est-à-dire où se trouve dans le code l'endroit exact où les valeurs de ces variables sont renvoyées par la fonction ? Et comment une fonction peut-elle retourner plus d'une valeur si elle n'a pas été passée par référence ?
 
hoz:


J'ai obtenu les valeurs des variables dans la fonctiondouble GetPriceToInput(int signal)

Ici :

Je renvoie ces valeurs :

C'est-à-dire que les valeurs ont déjà été renvoyées par la fonction.

J'envoie ensuite ces valeurs par référence à la fonction bool Trade(int signal, double& priceForBuy, double& priceForSell):

Tout est clair ici !


Lis juste un manuel. En particulier, lisez la section sur la portée des variables. Et commencez par des exemples simples.

SZS Il semble que vous deviez commencer par les bases de la programmation.

 

Reshetov
:

Où a-t-elle retourné, c'est-à-dire montrez exactement où dans le code ces valeurs de variables sont retournées par la fonction ? Et comment une fonction peut-elle retourner plus d'une valeur si elles ne lui ont pas été transmises par référence ?

Honnêtement, je suis déjà complètement perdue. Je n'ai même pas d'exemples pour voir comment les autres s'y prennent.

J'ai cru comprendre qu'en plus de récupérer les valeurs, vous devez les affecter à d'autres variables ?

VladislavVG:


Lisez juste le manuel. Lisez en particulier la section sur la portée des variables. Et commencez par des exemples simples.

On dirait que vous devez commencer par les bases de la programmation.


Je n'ai pas besoin de l'essentiel. Je suis bien conscient de la visibilité variable. Rien dans le manuel sur le passage de valeurs de variables par référence. Pourquoi m'envoyez-vous là-bas ? Tu te moques de moi ?

 

hoz:

Je n'ai pas besoin de l'essentiel. Je suis bien conscient des visibilités variables. Il n'y a rien dans le manuel sur le passage de valeurs de variables par référence. Pourquoi m'envoyez-vous là-bas ? Tu te moques de moi ?

Au revoir, alors. Il est inutile d'enseigner à un scientifique. Ne nous moquons donc pas de vous si vous êtes déjà en train de tout manger.
 
Reshetov:
Alors au revoir. Il est inutile d'enseigner à un scientifique. Alors, ne nous moquons pas de vous si vous êtes déjà à fond dans votre travail.

Pourquoi vous envoyer tout de suite ? Il n'y a rien dans le manuel sur les transferts de paramètres au lien. Pourquoi devrais-je lire la même chose 100 fois ? J'ai posé une question spécifique. J'ai lu le manuel un bon nombre de fois. Et je l'ai parcouru aujourd'hui, il n'y a rien dedans sur le transfert de paramètres par référence !
Raison: