Diskussion zum Artikel "Grafische Interfaces X: Erweitertes Management von Listen und Tabellen Code Optimierung (build 7)" - Seite 4

 
Anatoli Kazharski:

Also durch Ereignisse. Aber nicht durch einen Timer mit einer solchen Häufigkeit. Im Allgemeinen sind die Bremsen auf Ihrer Seite, nicht auf der Seite der Bibliothek oder der Videoaufzeichnung. Ich habe keine weiteren Fragen.

Es ist klar, dass die Bremsen auf meiner Seite sind - seien Sie nicht so angreifbar (Sie versuchen, sich zu verteidigen ;)). Aber die Tatsache, dass es solche Bremsen ohne Videoaufzeichnung nicht gibt, ist eine Tatsache. Sie sind da, aber klein.

Wie kann man ein Ereignismodell ohne Timer organisieren, wenn man eine unbekannte Anzahl von Zeichen versucht? Mit OnTick()können Sie das erforderliche Ereignis bei einem "nicht einheimischen" Symbol nicht rechtzeitig erkennen.
Also - nur durch den Timer in einer Schleife alle erforderlichen Symbole durchsuchen, das Kriterium definieren und das Ereignis senden. Dann schon das Ereignis verarbeiten.
Daran habe ich auch schon gedacht. Die Schleife durch die Zeichen im Timer mit Kontrolle der benötigten Kriterien wird man sowieso nicht los. Und die Ereignisverarbeitung nimmt nicht viel Zeit in Anspruch. Obwohl es den Timer etwas entlasten wird. Ich werde es natürlich ausprobieren - das hatte ich schon vor.

 
Artyom Trishkin:

...

Wie organisiert man ein Ereignismodell ohne Timer bei der Suche nach einer unbekannten Anzahl von Zeichen? OnTick()erlaubt es Ihnen nicht, das erforderliche Ereignis auf einem "nicht-nativen" Zeichen in der Zeit zu bestimmen.
So - nur durch den Timer in einer Schleife durch alle erforderlichen Zeichen zu suchen, bestimmen das Kriterium und senden Sie das Ereignis. Dann schon das Ereignis verarbeiten.
Daran habe ich schon gedacht. Die Schleife durch die Zeichen im Timer mit Kontrolle der erforderlichen Kriterien wird man sowieso nicht los. Und die Ereignisverarbeitung nimmt nicht viel Zeit in Anspruch. Obwohl es den Timer etwas entlasten wird. Ich werde es natürlich ausprobieren - ich hatte es schon vor.

Und wie viele Zeichen waren in der Verarbeitung bei der Videoaufnahme?

Diese Option ist nicht geeignet? >>> MQL5 Recipes - Multicurrency Expert Advisor: ein Beispiel für ein einfaches, genaues und schnelles Schema. Wenn nicht, warum nicht?

 
Artyom Trishkin:


Wie kann man ein Ereignismodell ohne Timer organisieren, wenn man eine unbekannte Anzahl von Zeichen sucht? OnTick()erlaubt es nicht, das erforderliche Ereignis für ein "nicht-natives" Zeichen rechtzeitig zu definieren.
Also - nur alle erforderlichen Zeichen durch den Timer in einer Schleife anzeigen, das Kriterium definieren und das Ereignis senden. Dann schon das Ereignis verarbeiten.
Daran habe ich schon gedacht. Die Schleife durch die Zeichen im Timer mit Kontrolle der erforderlichen Kriterien wird man sowieso nicht los. Und die Ereignisverarbeitung nimmt nicht viel Zeit in Anspruch. Obwohl es den Timer etwas entlasten wird. Ich werde es natürlich ausprobieren - ich hatte es schon vor.

Irgendwann habe ich aus irgendeinem Grund die Zeitintervalle zwischen den eingehenden Ticks untersucht. Ich suchte nach irgendwelchen Mustern. Ich habe Wochen damit zugebracht. Ich kann sagen, dass die beobachteten Ströme von Ticks mit einer Frequenz von nicht mehr als 90 - 100 Millisekunden kamen.

Wenn Sie viele Instrumente auf Ticks überprüfen müssen, macht es meiner Meinung nach keinen Sinn, dies öfter als alle 100 Millisekunden zu tun. Ich glaube nicht, dass es eine Asynchronität beim Eintreffen von Ticks zwischen den Instrumenten gibt, die es erforderlich machen würde, die Prüffrequenz auf maximal 16 ms zu erhöhen.

Sie können leicht überprüfen, ob es eine Asynchronität bei der Ankunft der Ticks bei den Instrumenten gibt, was die gesamte Tick-Frequenz auf 16 ms mit Alert erhöht.
 
Anatoli Kazharski:

Und wie viele Zeichen waren in der Verarbeitung, als das Video aufgenommen wurde?

Ist diese Variante nicht geeignet? >>> MQL5 Recipes - Multicurrency Expert Advisor: ein Beispiel für ein einfaches, genaues und schnelles Schema. Wenn nicht, warum nicht?

Die Gesamtzahl der beteiligten Symbole war etwa 13 von 34 - das Vorhandensein eines Signals auf den Symbolen wird dort zuerst festgestellt, die mit einem Signal werden ausgewählt, und diese sind diejenigen, die an der Suche im Timer teilnehmen - der Preis, der die erforderlichen Niveaus durchquert, wird gesucht.

Ich habe mich gefragt, warum ich für jedes Symbol, das im Market Watch im Timer vorhanden ist, einen neuen Balken suchen muss - das ist eine unzulässige Verschwendung von Ressourcen, wenn nur drei tf's verwendet werden - täglich, wöchentlich und monatlich. Wir brauchen einen anderen Algorithmus. Aber noch einmal: unabhängig von den Ticks des aktuellen Symbols.

Was das vorgeschlagene Ereignismodell betrifft, so habe ich es bereits praktiziert, allerdings nur in Fällen, in denen Charts geöffnet waren. Aber auf diese Weise müsste ich für jedes benötigte Symbol (das nicht im Voraus bekannt ist) einen Agenten hinzufügen, der Ereignisse sendet - würde das nicht nochmehr Ressourcen erfordern?

 
Artyom Trishkin:

Die Gesamtzahl der beteiligten Symbole war etwa 13 von 34 - dort wird zuerst das Vorhandensein eines Signals auf den Symbolen bestimmt, die mit einem Signal ausgewählt werden, und diese sind diejenigen, die an der Suche im Timer teilnehmen - die Preisüberschreitung der erforderlichen Ebenen wird gesucht.

Ich habe mich gefragt, warum ich für jedes der im Market Watch vorhandenen Symbole einen neuen Balken suchen muss - das ist eine inakzeptable Verschwendung von Ressourcen, wenn nur drei tf's verwendet werden - täglich, wöchentlich und monatlich. Wir brauchen einen anderen Algorithmus. Aber wieder - unabhängig von den Ticks des aktuellen Symbols.

Was das vorgeschlagene Ereignismodell anbelangt, so habe ich es bereits ausprobiert, allerdings nur in Fällen, in denen die Charts geöffnet waren. Aber auf diese Weise muss ich für jedes benötigte Symbol (das nicht im Voraus bekannt ist) einen Agenten hinzufügen, der Ereignisse sendet - würde das nicht nochmehr Ressourcen erfordern?

Ich kann nicht mit Sicherheit sagen, wie das Ergebnis am Ende aussehen wird. Ich muss es erst einmal testen. Ich bin selbst beschäftigt, also wenn Sie es tun, demonstrieren Sie es bitte später, wenn Sie eine freie Minute haben. Das ist sehr interessant.

Jetzt arbeite ich an einem mehrzeiligen Eingabefeld(CTextBox) ohne Einschränkungen. Es wird fast analog zu der Windows-Anwendung "Notepad" sein. )

 
Anatoli Kazharski:

Ich kann nicht mit Sicherheit sagen, wie das Ergebnis am Ende aussehen wird. Ich muss es erst noch testen. Ich bin selbst beschäftigt, also wenn Sie es tun, demonstrieren Sie es bitte später, wenn Sie eine freie Minute haben. Das ist sehr interessant.

Ich arbeite gerade an einem mehrzeiligen Eingabefeld(CTextBox) ohne Einschränkungen. Es wird fast analog zu der Windows-Anwendung "Notepad" sein. )

Okay, mal sehen, was dabei herauskommt.

Interessantes Eingabefeld - mal sehen ;)

 
Artyom Trishkin:

Ich habe mich gefragt, warum ich für jedes der Symbole im Market Watch im Timer einen neuen Balken suchen muss - das ist eine unentschuldbare Verschwendung von Ressourcen, wenn nur drei tf's verwendet werden - täglich, wöchentlich und monatlich. Wir brauchen einen anderen Algorithmus. Aber noch einmal - unabhängig von den Ticks des aktuellen Symbols.

Der theoretische Zeitpunkt für das Erscheinen des nächsten Balkens ist bekannt. Und er ist für alle Instrumente gleich.

Erst wenn dieser geschätzte Zeitpunkt eintritt, können Sie überprüfen, ob ein Balken tatsächlich in der Arbeitsliste der Instrumente erschienen ist.

 
Andrey Khatimlianskii:

Der theoretische Zeitpunkt des Erscheinens des nächsten Taktes ist bekannt. Und er ist für alle Instrumente gleich.

Erst wenn dieser geschätzte Zeitpunkt eintritt, können Sie überprüfen, ob ein Balken tatsächlich in der Arbeitsliste der Instrumente erschienen ist.

Ja, Andrei, er ist bekannt. Aber es ist für verschiedene Märkte unterschiedlich. Auf dem Devisenmarkt ist es eine Sache, auf dem Aktienmarkt ist es etwas ganz anderes. Ich möchte keine manuelle Kontrolle über diese Zeit einführen. Ich möchte, dass die Software in der Lage ist, neue Balken auf allen Märkten selbständig zu bestimmen, ohne die Zeit festzulegen, ab der sie auf deren Auftreten warten soll.

Und ja, nicht auf jedem Symbol desselben Marktes kommt ein neuer Balken zur gleichen Zeit wie die anderen - wenn der erste Tick kommt. Das bedeutet, dass man einige Zeit auf das Erscheinen neuer Balken auf allen Symbolen warten muss.

 
Artyom Trishkin:

Ja, Andrei, das ist bekannt. Aber es ist für verschiedene Märkte unterschiedlich. Im Devisenhandel ist es eine Sache, bei Aktien ist es etwas ganz anderes. Ich möchte keine manuelle Kontrolle dieser Zeit einführen. Ich möchte, dass das System neue Balken auf allen Märkten selbständig ermitteln kann, ohne dass die Zeit festgelegt wird, ab der es auf sie warten soll.

Und, ja, nicht auf jedem Symbol desselben Marktes kommt ein neuer Balken zur gleichen Zeit wie die anderen - wenn der erste Tick kommt. Das bedeutet, dass Sie auf das Erscheinen neuer Balken auf allen Symbolen eine gewisse Zeit warten sollten.

Nun, ja, irgendwo und um 11 Uhr kann ein Balken erscheinen, ab 00:00 Uhr zu überprüfen ist keine Option.

Dann ist es am einfachsten, die Überprüfung eines neuen Balkens in einen separaten zweiten Timer zu packen (öfter macht es keinen Sinn, soweit ich betroffen bin).

 
Andrey Khatimlianskii:

Ja, es kann sein, dass irgendwo um 11 Uhr ein Balken auftaucht, eine Überprüfung ab 00:00 Uhr ist nicht möglich.

Dann ist es am einfachsten, die Prüfung eines neuen Balkens in einen separaten zweiten Timer zu packen (öfter macht es keinen Sinn, soweit ich betroffen bin).

In der Symbolspezifikation gibt es seine Sitzungen - Kurs und Handel. Wahrscheinlich sollten wir versuchen, von ihnen zu starten....