Eine Frage an MQL-Experten - Seite 15

 

Vielen Dank, Zhunko und TheXpert!

Ihre Varianten eliminieren diese Art von Fehlern!

 

Hallo!

Können Sie mir sagen, was die Warnung beim Kompilieren eines Indikators in einem aktualisierten mt4 bedeuten kann:

nicht alle Kontrollpfade liefern einen Wert S_E_v.mq4 181
0 Störung(en), 1 Warnung(en) 1 2

 
Rita:

Können Sie mir sagen, was die Warnung beim Kompilieren des Indikators im aktualisierten mt4 bedeuten könnte:

Das bedeutet, dass es einen Fall gibt, in dem nichts in der Funktion zurückgegeben wird, die einen Wert zurückgibt, und das ist schlecht.
 

Programmierer, helft mir: Ich muss den Bar-Offset für eine bestimmte Zeit auf einem stündlichen TF bestimmen. Das Standardverfahren (aus dem Tutorial) ergibt 0. Zeigen Sie mir die falsche Richtung...

 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:

Programmierer, helft mir: Ich muss den Bar-Offset für eine bestimmte Zeit auf einem stündlichen TF bestimmen. Das Standardverfahren (aus dem Tutorial) ergibt 0. Zeigen Sie mir die falsche Richtung...

"EUROUSD"

Gibt es ein solches Symbol?

 

Nachmittags.

Nach dem letzten mt4-Update und der EA-Kompilierung gibt es Warnungen in drei Zeilen 101-106-109, siehe Abb:

Bitte beraten, - wie zu beheben, hier ist der Code dieser Funktion :

(und sollte sie korrigiert werden?)

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

Nachmittags. Nach dem letzten mt4-Update und der EA-Kompilierung gibt es Warnungen in drei Zeilen 101-106-109, siehe Abb:

Bitte beraten, - wie zu beheben, hier ist der Code dieser Funktion :

(und sollte sie korrigiert werden?)

Ihre init() ist vom Typ int, d.h. sie muss einen Wert zurückgeben. Vor der letzten schließenden Klammer schreiben Sie

return(INIT_SUCCEEDED);

In einer Funktion gibt es eine Stelle, an der die Funktion nichts zurückgeben kann. Sie haben die Funktionen nicht gezeigt - suchen Sie selbst in den Funktionen, bei denen ein Weglassen der letzten schließenden Klammer möglich ist.

 
Hier ist der Code
artmedia70:

Vor die letzte schließende Klammer schreiben Sie ......

Sie haben die Funktionen nicht gezeigt - suchen Sie selbst in den Funktionen, bei denen ein Weglassen der letzten schließenden Klammer möglich ist.


Ich danke Ihnen. Korrigiert return(INIT_SUCCEEDED);.

Hier ist der Code dieser nicht angezeigten Funktion für die anderen beiden verbleibenden Warnungen:

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

.

 
Rita:
Hier ist der Code

Ich danke Ihnen. Korrigiert.

Hier ist der Code für diese Funktion bei den beiden anderen Warnungen:

1. Höchstwahrscheinlich haben Sie deinit() auch int und return(0) ist nicht darin geschrieben

(2) Diese Funktion ist ungültig, und die schließende Klammer dient als "return" in ihr. Darin ist alles in Ordnung.

 

deinit() - Ich habe es überhaupt nicht.

Bei den zwei verbleibenden Warnungen wurde return auf return(0) gesetzt und der Code wurde ohne Probleme kompiliert.

Ich danke Ihnen.