Merkmale der Sprache mql4, Feinheiten und Techniken - Seite 4

 
Alexey Kozitsyn:
Wow, das ist ein feiner Punkt. Haben sie es in den SD geschrieben?

Der Autor hat geschrieben. Die Fähigkeiten der Sprache stehen seit langem im Widerspruch zur alten Dokumentation, d.h. undokumentierte Dinge werden tatsächlich verwendet, was eine seltsame Behauptung ist.

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Wie kann man Double und QNaN schnell vergleichen?

fxsaber, 2016.10.11 15:56

Unbemerkt geblieben.

double QNaN   =Nan(0x7FF7000000000000);  

Der Anfangswert einer globalen Variablen kann jetzt über eine Funktion deklariert werden!

Das Gleiche gilt für die übrigen statischen Variablen.

Seltsamerweise schwiegen die Entwickler über diese Neuerung.


Документация по MQL5: Основы языка / Переменные / Статические переменные
Документация по MQL5: Основы языка / Переменные / Статические переменные
  • www.mql5.com
Основы языка / Переменные / Статические переменные - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
fxsaber:
In beiden Sprachen gibt es einen feinen Hinweis auf Statik

Alexey Kozitsyn:
Wow, was für ein feiner Punkt... Haben Sie es in SD geschrieben?

Ist es in Ordnung, dass in der Hilfe steht, dass eine statische Variable... lesen Sie es selbst.

Eine statische Variable kann durch eine Konstante oder einen konstanten Ausdruck, der ihrem Typ entspricht, initialisiert werden, im Gegensatz zu einer einfachen lokalen Variable, die durch einen beliebigen Ausdruck initialisiert werden kann.


Aber nicht eine Funktion.

So funktioniert es

#property strict
#property indicator_chart_window

int TestBrokenStatic()
{
   static int stInt = 101;
   stInt++;
   return stInt;
}

int OnInit()
{
   static int result = 0;
   result = TestBrokenStatic();
   Print("TestStatic Expected result 102   - Actual result=", result);
   result = TestBrokenStatic();
   Print("TestStatic Expected result 103   - Actual result=", result);
   
   return INIT_SUCCEEDED;
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   return rates_total;
}
2017.04.29 13:49:51.546 !Test USDCHF,M15: TestStatic Expected result 103   - Actual result=103
2017.04.29 13:49:48.457 !Test USDCHF,M15: TestStatic Expected result 102   - Actual result=102
2017.04.29 13:49:40.089 Custom indicator Test\!Test USDCHF,M15: loaded successfully
Статические переменные - Переменные - Основы языка - Справочник MQL4
Статические переменные - Переменные - Основы языка - Справочник MQL4
  • docs.mql4.com
Статические переменные - Переменные - Основы языка - Справочник MQL4
 
Alexey Viktorov:

Ist es in Ordnung, dass in der Hilfe steht, dass eine statische Variable... lesen Sie es selbst.

Aber nicht eine Funktion.

So funktioniert es.

Dann muss der Compiler einen Fehler melden...
 
Alexey Viktorov:

Ist es in Ordnung, dass in der Hilfe steht, dass eine statische Variable... lesen Sie es selbst.

Ist es in Ordnung, dass ich gleichzeitig einen Link zur Dokumentation und einen Link zu einer Code-Diskussion von vor sechs Monaten angegeben habe... Befolgen Sie Ihren eigenen Rat.

Insbesondere bei statischen Konst.

 
fxsaber:

Ist es in Ordnung, dass ich gleichzeitig einen Link zur Dokumentation und einen Link zu einer Code-Diskussion der Entwickler von vor einem halben Jahr angegeben habe? befolgen Sie Ihren eigenen Rat.

Insbesondere bei statischen Konst.

Ich habe mir den Link nicht angesehen, weil ich die englische Sprache nicht kenne und die mech. Übersetzung manchmal unverständlicher ist als Chinesisch/Japanisch mit einem Schuss Koreanisch.

Und Sie müssen nicht so empfindlich sein. In meinen Worten liegt nicht der Hauch eines Vorwurfs, dass Sie einer solchen Kleinigkeit keine Beachtung geschenkt haben.

 
Alexey Viktorov:

Ich habe mir den Link nicht angeschaut, da ich die englische Sprache nicht kenne und die mech. Übersetzung manchmal unverständlicher ist als das Chinesische/Japanische mit einem Schuss Koreanisch.

Oh, und es gibt keinen Grund, so morbide darüber zu sein. Meine Worte enthalten nicht den Hauch eines Vorwurfs, dass Sie einer solchen Kleinigkeit keine Beachtung geschenkt haben.


Forum zum Thema Handel, automatische Handelssysteme und Strategietester

Merkmale der Sprache mql4, Feinheiten und Tricks

fxsaber, 2017.04.29 11:07

Die Eigenschaften der Sprache sind schon lange nicht mehr mit der alten Dokumentation vereinbar, d.h. es werden tatsächlich undokumentierte Dinge verwendet, über die man entsprechend seltsame Behauptungen aufstellen kann.

 
Alexey Kozitsyn:
Dann sollte der Compiler einen Fehler melden...

Vielleicht sollte es das, aber... wir haben, was wir haben.

 
fxsaber:

War das nicht schon in der alten Dokumentation so?


ps. Es ist viel zu spät für mich, um die Bedeutung dieser Hinweise zu erfassen...

Aber hier ist ein Gegenbeweis zu dieser Aussage

fxsaber:

Unbemerkt geblieben.

Der Anfangswert einer globalen Variablen kann jetzt durch eine Funktion deklariert werden!

Das Gleiche gilt für die übrigen statischen Variablen.

Es ist seltsam, dass die Entwickler über diese Innovation schweigen.

Oder geht es hier um etwas ganz anderes? Deklarieren oder initialisieren?
 
static const bool IsTester = (::MQLInfoInteger(MQL_TESTER) || ::MQLInfoInteger(MQL_OPTIMIZATION) ||
                              ::MQLInfoInteger(MQL_VISUAL_MODE) || ::MQLInfoInteger(MQL_FRAME_MODE));
 
fxsaber:

Ich kann es im Moment nicht überprüfen, aber MQL_TESTER scheint alles andere zu enthalten. Aber alles andere schließt sich nicht gegenseitig ein.

Das heißt, um zu verstehen, dass das Programm im Tester (in einem der aufgelisteten Modi) funktioniert, müssen Sie nur das allererste Flag überprüfen.