Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 80

 
Vitaly Muzichenko:

Ich habe es gemacht, es hat keinen Mist ergeben. Verwirrend ist, dass die Verschiebung wahrscheinlich -720 sein sollte.

P.S. Nochmals, ich weiß, dass die Schicht +2 Stunden - auf der Website geschrieben, aber der Roboter nicht weiß.

Man braucht den Websites nicht zu glauben. Die eigentliche Schicht dauert 3 Stunden.

Das gewünschte Ergebnis: "Finde die aktuelle Zeit TimeServer()" Ich habe es nicht richtig verstanden, vielleicht mache ich etwas falsch.

// https://www.mql5.com/ru/docs/dateandtime/timetradeserver
datetime TimeTradeServer()
{
  return(TimeGMT() - TimeServerGMTOffset());
}
 
fxsaber:

Sie brauchen den Websites nicht zu glauben. Die eigentliche Schicht dauert 3 Stunden.

Überprüft an 4 Klemmen, es ist richtig.


Vielen Dank für Ihre Zeit!

 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Diskussion des Artikels "Plattformübergreifender Expert Advisor: Signale"

fxsaber, 2018.04.03 06:26

MQLInfoInteger(MQL_TESTER) || MQLInfoInteger(MQL_OPTIMIZATION) == MQLInfoInteger(MQL_TESTER)
 

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Bibliotheken: Symbol

fxsaber, 2018.04.06 08:20

Wenn Sie einige Eigenschaften eines benutzerdefinierten Symbols ändern müssen, muss dies in manchen Fällen VOR dem Import von Zitaten geschehen.

Ich empfehle daher dringend, zuerst alle Symboleigenschaften festzulegen und erst dann den Import durchzuführen.

Wenn Sie zum BeispielSYMBOL_TRADE_TICK_VALUE und SYMBOL_TRADE_TICK_SIZE einstellen möchten, sollten Sie dies vor dem Import von Ticks/Balken tun.

 
// Копирование всех баров без обращения к торговому серверу
CopyRates(Symb, PERIOD_M1, 0, (int)SeriesInfoInteger(Symb, PERIOD_M1, SERIES_BARS_COUNT), Rates);
 
fxsaber:

Große Arrays sind schön, aber denken Sie daran, dass die Größe eine Rolle spielt.

 
Nikolai Semko:

Große Arrays sind sicherlich eine gute Sache, aber man muss das im Hinterkopf behalten.

Das hat nichts damit zu tun.

 
fxsaber:

Das hat nichts damit zu tun.

Wer weiß...
Immerhin wiegt ein Element von MqlRates 60 Bytes.

Wenn Sie nur ein Array mit 10000 Elementen verwenden, ist das natürlich in Ordnung.

Wenn Sie jedoch eine Reihe solcher Arrays aus synthetischen Zeichen erhalten, die jeweils 100000 Zeichen groß sind, wird die Zugriffsgeschwindigkeit auf die Array-Elemente stark (um mehr als eine Größenordnung) sinken.

Es kann nicht schaden, die Optimierung der Array-Größe im Auge zu behalten, und das ist ein guter Stil. Das ist alles. Ich habe nur gesagt, dass man das im Hinterkopf behalten sollte.

 
Nikolai Semko:

Woher wissen Sie...
Ein MqlRates-Element wiegt 60 Bytes.

Wenn Sie nur ein Array mit 10000 Elementen verwenden, ist das natürlich in Ordnung.

Wenn Sie jedoch eine Reihe solcher Arrays aus synthetischen Zeichen haben und jedes Array 100000 Zeichen groß ist, müssen Sie mit einer drastischen Verringerung der Arbeitsgeschwindigkeit rechnen (um mehr als eine Größenordnung).

Es kann nicht schaden, die Optimierung der Array-Größe im Auge zu behalten, und es ist ein guter Stil. Das ist alles. Ich habe nur gesagt, dass Sie das im Hinterkopf behalten sollten.

Das Beispiel dort bezieht sich in keiner Weise auf Array-Größen. Es ging nicht darum, die Historie vom Handelsserver abzufragen und somit die bereits im Terminal vorhandenen Balken so schnell wie möglich zu erhalten.

 
fxsaber:

Das Beispiel bezieht sich in keiner Weise auf die Größe der Arrays. Es ging darum, keine Historienanforderung vom Handelsserver abzurufen und dementsprechend so schnell wie möglich die Balken zu erhalten, die bereits im Terminal sind.

Ja, ich weiß nicht, worum es dabei ging.

Ich habe gerade Ihre Codezeile gesehen, die wahrscheinlich ein Array erzeugt, das größer ist als die Größe des CPU-Cache.