Fehler, Irrtümer, Fragen - Seite 2490

 
Slava:

Haben Sie mein Zitat im folgenden Beitrag aufmerksam gelesen?

Dieses Verhalten ist seit der Einführung der Einstellung "maximale Anzahl von Balken pro Chart", d.h. seit Beginn von MT4, immer vorhanden. Und wir haben in diesen 15 Jahren viele Male erklärt, warum wir die Anzahl der Balken nicht jedes Mal entsprechend dieser Einstellung reduzieren. Und jetzt machen wir nicht jedes Mal Abstriche.

Niemand liest die Dokumentation. Aber es ist ein Paradoxon. Sie fordern uns immer noch auf, etwas anderes in die Dokumentation zu schreiben, das sie nicht lesen.

Slawa, ich habe keine Beschwerden. Ich habe sorgfältig gelesen und nicht nur Ihr Zitat und dieses eine

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Wanzen, Wanzen, Fragen

Slava, 2019.06.29 18:25

rates_total zeigt immer die Anzahl der im aktuellen Diagramm verfügbaren Balken an.

Ich verstehe den Sinn Ihrer Aussage nicht

und dies

Forum für Handel, automatisierte Handelssysteme und Strategietests

Wanzen, Wanzen, Fragen

Slawa, 2019.06.29 18:42

Ich habe das Client-Terminal im Moment nicht zur Hand, um die Hilfe zu zitieren. Von einem mobilen Gerät aus mit zwei Klickshttps://www.metatrader5.com/ru/terminal/help/startworking/settings#max_bars

Speziell hervorgehobener Absatz.

Für eine wirtschaftlichere Berechnung können Indikatoren mehr Balken zur Verfügung haben, als im Parameter "Max bars in window" angegeben. Wenn neue Balken eintreffen, werden ältere Balken nicht sofort aus dem Datencache entfernt. Dadurch wird der Indikator nicht bei jedem neuen Balken komplett neu berechnet, sondern berechnet seine Werte nur zusätzlich für neue Balken.

Ich habe die Dokumentation mehr als einmal gelesen. Aber ich habe Bilder auf dem kürzlich gestarteten Terminal gemacht. Es waren nur 5000 Balken im Fenster, neue Balken hatten noch keine Zeit, geladen zu werden.

Natürlich verstehe ich etwas nicht, deshalb frage ich noch einmal nach und versuche zu verstehen. Ich denke, es wird keine Änderungen geben. Bitte verstehen Sie meine Aussagen nicht als Beschwerde.

 
Igor Makanu:

Der Verweis ist nicht korrekt, er ist irreführend, ich schriebhttps://www.mql5.com/ru/forum/304239/page57#comment_11519307

In MQL5 die Puffer im Allgemeinen arbeiten als gewöhnliche Arrays, in MT4 das Terminal behandelt mit Puffern - es zurückgesetzt sie auf EMPTY_VALUE, dann ... Ich weiß nicht mehr, wo ich über den Unterschied zwischen MT5- und MT4-Indikatoren geschrieben habe

Sie müssen die Puffer löschen - Sie löschen sie wie ein normales Array, das Terminal setzt nur die Größe des Array-Puffers selbst.

Igor, können Sie mir in einfachem Russisch erklären: Wenn jedes Loch des Indikatorpuffers mit einigen Werten gefüllt wird, die den dort enthaltenen Müll ersetzen, welchen Zweck hat es dann, diese Löcher zu erzwingen, bevor sie mit den richtigen Werten gefüllt werden? Für den Verlust der Ausführungsgeschwindigkeit?

 
Alexey Viktorov:

Igor, können Sie in einfachem Russisch erklären: Wenn jedes Loch des Indikatorpuffers mit einigen Werten gefüllt wird, die den dort enthaltenen Müll ersetzen, welchen Zweck hat es dann, diese Löcher zwangsweise zu leeren, bevor sie mit den benötigten Werten gefüllt werden? Für den Verlust der Ausführungsgeschwindigkeit?

Das Füllen von "Löchern" ist nur bei einem Indikator mit "Pfeilen" kritisch, in MT4 werden diese "Löcher" bei der Initialisierung des Indikators automatisch mit dem Wert EMPTY_VALUE gefüllt

im MT5 muss dies vom Programmierer erledigt werden

oder in MT5 sollte der Programmierer die Indikatorpuffer über das if() else-Konstrukt füllen

d.h. dies wird in MT4 funktionieren:

if(...) Buf[i] = high[i];

im MT5 müssen Sie schreiben:

if(...) Buf[i] = high[i]; else Buf[i] = EMPTY_VALUE;

oder in MT5 müssen Sie die Indikatorpuffer leeren, sonst zieht der Indikator "Müll" aus dem Array, das durch den Indikatorpuffer .... gebunden ist, wenn Sie die TF wechseln. es ist eine Frage des Geschmacks, wie man schreibt und was man dabei berücksichtigt


SZY: Geschwindigkeit? Nun, messen Sie die Geschwindigkeit, in 99% der Fälle sind die eingebauten Funktionen schneller, aber es gibt keinen Unterschied in der Leistung zwischen dem Füllen jedes Balkens in der Schleife EMPTY_VALUE und einer Initialisierung mit ArrayInitialize(Buf,EMPTY_VALUE)

 
Igor Makanu:

das Füllen von "Löchern" ist nur bei einem Indikator mit "Pfeilen" kritisch, in MT4 werden diese "Löcher" bei der Initialisierung des Indikators automatisch mit dem Wert EMPTY_VALUE gefüllt

im MT5 muss dies vom Programmierer erledigt werden

oder in MT5 sollte der Programmierer die Indikatorpuffer über das if() else-Konstrukt füllen

d.h. dies wird in MT4 funktionieren:

im MT5 müssen Sie schreiben:

oder in MT5 müssen Sie die Indikatorpuffer leeren, sonst zieht der Indikator "Müll" aus dem Array, das durch den Indikatorpuffer .... gebunden ist, wenn Sie die TF wechseln. es ist eine Frage des Geschmacks, wie man schreibt und was man dabei berücksichtigt


Nun, messen Sie die Geschwindigkeit, in 99% der Fälle laufen die eingebauten Funktionen schneller, aber es gibt keinen Unterschied in der Leistung zwischen dem Füllen jedes Balkens in der EMPTY_VALUE-Schleife und der einmaligen Initialisierung mit ArrayInitialize(Buf,EMPTY_VALUE).

All dies ist nur ein Gezeter. So war es, so will ich es haben, es ist schwer, meine Gewohnheiten und andere Gründe zu ändern.

Das if else-Konstrukt lässt sich leicht ersetzen durch

Buf[i] = условие ? high[i] : EMPTY_VALUE;
 
Alexey Viktorov:

Das ist alles nur Nörgelei. So war es, so will ich es haben, es ist schwierig, meine Gewohnheiten zu ändern, und andere Gründe.

Das if else-Konstrukt lässt sich leicht ersetzen durch

Wenn Sie pingelig sind, Tipps zur Steigerung der Leistung in C++ oder C # nur empfehlen, nicht zu verwenden "bedingte Operator ? Ich glaube, ich habe einmal einen Artikel über Habra gelesen (ich habe ihn nicht getestet, ich schreibe so bequem wie möglich)

;)

 
Igor Makanu:

Wenn ich pingelig bin, ist der Rat, wie man die Leistung in C++ oder C# zu verbessern, nicht zu verwenden "bedingte Operator ? Ich glaube, ich habe einmal einen Artikel über Habra gelesen (ich habe ihn nicht getestet, ich schreibe selbst so bequem wie möglich)

;)

Der Compiler ist kein Idiot und optimiert besser als ein Guru auf Habra.
 
Artyom Trishkin:
Nun, der Compiler hier ist kein Idiot und optimiert besser als die "Gurus" auf dem Hubr

Bei solchen Gelegenheiten wiederhole ich immer: "Die Sonne geht am Morgen auf und am Abend unter..." - Erkennen Sie hier eine Logik? - Ja, das ist logisch, aber sind in meinem Satz auch Informationen enthalten? - Sie ist nicht da.

Ich werde es nicht testen? : , Kompiliermaschine.... Hubr, gut...

 
Igor Makanu:

Ich werde es nicht testen? :

Getestet MT5:

2019.06.30 13:37:04.230 tst (EURUSD,H1) Testing if() cycles=99999999999999 time=10859 ms

2019.06.30 13:37:15.116 tst (EURUSD,H1) Testing ? : Zyklen=999999999999 Zeit=10891 ms

2019.06.30 13:38:05.348 tst (EURUSD,H1) Testing if() cycles=99999999999999 time=10843 ms

2019.06.30 13:38:16.190 tst (EURUSD,H1) Testing ? : Zyklen=999999999999 Zeit=10844 ms

2019.06.30 13:38:32.111 tst (EURUSD,H1) Testing if() cycles=99999999999999 time=10860 ms

2019.06.30 13:38:42.955 tst (EURUSD,H1) Testing ? : Zyklen=999999999999 Zeit=10843 ms

Ich habe den MT4 getestet:

2019.06.30 13:46:09.087 tst EURUSD,H1: Testing ? : Zyklen=999999999999 Zeit=33234 ms

2019.06.30 13:45:35.854 tst EURUSD,H1: Test if() cycles=99999999999999 time=32953 ms

2019.06.30 13:44:43.421 tst EURUSD,H1: Testing ? : Zyklen=999999999999 Zeit=333298 ms

2019.06.30 13:44:10.094 tst EURUSD,H1: Test if() cycles=99999999999999 time=33016 ms

2019.06.30 13:42:56.925 tst EURUSD,H1: Testing ? : Zyklen=999999999999 Zeit=33344 ms

2019.06.30 13:42:23.584 tst EURUSD,H1: Test if() cycles=99999999999999 time=32953 ms

MT-Entwickler, wie immer an der Spitze des Spiels!
 
Mir ist schon lange aufgefallen, dass das Hervorheben von benutzerdefinierten Makronamen in einem großen Projekt nicht immer funktioniert. Viele Makros, die in anderen Dateien definiert sind, werden aus irgendeinem Grund nicht hervorgehoben. Ich kann das Muster noch nicht herausfinden. Alles, was ich sehe, ist, dass alle Makros, die in einer bestimmten Datei nach einer bestimmten Zeile definiert sind, in anderen Dateien nicht mehr hervorgehoben werden. Hat das noch jemand bei sich beobachtet?
 
Alexey Navoykov:
Mir ist schon seit längerer Zeit aufgefallen, dass die Hervorhebung von benutzerdefinierten Makronamen in einem großen Projekt nicht immer funktioniert. Viele Makros, die in anderen Dateien definiert sind, werden aus irgendeinem Grund nicht hervorgehoben. Ich kann noch kein Muster finden. Alles, was ich sehe, ist, dass alle Makros, die in einer bestimmten Datei definiert sind, ab einer bestimmten Zeile in anderen Dateien nicht mehr hervorgehoben werden. Ist das bei jemandem anders auch der Fall?

Ich habe festgestellt, dass, wenn Sie als Parameter einer Funktion schreiben, diese nicht aufleuchtet. Ich denke, es ist kein vollständiger Spieltyp. Oder wie man es genauer nennt, weiß ich nicht.