Fehler, Irrtümer, Fragen - Seite 1392

 
Ilya Malev:

...

Wie auch immer, es ist in einer krummen Weise gezeigt, dass der Aufruf von OnCalculate von OnTimer funktioniert)

Wir müssen die korrekte Wertübertragung in Zeitreihen hinzufügen

Der Artikel zeigt genau dieses Beispiel. )

Hier ist ein weiteres Beispiel für Tests mit der gleichen Methode:MQL5 Recipes - Development of Multicurrency Indicator for Price Divergence Analysis >>>

 
Karputov Vladimir:

Die Variable count sollte vor dem Verlassen von OnCalculate() inkrementiert werden - dann zählt diese Variable korrekt alle Läufe in OnCalculate.

Sie sollte nicht alle zählen, sondern nur bis zur Ishimoku-Berechnung. Die ganze Zeit über war count größer oder gleich 0 und dann -1. Eigentlich spielt das keine Rolle. Wichtig ist, dass

1) Beim ersten Start des Indikators wurde er einmal aufgerufen (OnCalculate) und ist bis zum nächsten Tick (an Wochenenden und Feiertagen bis zu mehreren Tagen) nicht gestartet, wenn wir nicht auf die Schaltfläche "Aktualisieren" drücken.

2) Bei diesem ersten Aufruf hat der Ishimoku-Indikator noch keine Zeit gehabt, zu berechnen (ganz zu schweigen von komplexeren Indikatoren)

3) Wenn Sie OnTimer anstelle von OnCalculate verwenden (oder OnCalculate von OnTimer aus aufrufen), kann ein Benutzer einen Indikator starten, der automatisch erstellt wird, andernfalls muss er/sie die Schaltfläche Aktualisieren (wahrscheinlich mehrmals) drücken oder auf die nächsten Ticks warten. Das ist eine offensichtliche Unannehmlichkeit, verglichen mit dem gleichen MT4.

Anatoli Kazharski:
Das ist bei einfachen Indikatoren ganz normal. Aber bei komplexeren Projekten funktioniert es manchmal nicht richtig. )
Meiner Meinung nach ist es einfacher, OnTimer anstelle von OnCalculate zu verwenden.
 
Ilya Malev:

Dort musste man nicht alles mitzählen, sondern nur bis zur Berechnung des Ishimoku. Die ganze Zeit war die Anzahl größer oder gleich 0 und dann -1. Im Allgemeinen spielt das keine Rolle. Wichtig ist, dass

...

Die Idee ist, dass der Benutzer die Anzahl der Eingaben in OnCalculate sehen kann. Gleichzeitig werden in OnCalculate selbst, wenn das Ergebnis vonCopyBuffer größer als Null ist, Meldungen über das erfolgreiche Einlesen der Pufferwerte angezeigt. Dadurch wird die Anzahl der erfolgreichen Eingaben in OnCalculate visuell sichtbar.
 
Karputov Vladimir:
Die Idee ist, dass der Benutzer die Anzahl der Einträge in OnCalculate sehen kann. In diesem Fall werden im OnCalculate selbst, wenn das Ergebnis vonCopyBuffer größer als Null ist, die Meldungen über den erfolgreichen Empfang von Werten in den Puffer ausgegeben. Als Ergebnis können wir die Anzahl der erfolgreichen Eingaben in OnCalculate visuell sehen.

Ich verstehe, aber wir sind schon ein wenig über dieses Beispiel hinausgekommen. Es wurde benutzt, aussortiert und zum Hauptthema zurückgebracht. Das Beispiel bestätigt, dass die Berechnung ab dem ersten Durchlauf nicht am Wochenende stattfindet. Das hat es zumindest für mich bestätigt. Ich hätte ständig auf "Aktualisieren" klicken müssen. Ich persönlich finde das für die Nutzer inakzeptabel. Ich werde also versuchen, es über OnTimer zu machen.

 

Es ist nicht möglich, in OnCalculate darauf zu warten, dass die Zeitreihe fertig ist, weil dann alles hängen bleibt. Wenn er also nicht bereit ist, erstellen wir einen EventTimer für eine Millisekunde und überprüfen die Bereitschaft in OnTimer. Sobald die Zeitreihe fertig ist, rufen wir OnCalculate auf und beenden den Timer mit KillTimer.

Ich habe noch eine weitere Frage: Wie kann ich zu 100 % sicher sein, dass alle erforderlichen Zeitreihen bereit sind oder nicht?

 

Es scheint, dass OnTimer in Indikatoren, die von anderen Indikatoren aufgerufen werden, überhaupt nicht läuft. Daher können Sie sie nicht über OnTimer aktualisieren. Es scheint, dass ich im Vergleich zu MT4 Dutzende von unnötigen Klicks auf den "Refresh"-Chart während des Betriebs in Kauf nehmen muss.

Und als Pechvogel wird es jedes Mal mit der Maus aus dem Menü gemacht, denn es gibt weder eine solche Option in der Symbolleiste, noch gibt es einen Hotkey dafür. Und es gibt "schwere" Indikatoren, die viel länger als 1 Sekunde gebaut werden.

 
Ilya Malev:

... Und es gibt "schwere" Indikatoren, die viel länger als 1 Sekunde brauchen, um sich aufzubauen.

Ich bin auf das Problem der "schweren" Indikatoren gestoßen. Schauen Sie sich die Links der Reihe nach an - es wird Sie interessieren.

Der springende Punkt - ein schwerer Indikator für ein Symbol verlangsamt die Arbeit aller EAs auf diesem Symbol,auch auf einem anderen Chat!!! Schwere Indikatoren sind böse :)

2)Ein Thema mit einer Beschreibung und Optionen zur Lösung des Problems

3.die Lösung des Problems auf dem Markt

 
Andrey Miguzov:

Sie sind auf das Problem der "schweren" Indikatoren gestoßen. Schauen Sie sich die Links der Reihe nach an - es wird Sie interessieren.

Ich brauche nicht, um Daten zwischen EAs und Indikatoren auszutauschen, und die Indikatoren selbst, obwohl "schwer" zum Teil, sondern führen relativ lange Berechnungen nur im Moment der Berechnung der gesamten Geschichte am Start.

Das Problem ist, dass ich beim ersten Start von OnCalculate nicht auf die Berechnung aller anderen in diesem Indikator verwendeten Indikatoren warten kann, und OnCalculate selbst wird erst beim nächsten Tick wieder aufgerufen, was z.B. am Wochenende nicht der Fall ist. Sie können OnTimer nicht anstelle von (oder zusammen mit) OnCalculate verwenden, da es nicht in Indikatoren aufgerufen wird, die nicht von einem Benutzer, sondern z.B. von einem anderen Indikator mit iCustom aufgerufen wurden (so ist es bisher nach meinen Tests). Ich möchte eine Lösung dafür finden, dass der Indikator automatisch auf die Berechnung aller darin verwendeten Indikatoren wartet und ohne Eingreifen des Benutzers Informationen liefert (ohne regelmäßiges Drücken der Schaltfläche "Aktualisieren" im Dropdown-Menü des Charts, wenn die Häufigkeit neuer Ticks dafür nicht ausreicht).

 
Ilya Malev:

Ich brauche nicht, um Daten zwischen den Expert Advisors und Indikatoren auszutauschen, und die Indikatoren selbst, obwohl "schwer" zum Teil, aber sie führen relativ lange Berechnungen nur im Moment der Berechnung der gesamten Geschichte am Anfang.

Das Problem ist, dass ich beim ersten Start von OnCalculate nicht auf die Berechnung aller anderen in diesem Indikator verwendeten Indikatoren warten kann, und OnCalculate selbst wird erst beim nächsten Tick wieder aufgerufen, was z.B. am Wochenende nicht der Fall ist. Sie können OnTimer nicht anstelle von (oder zusammen mit) OnCalculate verwenden, da es nicht in Indikatoren aufgerufen wird, die nicht von einem Benutzer, sondern z.B. von einem anderen Indikator mit iCustom aufgerufen wurden (so ist es bisher nach meinen Tests). Ich würde gerne eine Lösung finden, die es dem Indikator ermöglicht, automatisch auf die Berechnung aller seiner Indikatoren zu warten und Informationen zu liefern, ohne dass der Benutzer eingreifen muss (ohne regelmäßiges Drücken der Schaltfläche "Aktualisieren" im Dropdown-Menü des Charts, wenn die Häufigkeit der neuen Ticks dafür nicht ausreicht).

Wenn die Aufgabe so gestellt ist, ist das wirklich nicht nötig.

Aber wir können einen Expert Advisor erstellen, der Indikatoren erstellt, Daten von ihnen empfängt, die Daten verarbeitet und das Ergebnis an den Indikatorvisualisierer weitergibt. Dann gäbe es all diese Probleme, die Sie beschrieben haben, nicht. Und viele andere Probleme auch...

Die Lösung ist nicht sehr schön, aber sie hilft, die beschriebenen Probleme loszuwerden.

 

HALLO, KÖNNTEN SIE MICH BERATEN, WENN ICH EIN ECHTES KONTO AUF MT5 ERÖFFNE, WIE LANGE DAUERT ES, BIS EIN MITARBEITER DES UNTERNEHMENS MICH ANRUFT UND DAS KONTOERÖFFNUNGSVERFAHREN ABSCHLIESST?

Grund der Beschwerde: