[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
![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
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[])
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 ?
Eh bien, faites un interrupteur ou quelque chose comme ça et écrivez vos indicateurs possibles en leur attribuant des indices.
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 :
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.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 !
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 sera1. 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...
Merci ! Tout fonctionne !
Vérifiez l'ouverture d'une nouvelle bougie. Si c'est nouveau, on ouvre, si c'est ancien, on ne le fait pas...
Vérifiez l'ouverture d'une nouvelle bougie. Si c'est nouveau, on ouvre, si c'est ancien, on ne le fait pas...
static int time = Time[0] ;
if (time < Time[0]){
// vieille bougie
} else {
// nouvelle bougie
time = Time[0] ;
}