Fehler, Irrtümer, Fragen - Seite 2491

 
Alexey Navoykov:
Ich habe seit langem festgestellt, 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. Sieht das jemand in seiner eigenen Datei?
Ja
 
Alexey Navoykov:
Ich habe seit langem bemerkt, 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 definiert sind, nach einer bestimmten Zeile nicht mehr in anderen Dateien hervorgehoben werden. Hat noch jemand dieses Problem bei sich beobachtet?

Ich habe etwas Ähnliches festgestellt. Ich kann mich nicht für die Richtigkeit der Situation verbürgen.

 
Alexey Navoykov:
Seit langem ist mir aufgefallen, dass benutzerdefinierte Makronamen in einem Projekt nicht immer hervorgehoben werden. Viele Makros, die in anderen Dateien definiert sind, werden nicht hervorgehoben. Ich kann den Grund dafür noch nicht herausfinden, aber ich sehe, dass alle Makros, die in einer Datei definiert sind, in anderen Dateien nach einer bestimmten Zeile nicht mehr hervorgehoben werden. Hat noch jemand diesen Fall beobachtet?

Ja, und manchmal funktioniert die Autofixierung bei neuen Variablen oder Klassenfeldern nicht, normalerweise kann dies durch Neukompilierung des Projekts behoben werden

Soweit ich verstehe, läuft in ME im Hintergrund ein Prozess, der sich mit Hervorhebung und Autofixing beschäftigt, irgendwann hat er keine Zeit (oder will nicht), alle Informationen zu aktualisieren

 
Da wir nun über rates_total sprechen, möchte ich die Community fragen, welche Konstruktion in OnCalculate intelligenter und optimaler ist?
Ich habe eine Konstruktion wie diese in OnCalculate verwendet:
if (rates_total==prev_calculated) {}        // новый тик, перерисовываем последний бар, все бары на своих местах
else if (rates_total-prev_calculated==1) {} // момент формирования нового бара 
else {}                                     // пересчитываем последние(rates_total-prev_calculated) бар


Aber nachdem ich gemerkt habe, dass es Situationen geben kann, in denen prev_calculated>rates_total ist, habe ich gemerkt, dass ich nichts verstehe, habe ich aufgegeben, und wenn die Neuberechnung aller Balken nicht mehr als ein paar Sekunden dauert, habe ich angefangen, eine solche Konstruktion zu verwenden:

if (rates_total==prev_calculated) {}        // новый тик, перерисовываем последний бар, все бары на своих местах
else if (rates_total-prev_calculated==1) {} // момент формирования нового бара 
else {}                                     // пересчитываем все бары

Wie mache ich es und wie mache ich es richtig?

 
Nikolai Semko:
Da wir über rates_total sprechen, möchte ich die Community fragen, welche Konstruktion in OnCalculate eleganter und optimaler ist?
Ich habe eine solche Konstruktion in OnCalculate verwendet:


Aber als ich merkte, dass es Situationen geben kann, in denen prev_calculated>rates_total ist, wurde mir klar, dass ich nichts verstehe, ich gab es auf, und wenn die Neuberechnung aller Balken nicht mehr als ein paar Sekunden dauert, begann ich mit einer solchen Konstruktion:

Wie macht man das und wie kompetent ist man im Allgemeinen?

Es ist literarisch, weil man versteht, was vor sich geht. Hinweis zu Ihrer Konstruktion: Anstelle von ==1 würde ich >=1 oder einfach if(rates_total > prev_calculated) schreiben, so dass, wenn fehlende Balken aufgepumpt werden, diese neu berechnet werden.

Außerdem sollten wir in mql5 und mit der strikten Richtlinie in mql4 berücksichtigen, wie viele Balken in die Berechnung ab dem äußersten linken Balken einbezogen werden können, um nicht über das Feld hinauszuschießen. Es hat sich also herausgestellt, dass ich persönlich keine Vorlage für alle Gelegenheiten habe.

 
Nikolai Semko:
Da wir nun über rates_total sprechen, möchte ich die Community fragen, welche Konstruktion in OnCalculate eleganter und optimaler ist?
Ich habe eine solche Konstruktion in OnCalculate verwendet:


Aber als ich verstand, dass es Situationen geben kann, in denen prev_calculated>rates_total ist, wurde mir klar, dass ich nichts verstehe, und ich schüttelte den Kopf, und wenn die Neuberechnung aller Balken nicht mehr als ein paar Sekunden dauert, beschloss ich, diese Konstruktion zu verwenden:

Wie macht man das, und wie macht man es überhaupt richtig?

Ich berechne Limit = rates_total - prev_calculated.
Dann, wenn limit > 1, limit = rates_total - 1 (oder die erforderliche Anzahl von Takten-1 für die erste Berechnung) und Initialisierung.
Und dann eine Schleife von Limit bis >=0.
Ich kann den Code nicht von meinem Handy aus eingeben ...
 
Nikolai Semko:
Da wir über rates_total sprechen, möchte ich die Community fragen, welche Konstruktion in OnCalculate eleganter und optimaler ist?
Ich habe eine solche Konstruktion in OnCalculate verwendet:


Als ich verstand, dass es Situationen geben kann, in denen prev_calculated>rates_total ist, wurde mir klar, dass ich nichts verstehe, also gab ich auf und verwendete diese Konstruktion, wenn die Neuberechnung aller Balken nicht mehr als ein paar Sekunden dauert:

wie macht man das, und wie macht man das im Allgemeinen, kompetent?

Grundsätzlich ist die Frage relevant, in den Beispielen von den Entwicklern (Auslieferung von MT) werden verschiedene Berechnungsarten, auch BarsCalculated() in Bears.mql5 verwendet

ich vor kurzem unter MT4 diskutiert, so weit ich auf das folgende Muster festgelegt:https://www.mql5.com/ru/forum/314931/page2#comment_11946579

Ich muss es noch auf MT5 überprüfen, aber Charts verhalten sich anders (MT4 / MT5), in MT5, wenn Sie mit dem Mausrad zum Anfang der Geschichte scrollen, scheint es prev_calculated wird auf Null zurückgesetzt werden - letztes Jahr schrieb ich einen Indikator auf MT5 und war überrascht, ein solches Verhalten zu sehen

ZZY: Erstellen Sie ein benutzerdefiniertes Diagramm und blättern Sie per Timer durch die Historie - ein sogenanntes Testbed ist erforderlich, um das Verhalten von rates_total und prev_calculated nachzuvollziehen - ich habe hier vor ein paar Seiten über die Diskrepanz zwischen rates_total und iBars() geschrieben - dies sollte ebenfalls berücksichtigt werden

Ich mochte seine Art, Indikatoren zu schreiben - alles ist sorgfältig gemacht. Das einzige Problem mit seinen Codes ist ein sehr eigenartiger Stil der Quellcode-Formatierung.

 
Igor Makanu:

...........................

eine sehr eigenwillige Formatierung der Quelle


 
Сергей Таболин:


Ich weiß, wie man den Styler benutzt, aber der Styler funktioniert nicht, wenn man mehrere Operatoren in eine Zeile setzt

;)

Beispielhttps://www.mql5.com/ru/code/22766
 

Nur eine Frage.

ulong hat einen Höchstwert von 18.........

Ich habe einen Wert von 61........

UndIntegerToString() dieses Wertes gibt überhaupt 90............. aus

Ich habe eine Weile gebraucht, um das Problem zu finden.

Gibt es eine Möglichkeit, sie zu lokalisieren?