Diskussion zum Artikel "Das MQL5-Kochbuch: Steuerelemente des Indikatorunterfensters - Die Schaltflächen" - Seite 8

 
C-4:
MT5 verfügt über eine asynchrone Aktualisierung der Charteigenschaften. D.h. die Tatsache, dass wir eine Eigenschaft gesetzt haben, bedeutet nicht, dass das Terminal sie sofort übernommen hat. Die Funktion ChartRedraw() wird verwendet, um alle Eigenschaften vom Terminal neu einlesen zu lassen. Sie können auch die ChartGet... ObjectGet Funktionen verwenden, in diesem Fall werden die Eigenschaften ebenfalls neu eingelesen.
Ich habe diese Information nirgendwo gefunden. Ich bin darauf gestoßen und habe die Lösung gefunden, jetzt weiß ich es.
 
komposter:
Ich bin nirgendwo auf diese Informationen gestoßen. Ich bin darüber gestolpert und habe die Lösung gefunden, jetzt weiß ich es.

Wie lautet sie? Hier am Anfang des Abschnitts Arbeiten mit Diagrammen:

Funktionen für die Arbeit mit Charts. Alle Operationen mit Charts sind nur in Expert Advisors und Skripten anwendbar.

Funktionen, die Eigenschaften eines Charts festlegen, werden eigentlich dazu verwendet, Befehle zu senden, um den Chart zu verändern. Wenn diese Funktionen erfolgreich ausgeführt werden, wird der Befehl in die allgemeine Ereigniswarteschlange des Diagramms aufgenommen. Das Ändern eines Diagramms erfolgt während der Verarbeitung der Ereigniswarteschlange des jeweiligen Diagramms.

Aus diesem Grund sollten Sie nach dem Aufruf dieser Funktionen keine sofortige visuelle Aktualisierung des Diagramms erwarten. Im Allgemeinen wird die Aktualisierung des Diagramms vom Terminal automatisch durch Änderungsereignisse durchgeführt - Ankunft eines neuen Kurses, Änderung der Größe des Diagrammfensters, usw. Um das Erscheinungsbild des Charts zwangsweise zu aktualisieren, verwenden Sie den Befehl ChartRedraw(), um den Chart neu zu zeichnen.

 
komposter:
Ich bin nirgendwo auf diese Informationen gestoßen. Stolperte über sie, fand die Lösung, jetzt werde ich wissen.
Natürlich, weil diese Information nirgends zu finden ist (es stellt sich heraus, dass es sie gibt, siehe oben:))). Ich selbst habe mich mit diesem Problem gequält, bis ich mich an den Kundendienst gewandt habe. Dort sagte man mir, dass Änderungen der Eigenschaften von Objekten im Diagramm asynchron erfolgen. Und Ihrem Beispiel nach zu urteilen, betrifft es die Eigenschaften des Diagramms selbst.
 
Rosh:

Was ist was genau? Hier am Anfang des Abschnitts Operationen mit Diagrammen:

Ich habe nicht gesagt, dass es nicht da ist, ich bin nur nicht darauf gestoßen (oder habe es vergessen). Danke!

Was ist mit meinem Vorschlag, ein CHART_CHANGE-Ereignis zu erzeugen, wenn sich Diagrammeigenschaften ändern, wie z. B. das Flag zur Verfolgung von Mausereignissen? Vielleicht könnten Sie das tun?

 
C-4:
Natürlich, denn diese Information ist nirgends verfügbar (wie sich herausstellt, ist sie es doch, siehe oben:))). Ich habe mich selbst mit diesem Problem gequält, bis ich mich an den Service Desk wandte. Dort sagte man mir, dass Änderungen der Eigenschaften von Objekten im Diagramm asynchron erfolgen. Und Ihrem Beispiel nach zu urteilen, betrifft es die Eigenschaften des Diagramms selbst.

Mehr dazu im Abschnitt Grafische Objekte:

Eine Gruppe von Funktionen, die für die Arbeit mit grafischen Objekten in Bezug auf ein bestimmtes Diagramm entwickelt wurden.

Die Funktionen, die die Eigenschaften von grafischen Objekten festlegen, sowie die Operationen zum Erstellen von ObjectCreate() und zum Verschieben von ObjectMove() Objekten auf dem Diagramm werden tatsächlich verwendet, um Befehle an das Diagramm zu senden. Wenn diese Funktionen erfolgreich ausgeführt werden, wird der Befehl in die allgemeine Warteschlange der Ereignisse des Diagramms aufgenommen. Die visuelle Änderung der Eigenschaften von grafischen Objekten wird während der Bearbeitung der Ereigniswarteschlange eines bestimmten Diagramms durchgeführt.

Aus diesem Grund sollten Sie keine sofortige visuelle Aktualisierung der grafischen Objekte nach dem Aufruf dieser Funktionen erwarten. Im Allgemeinen wird die Aktualisierung der grafischen Objekte auf dem Diagramm vom Terminal automatisch durch die Änderungsereignisse durchgeführt - Ankunft eines neuen Kurses, Änderung der Größe des Diagrammfensters, usw. Für eine erzwungene Aktualisierung der grafischen Objekte verwenden Sie den Befehl ChartRedraw(), um das Diagramm neu zu zeichnen.

 
Rosh:

Mehr im Abschnitt Grafische Objekte:

Es ist klar und vertraut mit Objekten, aber ich habe etwas anderes von den Grafikeigenschaften erwartet.

Sollte ich meinen Vorschlag nicht wiederholen? Oder sollte ich ihn in einen Service-Desk stellen?

 
Dem Autor ein herzliches Dankeschön für einen großartigen Artikel.
 
MetaQuotes Software Corp.:

Der neue Artikel MQL5 Bylaw Manual : Indicator Subwindow Controls - Buttons wurde veröffentlicht:

Autor: Anatoli Kazharsk

Sehr schönes Tutorial, ich hoffe wirklich, dass Sie noch mehr dazu veröffentlichen werden, vielen Dank!

 

Anatoli,

Ich möchte mich bei Ihnen für Ihre Beiträge zur MQL5-Gemeinschaft bedanken. Ihre Beispiele haben mich bei der Entwicklung meines eigenen Codes mehrere Monate vorangebracht. Nochmals vielen Dank.

Ich muss diesen "Indikator" für die Schaltflächen Open Long, Open Short, Close All und Set Trailing Stop verwenden. Mein Problem ist, dass ich mit meinem EA interagieren muss, damit ich

1) auf diese Funktionen innerhalb des EA zugreifen kann, und

2) EA-Empfehlungen durch Blinken der Schaltfläche "Open Long" erhalte, wenn der pSAR, der CCI, der MACD oder andere Indikatoren auslösen.

Hier ist also meine Frage: Wie kann ich den EA dazu bringen, mit den Indikatorschaltflächen zu kommunizieren und die Indikatorschaltflächen mit dem EA zu verbinden?

Ich danke Ihnen im Voraus,

CipherPips

 
CipherPips:

Danke!

Ich glaube, das ist die Version, die Ihnen besser gefällt: Grafische Schnittstellen I: Vorbereitung der Bibliotheksstruktur (Kapitel 1)

Fortsetzung dieser Serie mit vielen ausführlichen Beispielen.