Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 1072

 
Bonjour, question à 5 kopeck)))) Pouvez-vous me dire ce que signifie le signe "&" lorsqu'il est passé à une fonction ? Exemple : int determineSection_D1(int & askSection_D1,int & bidSection_D1) ? Merci.
 
rabanik:    Bon... sur un dixième de dollar ... qu'est-ce que cela signifie ... "&" lors dupassage à une fonction ?

Cliquez à gauche sur l'image pour l'agrandir ou à droite pour l'enregistrer.

MetaEditor dispose d'une aide pour le langage MQL-4. Il est utile de lire toute l'aide ou au moins de la parcourir.

 

Bon après-midi.

J'ai créé un bouton à l'écran et je veux y attacher une ouverture de graphique hors ligne. Quelle fonction puis-je utiliser pour spécifier le chemin d'accès au graphique hors ligne souhaité ?

 
Bonjour, comment pouvons-nous faire en sorte que le graphique se mette à jour automatiquement toutes les 10 secondes afin que vous n'ayez pas à appuyer sur le bouton "Update" à chaque fois ?
 
zert: mise à jour du diagramme
voidOnTimer() // On timer WindowRedraw() ; // Redessine la fenêtre
 
LRA:
voidOnTimer() // Activation du minuteur WindowRedraw() ; // Redessiner la fenêtre
Je ne comprends pas où il faut écrire tout ça, pouvez-vous me montrer sur une capture d'écran ?
 
zert:   où écrire
dans l'EA que vous utilisez. S'il n'y en a pas, vous devez en écrire un. Pourquoi un nouveau surnom ?
 
LRA:

Cliquez à gauche sur l'image pour l'agrandir ou à droite pour l'enregistrer.

Le MetaEditor dispose d'une aide pour le langage MQL-4. Il est logique de tout lire, ou au moins de le parcourir.

Merci pour la réponse. Je ne le comprends pas jusqu'au bout. Par exemple, j'ai la fonction SendOrder(int &Ticket, int Type ,double LT ,double OP=-1 ,int ModeSL=0) avec des paramètres. De plus, si j'essaie par exemple dans le code d'y faire référence dans une condition quelconque, j'obtiens l'erreur "parameter passed as reference, variable".

Veuillez me conseiller sur ce que je dois faire. Merci.

 
rabanik:    si vous allez sur .... erreur "paramètre passé comme référence, variable".

Si le paramètre est sans & transfert par valeur, ce qui est plus fiable. Le paramètre réel est copié et une copie est transmise à la fonction. Les modifications apportées au paramètre à l'intérieur de la fonction restent à l'intérieur de la fonction. Le paramètre réel à l'endroit de l'appel de fonction reste inchangé. Et il importe peu pour la fonction qu'une constante ou une variable lui soit passée, car dans tous les cas, seule une copie du paramètre parvient à la fonction. Ceci est fait pour augmenter la fiabilité, pour protéger les variables d'un changement accidentel dans une fonction.

Lorsque le paramètre est transmis par référence, le symbole & est spécifié, ce qui signifie que la référence, l'adresse de la variable elle-même, est transmise à la fonction. Et la fonction peut changer cette variable et ces changements affecteront la valeur de la variable dans la fonction qui a appelé cette fonction. Eh bien, pour qu'une fonction change la valeur d'un paramètre, celui-ci doit être une variable, le traducteur a probablement écrit : paramètre passé comme référence, variable attendue = le paramètre par référence doit être une variable.

En cas de nouveau doute, j'ai la fonction SendOrder(int &Ticket, int Type ,double LT ,double OP=-1 ,int ModeSL=0) à la place je ferais mieux d'écrire comment la fonction a été appelée. Il semble que vous passiez un nombre comme premier paramètre, ce qui n'a aucun sens. Dans ce paramètre, votre fonction tente de retourner le numéro sous lequel l'ordre a été placé dans la base de données du courtier. Il est clair que cela devrait être une variable. En cas de doute, jetez un coup d'œil à la fonction. Et la fonction est VRAIE pour changer le nombre passé, elle veut une variable à cet endroit.

 

Ne serait-il pas plus facile de comprendre à partir d'un exemple ?

void OnStart()
{
 int a = 5;
 int b = 7;
 int c = f(a, b);
 Print("a = ", a, ": b = ", b": c = ", c);
}

int f(int k, int n)
{
 k += 2;
 return(k+n);
}

//результат a = 5: b = 7: с = 14

L'autre option

void OnStart()
{
 int a = 5;
 int b = 7;
 int c = f(a, b);
 Print("a = ", a, ": b = ", b": c = ", c);
}

int f(int &k, int n)
{
 k += 2;
 return(k+n);
}

//результат a = 7: b = 7: с = 14

c'est la différence.