Questions des débutants MQL5 MT5 MetaTrader 5 - page 440
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
Bonjour 2015.09.17_19:07 GMT+3 .J'ai défini les dimensions des tableaux dynamiques dans le programme EA. Et le compilateur donne des erreurs : "virgule attendue". Et s'il y a une variable dans le texte du programme, -- donne des avertissements : "la variable telle ou telle cache la déclaration de la variable au niveau global". Je ne comprends pas. Tout semble être correct, comme dans l'aide. Voici quelques extraits de code :
//--- tableau des prix maximaux des barres
bool ArraySetAsSeries(double &High[],bool) ;
//---
bool ArraySetAsSeries(double &Low[],bool) ;
//--- définir les tailles des tableaux avec reserve (reserve)
int ArrayResize(double &mrate[],int 16,int 9) ;
int ArrayResize(double &maVal[],int 16,int 9) ;
int ArrayResize(double &fVal[],int 3,int 2) ;
int ArrayResize(double &zVal[],int 3,int 0) ;
int ArrayResize(double &High[],int 1,int 0) ;
int ArrayResize(double &Low[],int 1,int 0) ;
//+------------------------------------------------------------------+
//| Fonction de désinitialisation experte |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
Bonjour 2015.09.17_19:07 GMT+3 .J'ai défini les dimensions des tableaux dynamiques dans le programme EA. Et le compilateur donne des erreurs : "virgule attendue". Et si dans le texte du programme il y a
Si vous voulez dire mon code - alors oui, mon code vérifie la présence d'une nouvelle barre.
Je suis intéressé par le code que j'ai joint - je veux comprendre ce qu'il fait.
Le code que vous avez donné ne fait rien, ou plutôt il ne fonctionne pas. Erreur :
Cette condition ne fonctionnera qu'une seule fois - la première fois que vous exécutez le programme. À ce stade, la variable statique sera initialisée.
La condition ci-dessous n'a aucun sens à vérifier puisque la variable TimeN dans votre code sera égale au zéro éternel (ou plutôt à la date du 1er janvier 1970) et ce zéro éternel sera comparé à la variable TimeC qui est égale à l'heure d'ouverture de la barre actuelle) :
Le code que vous avez donné ne fait rien, ou plutôt il ne fonctionne pas. Erreur :
Cette condition ne fonctionnera qu'une seule fois - la première fois que vous exécutez le programme. À ce stade, la variable statique sera initialisée.
La condition ci-dessous n'a aucun sens à vérifier puisque la variable TimeN dans votre code sera égale au zéro éternel (ou plutôt ce sera la date du 1er janvier 1970) et ce zéro éternel sera comparé à la variable TimeC qui est égale au temps d'ouverture de la barre actuelle) :
Maintenant je me demande pourquoi j'aurais dû l'écrire... dans le conseiller expert.
Merci pour cette précision !
Si la nouvelle barre est sur l'échelle de temps M1, alors imprimez le message :
Il s'avère que je n'ai pas donné le code complet, le code correct était
int init()
{
static datetime TimeN=0;
return(INIT_SUCCEEDED);
}
int start()
{
datetime TimeC=iTime(NULL,TF,0);
if(TimeN==0)TimeN=TimeC;
if(TimeN==TimeC) return(0);
TimeN=TimeC;
// Код программы исполняется при появлении нового бара
return(INIT_SUCCEEDED);
}
Il s'avère que je n'ai pas donné le code complet, le code correct était
int init()
{
static datetime TimeN=0;
return(INIT_SUCCEEDED);
}
int start()
{
datetime TimeC=iTime(NULL,TF,0);
if(TimeN==0)TimeN=TimeC;
if(TimeN==TimeC) return(0);
TimeN=TimeC;
// Код программы исполняется при появлении нового бара
return(INIT_SUCCEEDED);
}
Voici le code de travail :
Avez-vous essayé de compiler ce code ? Il y a une erreur ici : la variable TimeN est déclarée dans OnInit() et cette variable sera détruite à la sortie de OnInit(). Par conséquent, une erreur se produit dans la fonction OnTick()
Voici le code de travail :
J'ai écrit static datetime TimeN=0 ; dans la zone précédantint OnInit() - où les variables externes et autres sont déclarées.