Une question pour les experts MQL - page 15

 

Merci à Zhunko et TheXpert !

Vos variantes éliminent ce type d'erreur !

 

Salut !

Pouvez-vous me dire ce que l'avertissement peut signifier lors de la compilation d'un indicateur dans un mt4 mis à jour :

tous les chemins de contrôle ne renvoient pas une valeur S_E_v.mq4 181
0 erreur(s), 1 avertissement(s) 1 2

 
Rita:

Pouvez-vous me dire ce que l'avertissement peut signifier lors de la compilation de l'indicateur dans la mise à jour de mt4 :

Cela signifie qu'il y a un cas dans la fonction qui renvoie une valeur où rien n'est renvoyé et c'est mauvais.
 

Programmeurs, aidez-moi : j'ai besoin de déterminer le décalage des barres pour une heure donnée sur un TF horaire. La procédure standard (du tutoriel) donne 0. Indiquez-moi la mauvaise direction...

 datetime some_time=D'2004.03.21 12:00';
  int      shift=iBarShift("EUROUSD",PERIOD_M1,some_time);
  Print("shift of bar with open time ",TimeToStr(some_time)," is ",shift);
 
Nesradamus:

Programmeurs, aidez-moi : j'ai besoin de déterminer le décalage des barres pour un temps donné sur une échelle horaire. La procédure standard (du tutoriel) donne 0. Indiquez-moi la mauvaise direction...

"EUROUSD"

Existe-t-il un tel symbole ?

 

Après-midi.

Après la dernière mise à jour de mt4 et la compilation de EA, il y a des avertissements dans trois lignes 101-106-109, voir fig :

S'il vous plaît conseiller, - comment corriger, voici le code de cette fonction :

(et doit-il être corrigé ?)

int init()
{
 ExpertBars = Bars;
//-----------------------------------------------------------
gbNoInit=False; if (!IsTradeAllowed()) {
    Message("Для нормальной работы советника необходимо\n"+
            "Разрешить советнику торговать");
    gbNoInit=True; return;
  }
  if (!IsLibrariesAllowed()) {
    Message("Для нормальной работы советника необходимо\n"+
            "Разрешить импорт из внешних экспертов");
    gbNoInit=True; return;
  }
//------------------
}
 
Rita:

Après-midi. Après la dernière mise à jour de mt4 et la compilation de EA, il y a des avertissements dans trois lignes 101-106-109, voir fig :

S'il vous plaît conseiller, - comment corriger, voici le code de cette fonction :

(et doit-il être corrigé ?)

Votre init() est de type int, ce qui signifie qu'il doit retourner une valeur. Avant la dernière parenthèse fermante, écrivez

return(INIT_SUCCEEDED);

Il y a un endroit dans une fonction où la fonction peut ne rien retourner. Vous n'avez pas montré les fonctions - cherchez vous-même dans les fonctions où il est possible de laisser sur la dernière parenthèse fermante.

 
Voici le code
artmedia70:

Avant la dernière parenthèse fermante, écrivez ......

Vous n'avez pas montré les fonctions - cherchez vous-même dans ces fonctions où il est possible de laisser sur la dernière parenthèse fermante.


Merci. Corrigé return(INIT_SUCCEEDED) ;.

Voici le code de cette fonction non affichée pour les deux autres avertissements restants :

//+----------------------------------------------------------------------------+
//|  Вывод сообщения в коммент и в журнал                                      |
//+----------------------------------------------------------------------------+
void Message(string m) {
  Comment(m);
  if (StringLen(m)>0) Print(m);}

.

 
Rita:
Voici le code

Merci. Corrigé.

Voici le code de cette fonction sur les deux autres avertissements :

1. Très probablement, vous avez deinit() aussi int et return(0) n'est pas écrit dedans.

2) Cette fonction est nulle et la parenthèse fermante y sert de retour. Tout va bien dedans.

 

deinit() - Je ne l'ai pas du tout.

J'ai corrigé return en return(0 ) sur les deux avertissements restants et le code s'est compilé sans problème.

Merci.

Raison: