DirectX - page 7

 
Aleksey Vyazmikin:

Mignon. Qu'en est-il de la charge CPU lors de l'ouverture d'un échange, vous savez, sur Si si vous mettez le marché ?

Existe-t-il un affichage graphique des positions ouvertes sur le marché ? C'est ce qui me manque dans la version standard.

Dans la précédente, la position ouverte est représentée par un cadre magenta autour du prix avec une position en rouge, dans la suivante, c'est une position en surplus.


 

le tout sur une seule toile

 
Rafil Nurmukhametov:

Le processeur se charge bien, dans l'image précédente vous pouvez voir la position ouverte, le cadre autour du prix est de couleur magenta, la position est en moins, dans l'image ci-dessous la position est en plus.


Pourquoi ne pas simplement limiter le taux de rafraîchissement - pas plus de 10 mises à jour par seconde ? Les décalages conduiront à un panneau d'échange frisé, non ?

Je peux voir l'indication de l'état de la position - cela semble pratique !

 
Aleksey Vyazmikin:

Pourquoi ne pas simplement limiter le taux de rafraîchissement à un maximum de 10 fois par seconde ? Le freinage entraîne le gel du panneau de commande, non ?

...

Je ne sais pas comment se présente exactement l'implémentation de Rafil, mais si les cellules sont redessinées séparément de l'ensemble du kanvas, cela résoudrait le problème du chargement.

Pour ce faire :

1. Chaque cellule doit être une étiquette rectangulaire indépendante avec du texte en haut, avec ses propres coordonnées et dimensions dans le tableau.

2. Lors d'un événement de changement de valeur, son rectangle (arrière-plan) est redessiné en premier, puis le texte. La zone de redécoupage est des dizaines de fois plus petite que la zone de l'ensemble du canevas, et la charge diminue donc de plusieurs dizaines de pour cent.

 
Реter Konow:

Je ne sais pas exactement comment fonctionne l'implémentation de Rafil, mais si les cellules sont redessinées séparément de l'ensemble du canevas, cela résoudra le problème de charge.

Pour ce faire :

1. Chaque cellule doit être une étiquette rectangulaire distincte avec du texte en haut, avec ses propres coordonnées et dimensions dans le tableau.

2. Lors d'un événement de changement de valeur, son rectangle (arrière-plan) est redessiné en premier, puis le texte. La surface de redécoupage est des dizaines de fois inférieure à la surface de la toile entière, et la charge sera donc réduite de dizaines de pour cent.

L'essence du verre est que lorsque le prix bouge, il doit être redessiné dans son ensemble, mais la partie gauche de la visualisation - oui, il peut y avoir des options, mais je pense qu'il y a un objet cluster (bougies ?) dessiné séparément et il n'est redessiné que lorsque de nouvelles informations arrivent.

 
Aleksey Vyazmikin:

L'essence du verre est que lorsque le prix bouge, il doit être redessiné dans son ensemble, mais la partie gauche de la visualisation - oui, il peut y avoir des options, mais je pense qu'il y a un objet cluster séparé (bougie ?) dessiné et il n'est redessiné que lorsque de nouvelles informations arrivent.

Pas nécessairement. Les prix sur le marché ne changent pas d'un coup et certaines cellules restent périodiquement inactives. Il est inutile de redessiner l'ensemble de la toile.

Il en va de même pour la partie gauche. Bien que, de toute façon, il n'y ait pas de charge lourde à cet endroit. Si seulement sur le défilement du graphique et sur la barre actuelle. Mais ce n'est pas grand-chose.

 
Реter Konow:

Pas nécessairement. Les prix ne changent pas tous en même temps et certaines cellules sont occasionnellement inactives. Il est inutile de redessiner l'ensemble de la toile.

Ce n'est pas nécessaire, mais le prix bouge et par conséquent la valeur dans les cellules change - comment faire autrement ? Une autre chose est si vous changez les coordonnées du rectangle avec le prix, mais je pense que c'est le même dessin dans le kanvas.

 
Aleksey Vyazmikin:

Pas nécessairement, mais le prix bouge, ce qui signifie que la valeur dans les cellules change - comment faire autrement ? Une autre chose est si vous changez les coordonnées du rectangle avec le prix, mais je pense que c'est aussi un dessin dans la toile.

Le prix bouge, le verre est centralisé et un nouveau dessin est nécessaire. Personne ne le conteste. Il s'agit de la zone de redécoupage.

De nombreuses cellules sont inactives et ne changent pas de valeur à chaque événement de coupe. Par exemple, il arrive que les volumes limites ne changent que dans quelques cellules, alors que le prix et les volumes des autres cellules restent inchangés. Dans ce cas, redessiner l'ensemble du canevas est un gaspillage de ressources. Il est nécessaire de contrôler les changements dans les cellules et de les dessiner individuellement en cas d'arrivée d'une nouvelle valeur.

Cette simple approche réduira la charge de nombreuses fois.

Vous pouvez également réduire la fréquence de sortie des valeurs dans les cellules.

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

Le prix bouge, le verre est centralisé et un redécoupage est nécessaire. Personne ne le conteste. Il s'agit de la zone de redécoupage.

De nombreuses cellules sont inactives et ne changent pas de valeur à chaque événement de coupe. Par exemple, il arrive que les valeurs limites ne changent que dans quelques cellules, alors que le prix et les volumes dans les autres cellules restent inchangés. Dans ce cas, redessiner l'ensemble du canevas est un gaspillage de ressources. Il est nécessaire de contrôler les changements dans les cellules et de les dessiner individuellement en cas d'arrivée d'une nouvelle valeur.

Cette simple approche réduira la charge de nombreuses fois.

Vous pouvez également réduire la fréquence de sortie des valeurs dans les cellules.

Oui, je comprends votre idée, mais les informations sur les changements de prix et de volume peuvent souvent (par hypothèse) être synchronisées à l'ouverture du marché.

Je me souviens que vous vouliez faire votre propre coupe - un résultat ?

 
Aleksey Vyazmikin:

Oui, je comprends votre idée, mais les informations sur les changements de prix et de volume peuvent souvent être synchronisées à l'ouverture du marché.

Je me souviens que vous vouliez faire votre propre coupe de marché - des résultats ?

Hier, j'ai fait un exemple de la vitre du marché avec des cellules redessinées indépendamment du canevas de la fenêtre entière- https://www.mql5.com/ru/forum/333652/page4.

J'ai constaté qu'un redécoupage séparé des cellules permet de maintenir la charge à moins de 20% (la vidéo en montre plus à cause de l'enregistrement vidéo), TOUJOURS si TOUTES les cellules sont redécoupées à 40 fps. Avec cette approche, la dynamique normale d'un tambour se charge de 5 à 10 % environ.

La charge n'est élevée que si l'on redessine une grande surface (~500*500 px) à une vitesse élevée sans pauses (~40+ fps). Tout retard ou réduction de la zone de redécoupage réduit la charge d'un facteur deux.

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