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

 

Bonjour!

Je vais commencer par un exemple simple, sinon sera difficile à expliquer.

double result()

{

double x = Bid ;

retour(x) ;

}

double result_y()

{

double y = Bid ;

retour(y) ;

}

Il faut les fusionner en une seule.

Le résultat() est alors nécessaire comme X dans une fonction et comme Y dans l'autre . Est-ce possible ? Comment faire ?

double result() // ? ???

{

double x = Bid ;

double y = Ask; // il faut aussi renvoyer cette valeur

retour(x) ;

return(y) ; // ?

}

 

Non, il ne peut y avoir qu'un seul résultat. Passez les valeurs par référence :

double _bid = 0, _ask = 0;

Print(_bid,":",_ask);

ResFunction(_bid,_ask);

Print(_bid,":",_ask);


void ResFunction(double &x, double &y){
   x = Bid;
   y = Ask;
   return;
}
 
abeiks:

Bonjour!

Je vais commencer par un exemple simple, sinon sera difficile à expliquer.

Eh bien, étant donné que dans les deux cas, la même valeur est renvoyée par vos sous-programmes - prix Bid, l'une de ces deux fonctions peut être supprimée du code. Si les valeurs renvoyées sont différentes, vous pouvez, par exemple, les assembler en une chaîne de caractères - renvoyer de la sous-routine ces deux valeurs séparées par un séparateur quelconque, par exemple un point-virgule. Et les retourner sous forme de chaîne. Ensuite, dans le code principal, extrayez 2 valeurs de la chaîne et convertissez-les en double.
 

Envoyez quelque chose au sous-programme pour qu'il puisse comprendre ce qui est nécessaire.

 
abeiks:

Bonjour!

...

Bonjour ! Comme des personnes ont déjà commenté votre question, je voudrais vous demander : êtes-vous les champions 2008 ?

Si oui, pourriez-vous nous parler de votre GRAAL, sans nous révéler tous les "secrets de la cour de madrid" et sans nous raconter "tous les contes du bois de Vienne". Il suffit de lever un peu le voile... Vous pouvez - dans cette branche, je suis sûr que les gens trouveront cela utile !

Je me prépare activement au championnat moi-même...

Merci !

 
drknn:

Dites-moi, s'il vous plaît, pourquoi remet-on une variable à zéro lorsqu'une fonction est déclarée ? C'est juste là :


Est-ce que c'est ainsi que l'on définit la valeur par défaut si on ne la définit pas explicitement lors de l'appel, ou est-ce que je me trompe ?
 
Skydiver:

Est-ce que c'est ainsi que la valeur par défaut est définie au cas où elle ne serait pas explicitement définie lors de l'appel, ou est-ce que je me trompe ?


Je ne sais pas. Mais je suis intéressé. Je vais vérifier.

P.S.

Ça marche !

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start(){
  Alert("func1(100) вернула значение = ",func1(100),"  func1() вернула значение = ",func1());
  return(0);
}
//+------------------------------------------------------------------+
int func1(int i=25){
        return(i);
}

 
Skydiver:
Essayez de pré-imprimer chaque valeur à chaque itération de la boucle. La taille de votre tableau est petite, il n'y aura donc pas de mélange de données.
 

Comment faire pour que la différence entre les ordres ouverts de même signe soit de 1 barre ?

 
GarKain:

Comment faire pour que la différence entre les ordres d'ouverture de même signe soit de 1 barre ?


Nous devons comparer l'heure d'ouverture d'une position avec l'heure d'ouverture de la barre actuelle Time[0]. Si l'heure d'ouverture d'une position est supérieure ou égale à l'heure d'ouverture de la barre, le Conseiller Expert n'ouvrira pas de nouvelle position. Lorsqu'une nouvelle barre apparaît, Time[0] changera sa valeur à un moment ultérieur et cette comparaison montrera que la position n'a pas encore été ouverte sur la (nouvelle) barre actuelle et que nous pouvons négocier.

Au fait, votre question peut également être décomposée en 2 sous-questions :
1. À la barre actuelle, une position a été ouverte et a réussi à être fermée, mais nous attendons toujours une nouvelle barre.
2. Une position a été ouverte sur la barre actuelle et a réussi à se fermer, nous pouvons donc ouvrir une position à nouveau sur la même barre (c'est-à-dire que nous pouvons ouvrir 1 position sur la même barre simultanément).

Raison: