DirectX - Seite 7

 
Aleksey Vyazmikin:

Niedlich. Wie sieht es mit der CPU-Belastung aus, wenn Sie eine Börse öffnen, Sie wissen schon, auf Si, wenn Sie den Markt setzen?

Gibt es eine grafische Anzeige der offenen Positionen auf dem Markt? Das ist es, was ich in der Standardversion vermisse.

Im vorigen Bild ist die offene Position mit einem magentafarbenen Rahmen um den Preis mit der Position in Rot dargestellt, im nächsten Bild ist sie im Plus.


 

alle auf einer Leinwand

 
Rafil Nurmukhametov:

Der Prozessor lädt gut, im vorherigen Bild können Sie die offene Position sehen, der Rahmen um den Preis ist magentafarben, dort ist die Position im Minus, im Bild unten ist die Position im Plus


Wie wäre es mit einer einfachen Begrenzung der Aktualisierungsrate - nicht mehr als 10 Aktualisierungen pro Sekunde? Die Verzögerungen führen zu einem Frizz im Handelsbereich, oder?

Ich kann die Positionsanzeige sehen - es sieht bequem aus!

 
Aleksey Vyazmikin:

Wie wäre es, wenn Sie die Aktualisierungsrate einfach auf maximal 10 Mal pro Sekunde begrenzen? Beim Abbremsen friert die Schalttafel ein - oder?

...

Ich weiß nicht, wie Rafils Implementierung genau aussieht, aber wenn die Zellen getrennt von der gesamten Leinwand neu gezeichnet werden, würde dies das Problem der Belastung lösen.

Um dies zu tun:

1. Jede Zelle sollte ein unabhängiges rechteckiges Etikett mit Text oben sein, mit eigenen Koordinaten und Abmessungen im Array.

2. Bei einem Wertänderungsereignis wird zuerst das Rechteck (Hintergrund) und dann der Text neu gezeichnet. Die neu zu zeichnende Fläche ist um ein Vielfaches kleiner als die Fläche der gesamten Leinwand, so dass die Belastung um mehrere Dutzend Prozent sinkt.

 
Реter Konow:

Ich weiß nicht genau, wie die Implementierung von Rafil funktioniert, aber wenn die Zellen getrennt von der gesamten Leinwand neu gezeichnet werden, wird das Problem der Belastung gelöst.

Um dies zu tun:

1. Jede Zelle sollte ein separates rechteckiges Etikett mit Text oben sein, mit eigenen Koordinaten und Abmessungen im Array.

2. Bei einem Wertänderungsereignis wird zuerst das Rechteck (Hintergrund) und dann der Text neu gezeichnet. Die Fläche, die neu gezeichnet wird, ist um ein Vielfaches kleiner als die Fläche der gesamten Leinwand, so dass die Belastung um mehrere Dutzend Prozent reduziert wird.

Das Wesen des Glases ist, dass, wenn der Preis bewegt, hat es als Ganzes neu gezeichnet werden, aber der linke Teil der Visualisierung - ja, es kann Optionen, aber ich denke, es ist ein Cluster-Objekt (Kerzen?) separat gezeichnet und es ist nur neu gezeichnet, wenn neue Informationen kommt.

 
Aleksey Vyazmikin:

DasWesen des Glases besteht darin, dass es in seiner Gesamtheit neu gezeichnet werden muss, wenn sich die Preise bewegen, aber der linke Teil der Visualisierung - ja, es kann Optionen geben, aber ich denke, es wird ein separates Cluster-Objekt (Kerze?) gezeichnet und es wird nur neu gezeichnet, wenn neue Informationen eintreffen.

Nicht unbedingt. Die Preise auf dem Markt ändern sich nicht auf einmal, und einige Zellen bleiben zeitweise untätig. Es macht keinen Sinn, die gesamte Leinwand neu zu zeichnen.

Das Gleiche gilt für den linken Teil. Obwohl es dort ohnehin keine schwere Last gibt. Wenn nur auf dem Chart scrollen und auf dem aktuellen Bar. Aber es ist nicht viel.

 
Реter Konow:

Nicht unbedingt. Die Preise ändern sich nicht alle auf einmal, und einige Zellen sind gelegentlich inaktiv. Es macht keinen Sinn, die gesamte Leinwand neu zu zeichnen.

Das ist nicht notwendig, aber der Preis bewegt sich und damit ändert sich auch der Wert in den Zellen - wie sonst? Eine andere Sache ist, wenn Sie die Koordinaten des Rechtecks mit dem Preis ändern, aber ich denke, es ist die gleiche Zeichnung innerhalb des Kanvas.

 
Aleksey Vyazmikin:

Nicht unbedingt, aber der Preis bewegt sich, was bedeutet, dass sich der Wert in den Zellen ändert - wie sonst? Eine andere Sache ist, wenn Sie die Koordinaten des Rechtecks mit dem Preis ändern, aber ich denke, dies ist auch eine Zeichnung innerhalb der Leinwand.

Der Preis bewegt sich, das Glas ist zentralisiert und muss neu gezeichnet werden. Das wird von niemandem bestritten. Es geht um den Bereich der Neuzeichnung.

Viele Zellen sind inaktiv und ändern ihren Wert nicht bei jedem Becherereignis. Zum Beispiel ändern sich Grenzwerte manchmal nur in einigen wenigen Zellen, während Preis und Volumen in anderen Zellen unverändert bleiben. In diesem Fall ist es eine Verschwendung von Ressourcen, die gesamte Leinwand neu zu zeichnen. Es ist notwendig, die Änderungen in den Zellen zu kontrollieren und sie einzeln zu zeichnen, wenn ein neuer Wert eintrifft.

Dieser einfache Ansatz wird die Belastung um ein Vielfaches verringern.

Außerdem können Sie die Häufigkeit der Ausgabe von Werten in Zellen verringern.

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Виды заявок в стакане цен
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Виды заявок в стакане цен
  • www.mql5.com
Для биржевых инструментов доступно окно "Стакан цен", в котором можно посмотреть текущие заявки на покупку и продажу. Для каждой заявки указано желаемое направление торговой операции, требуемый объем и запрашиваемая цена. Для получения информации...
 
Реter Konow:

Der Preis bewegt sich, das Glas wird zentralisiert und muss neu gezeichnet werden. Das wird von niemandem bestritten. Es geht um den Bereich der Neuzeichnung.

Viele Zellen sind inaktiv und ändern ihren Wert nicht bei jedem Becherereignis. Zum Beispiel ändern sich Grenzwerte manchmal nur in einigen wenigen Zellen, während Preis und Volumen in anderen Zellen unverändert bleiben. In diesem Fall ist es eine Verschwendung von Ressourcen, die gesamte Leinwand neu zu zeichnen. Es ist notwendig, die Änderungen in den Zellen zu kontrollieren und sie einzeln zu zeichnen, wenn ein neuer Wert eintrifft.

Dieser einfache Ansatz wird die Belastung um ein Vielfaches verringern.

Außerdem können Sie die Häufigkeit der Ausgabe von Werten in Zellen verringern.

Ja, ich verstehe Ihre Idee, aber Preis- und Volumenänderungsinformationen können oft (Annahme) bei der Markteröffnung synchronisiert werden.

Ich erinnere mich, dass Sie Ihre eigene Tasse machen wollten - gibt es ein Ergebnis?

 
Aleksey Vyazmikin:

Ja, ich verstehe Ihre Idee, aber Informationen über Preis- und Volumenänderungen können oft bei der Markteröffnung synchronisiert werden.

Ich erinnere mich, dass Sie Ihren eigenen Marktbecher herstellen wollten - gibt es Ergebnisse?

Gestern habe ich ein Beispiel für das Marktglas mit neu zu zeichnenden Zellen unabhängig von der Leinwand des gesamten Fensters gemacht- https://www.mql5.com/ru/forum/333652/page4.

Ich habe festgestellt, dass ein separates Neuzeichnen der Zellen die Belastung innerhalb von 20 % hält (das Video zeigt wegen der Videoaufzeichnung mehr), und zwar IMMER, wenn ALLE Zellen mit 40 fps neu gezeichnet werden. Bei normaler Tumblerdynamik werden bei diesem Ansatz etwa 5-10% geladen.

Die Belastung ist nur dann hoch, wenn ein großer Bereich (~500*500 px) mit hoher Geschwindigkeit ohne Pausen (~40+ fps) neu gezeichnet wird. Jede Verzögerung oder Verkleinerung des Zeichnungsbereichs reduziert die Belastung um den Faktor zwei.

DirectX
DirectX
  • 2020.03.13
  • www.mql5.com
Привет, кто-нибудь уже разобрался с directx, там есть DirectCompute...