[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 701

 
IgorM:


votre chien en passant les paramètres à la fonction, si vous le passez comme SaveDataIND(double TempIND[])

double TempIND[ ] est en fait un nouveau tableau pour la fonction, mais sans le droit de changer les paramètres, essayez SaveDataIND(double & TempIND[])

Non, ça ressemble à ça ! On dirait que le chien a mangé un morceau de viande après tout... Merci, Igor.
 

Est-il possible de faire en sorte que l'on puisse passer dans une fonction quel indicateur utiliser, de sorte que dans la chaîne de caractères

TempIND[j]=iAD(NULL,PERIOD_M5,j);     

pas un indicateur spécifique mais passé comme paramètre de fonction ?

 
Eh bien, faites un interrupteur ou quelque chose comme ça et écrivez vos indicateurs possibles en leur attribuant des indices.
 
Mathemat:
Eh bien, faites un interrupteur ou quelque chose comme ça et écrivez vos indicateurs possibles en leur attribuant des indices.
Merci, Alexey, cette pensée m'est venue en premier... J'ai pensé que quelqu'un pourrait suggérer quelque chose de plus extrême... :)
 
artmedia70:

Est-il possible de faire en sorte que l'on puisse passer dans une fonction quel indicateur utiliser, de sorte que dans la chaîne de caractères

pas un indicateur spécifique, mais passé comme paramètre de fonction ?



Ces actions ne sont généralement pas effectuées - les données sont généralement envoyées à la fonction, et la fonction appelante prépare les données/réseaux.

il semble que votre construction ArrayResize(TempIND,nBars) ; n'est pas correcte, du moins dans d'autres langages de programmation, le compilateur ne le manquerait pas puisque vous avez double TempIND[50] ; - c'est-à-dire que le tableau est déclaré comme statique et devrait être dynamique (c'est-à-dire sans dimensions) - double TempIND[] ;

ZS : et la confusion avec les noms des variables dans la fonction - n'oubliez pas que s'il y a une variable globale (globale dans le corps de l'EA), la variable déclarée dans la fonction avec le même nom sera complètement différente :

int my_int = 100;

///////////
int my_func(){

int my_int = 123;
Print("my_func my_int = ",my_int);
return(0);
}

int start(){
Print("start_func my_int = ",my_int);
return(0);
}
cela s'appelle généralement la portée des variables - renommez ce qui se trouve dans la fonction par son nom, par exemple void SaveDataIND(double myTempIND[], int nBars) - il y aura moins de confusion.
 
artmedia70:

Où le Lot est-il initialisé ?

Ensuite, seulement après avoir vérifié les lots, soit vous modifiez Lots_New comme écrit précédemment, soit vous lui attribuez la valeur = Lot ;



Merci ! Tout fonctionne !
 
IgorM:


Ces actions ne sont généralement pas effectuées - les données sont généralement envoyées à la fonction et la fonction appelante prépare les données/le tableau.

Vous semblez avoir la mauvaise construction ArrayResize(TempIND,nBars) ; au moins dans d'autres langages de programmation, le compilateur ne le manquerait pas car vous avez double TempIND[50] ; - c'est-à-dire que le tableau est déclaré comme statique, alors qu'il devrait être dynamique (c'est-à-dire sans dimensionnalité) - double TempIND[] ;

ZS : et la confusion avec les noms des variables dans la fonction - n'oubliez pas que s'il y a une variable globale (globale dans le corps de l'EA), la variable déclarée dans la fonction avec le même nom sera complètement différente :

cela s'appelle généralement la portée des variables - renommez les choses en fonction de leur nom, par exemple : void SaveDataIND(double myTempIND[], int nBars) - moins de confusion sera

1. Donc, Igor, dois-je écrire ma propre fonction absolument identique pour chaque indicateur ?

2. Merci, je l'ai corrigé juste au cas où...

3. ça ne m'embrouille pas - je peux voir quel tableau est utilisé et où, c'est en quelque sorte plus facile pour moi de l'inverser, mais quand j'ai beaucoup de noms, je vais certainement m'embrouiller... Bien que... Je devrais probablement m'habituer à bien l'épeler...

 
cyclik33:

Merci ! Tout fonctionne !
De rien, revenez... :)
 
T-G 13.07.2010 22:56 am Correction | suppression
artmedia70:
Vérifiez l'ouverture d'une nouvelle bougie. Si c'est nouveau, on ouvre, si c'est ancien, on ne le fait pas...
quelle est la meilleure façon de procéder ?
 
T-G:
T-G 13.07.2010 22:56 modifié | supprimer
artmedia70 :
Vérifiez l'ouverture d'une nouvelle bougie. Si c'est nouveau, on ouvre, si c'est ancien, on ne le fait pas...
Quelle est la meilleure façon de procéder ?

static int time = Time[0] ;

if (time < Time[0]){

// vieille bougie

} else {

// nouvelle bougie

time = Time[0] ;

}