Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1283

 
MakarFX:

Wie kann ich feststellen, wie stark ein EA den Server belastet?

Bei jedem Tick fragt es Ask, Bid, Spread, TICKVALUE

Wenn ich es richtig verstehe, wird der Profiler helfen. Aber wir sollten uns darüber im Klaren sein, dass die Last nicht mit der Belastung gleichzusetzen ist. Es handelt sich um die Zeit, die für die Ausführung von Anfragen oder die CPU-Auslastung aufgewendet wird. Wenn es einen Expert Advisor pro Symbol in einem Fenster gibt, ist das in Ordnung. Aber wenn es 120 Fenster mit 40 Symbolen auf 10 Terminals in einem Rechner gibt, kann der Rechner einfrieren).

 
Aleksei Stepanenko:

Ich weiß nicht, du könntest es im Kampf versuchen. Oder vielleicht als OptionINT_MAX?


Ja, so rechne ich:

Und von Termin zu Termin einschließlich der Wochenenden ist etwas anderes.

Punkte pro Sekunde, ja, das ist lesbar. Und bei niedrigeren TFs sind die Geschwindigkeiten höher und die Reichweite ist geringer.

_     ;qstr7_41;_;EURUSD;_TF_;1; Имя файла ;QstrV.csv; Локальное время ;2020.10.23 15:34:25
2020.10.23 14:34:20; [i]= ;13; VTrend[i] = ;25; SumVTrend= ;97; AbsVTrend= ;341; pos= ;8;SumVTrendPos= ;339; neg= ;7; SumVTrendNeg= ;-345
2020.10.23 14:34:20; [i]= ;2; VTrend1[i] = ;272; SumVTrend1= ;17; AbsVTrend1= ;137; pos1= ;2;SumVTrendPos1= ;-84; neg1= ;2; SumVTrendNeg1= ;-84
_     ;qstr7_41;_;EURUSD;_TF_;5; Имя файла ;QstrV.csv; Локальное время ;2020.10.23 15:34:36;
 2020.10.23 14:34:31; [i]= ;15; VTrend[i] = ;414; SumVTrend= ;47; AbsVTrend= ;124; pos= ;9;SumVTrendPos= ;160; neg= ;8; SumVTrendNeg= ;-82
2020.10.23 14:34:31; [i]= ;2; VTrend1[i] = ;-32; SumVTrend1= ;63; AbsVTrend1= ;83; pos1= ;2;SumVTrendPos1= ;37; neg1= ;2; SumVTrendNeg1= ;-32
_     ;qstr7_41;_;EURUSD;_TF_;1440; Имя файла ;QstrV.csv; Локальное время ;2020.10.26 15:42:42;
2020.10.26 14:42:42; [i]= ;14; VTrend[i] = ;-26; SumVTrend= ;3; AbsVTrend= ;9; pos= ;9;SumVTrendPos= ;9; neg= ;7; SumVTrendNeg= ;-11
2020.10.26 14:42:42; [i]= ;1; VTrend1[i] = ;-7; SumVTrend1= ;-7; AbsVTrend1= ;7; pos1= ;1;SumVTrendPos1= ;0; neg1= ;2; SumVTrendNeg1= ;-7
 
Valeriy Yastremskiy:

Wenn ich das richtig verstanden habe, wird ein Profiler helfen. Aber Sie müssen verstehen, dass Last nicht gleich Last ist. Dies ist die für die Ausführung von Abfragen aufgewendete Zeit oder die CPU-Last auf dem Rechner. Wenn es einen Expert Advisor pro Symbol in einem Fenster gibt, ist das in Ordnung. Und wenn es 120 Fenster mit 40 Symbolen auf 10 Terminals in einem Rechner gibt, kann der Rechner einfrieren).

Wir haben bereits besprochen, wenn auf die Terminaldaten aus MQL4 mehrfach zugegriffen werden soll, dann OrderSelecthttps://www.mql5.com/ru/forum/342989#comment_16743716

Auf die gleiche Weise können Sie testen, wie Sie den aktuellen Preis erhalten - ich denke, Sie können es auch 100500 Mal pro Tick verwenden, da die Ausgabe Millionen Mal pro Sekunde erhöht wird


Je mehr Symbole sich im Marktbeobachtungsfenster befinden, desto größer ist die Last auf dem Terminal selbst, und wenn Sie Daten von vielen verschiedenen Symbolen abrufen, kommt es zu Verzögerungen

d.h. wenn Sie das Terminal vernünftig benutzen, wird nichts einfrieren - im Marktbeobachtungsfenster gibt es zehn Symbole, die Sie benutzen


Ich habe nicht überprüft, wie viele Charts Sie gleichzeitig öffnen können, aber ich denke, wenn Sie die Historie auf 1000 Balken begrenzen, dann wird das Terminal wahrscheinlich ein paar Dutzend Chart-Fenster ohne Probleme öffnen

 

Guten Tag an alle!

Ich habe mit dem Studium von mql5 (nach mql4) begonnen. In mql4 gibt es eine Funktionsgruppe namens Datum und Uhrzeit. Es gibt die gleiche Gruppe in fünf. Aber diese Gruppe von Funktionen in fünf ist viel weniger als in vier. In five gibt es keine Funktionen, die Werte für die aktuelle Stunde, Minute ... zurückgeben. und andere Funktionen.
Zum Beispiel gab es in der vierten Version die Funktion Hour(), die den Wert der aktuellen Stunde zurückgab. Fünf hat keine solche Funktion.
FRAGE

Welche Funktionen in five sind analog zu Hour() und anderen Funktionen aus der Date and Time Funktionsgruppe von four, die nicht in der ähnlichen Gruppe in five sind.

Ich danke Ihnen für Ihre Hilfe.

 
Igor Makanu:

Wir haben bereits diskutiert, ob es notwendig ist, wiederholt auf Terminaldaten von MQL4 zuzugreifen, dann OrderSelecthttps://www.mql5.com/ru/forum/342989#comment_16743716

Ich denke, dass es möglich ist, es auch 100500 Mal pro Tick zu verwenden, da die Ausgabe Millionen Mal pro Sekunde erhöht wird.


Je mehr Symbole sich im Marktbeobachtungsfenster befinden, desto größer ist die Last auf dem Terminal selbst, und wenn Sie Daten von vielen verschiedenen Symbolen abrufen, kommt es zu Verzögerungen

d.h. wenn Sie das Terminal vernünftig benutzen, wird nichts einfrieren - im Marktbeobachtungsfenster gibt es zehn Symbole, die Sie benutzen


Ich habe nicht überprüft, wie viele Charts Sie gleichzeitig öffnen können, aber ich denke, wenn Sie die Historie auf 1000 Balken begrenzen, dann wird das Terminal wahrscheinlich ein paar Dutzend Chart-Fenster ohne Probleme öffnen

(Danke für die Erinnerung))) Ich meine, dass bei vernünftigen Anfragen alles funktionieren sollte, d. h. bei Anfragen mit geringen Kosten (in Bezug auf Ausführungszeit und CPU-Last).

 
ANDREY:

Guten Tag an alle!

Ich habe mit dem Studium von mql5 (nach mql4) begonnen. In mql4 gibt es eine Funktionsgruppe namens Datum und Uhrzeit. Es gibt die gleiche Gruppe in fünf. Aber diese Gruppe von Funktionen in fünf ist viel weniger als in vier. In five gibt es keine Funktionen, die Werte für die aktuelle Stunde, Minute ... zurückgeben. und andere Funktionen.
Zum Beispiel gab es in der vierten Version die Funktion Hour(), die den Wert der aktuellen Stunde zurückgab. Fünf hat keine solche Funktion.
FRAGE

Welche Funktionen in five sind analog zu Hour() und anderen Funktionen aus der Date and Time Funktionsgruppe von four, die nicht in der ähnlichen Gruppe in five sind.

Ich danke Ihnen für Ihre Hilfe.

https://www.mql5.com/ru/docs/dateandtime/timecurrent verwenden.

zweite Version des Funktionsaufrufs

datetime  TimeCurrent(
   MqlDateTime&  dt_struct      // переменная типа структуры
   );
im Allgemeinen ist eshttps://www.mql5.com/ru/docs/dateandtime/timetostruct
 
Ein Tipp für einen 4k. Rückgabe von Mausklick-Koordinaten im Diagramm, vorzugsweise nach Taktnummer. Ich kann nur die Koordinaten finden, an denen das Skript ausgelöst wurde.
 
Valeriy Yastremskiy:

Danke, das erinnert mich daran))) Ja, vieles habe ich damals nicht verstanden.) Ich wollte nur sagen, dass mit vernünftigen Anfragen alles funktionieren sollte. Diese Anfragen sind kostengünstig (Ausführungszeit und CPU-Last).

ja

Wenn der Code "schmutzig" ist, kann man jedes System vermasseln

und wenn es sich um eine sinnvolle Verwendung handelt, bei der die Bezugnahme auf den Ask/Bid-Kurs sogar ein paar Dutzend Mal pro Tick vorkommt, dann wird dies die Leistung des EA nicht beeinträchtigen (maximal 1-2%)

d.h. die Logik der Ressourcennutzung (oder Aufrufe von Systemfunktionen / Umgebung des Terminals) sollte sein, wenn der Algorithmus den Zugriff auf Ask/Bid-Kurse mehrere tausend Mal pro Tick impliziert, dann.... Höchstwahrscheinlich sollten Sie den Algorithmus selbst überdenken, oder alternativ dazu, sich die Werte vonAsk/Bid einmal merken, bevor Sie den Algorithmus berechnen




Valeriy Yastremskiy:
Bitte um Rat für 4k. Koordinaten des Mausklicks auf ein Diagramm, wie die Rückkehr, vorzugsweise durch eine Taktnummer. Finden Sie nur die Koordinaten, an denen sie das Skript geworfen haben.

suchen Sie wahrscheinlich nachChartXYToTimePrice https://docs.mql4.com/ru/chart_operations/chartxytotimeprice

nur diskutierthttps://www.mql5.com/ru/forum/353726

hier ist ein anderer Thread, in dem es auch um Klicks gehthttps://www.mql5.com/ru/forum/344607

 
Igor Makanu:

wenn der Algorithmus mehrere Tausend Mal pro Tick auf die Ask/Bid-Preise verweist, dann.... Höchstwahrscheinlich sollten Sie den Algorithmus selbst überdenken, oder alternativ dazu, merken Sie sich die Ask/Bid-Werte einmal, bevor Sie den Algorithmus berechnen




suchen Sie vielleicht nachChartXYToTimePrice https://docs.mql4.com/ru/chart_operations/chartxytotimeprice

nur diskutierthttps://www.mql5.com/ru/forum/353726

hier ist ein anderer Thread, in dem es auch um Klicks gehthttps://www.mql5.com/ru/forum/344607

Wenn wir die Preise auf dem Tick haben, können wir im Allgemeinen bis zum Ende von OnTick mit ihnen arbeiten, wenn es nicht kritisch ist. Und Begrenzer, um Schlupf zu verhindern).

Ich wollte auf einen Kerzenständer klicken und seinen Wert in eine Datei schreiben.

CHARTEVENT_MOUSE_MOVE

 
Valeriy Yastremskiy:

Im Allgemeinen, wenn wir die Preise auf dem Tick haben, können wir mit ihnen bis zum Ende des OnTick arbeiten, wenn nicht kritisch. Und Begrenzer, die gegen Schlupf helfen)

Ich wollte auf eine Kerze klicken und ihren Wert in eine Datei schreiben.

CHARTEVENT_MOUSE_MOVE

Vielleicht möchten Sie auf diese Weise den Preis und die Uhrzeit für die Bar festlegen:

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
   if(id == CHARTEVENT_CLICK)
   {
      int window = 0;
      datetime time;
      double   price;
      if(ChartXYToTimePrice(0, (int)lparam, (int)dparam, window, time, price))
      {
         Print("time = ", time, " ,price = ", price);
      }
   }
}
bzw. sind dies Mausklick-Koordinaten in den Werten Zeit + Preis im Chart, der Balken sollte überiBarShift() definiert werden