DirectX - página 7

 
Aleksey Vyazmikin:

Bonito. E a carga de CPU ao abrir uma troca, você sabe, na Si se você colocar o mercado?

Existe uma exibição gráfica da posição aberta no mercado? Isto é o que eu sinto falta no padrão.

No anterior a posição aberta é mostrada com moldura magenta ao redor do preço com posição em vermelho, no seguinte está no lado positivo.


 

tudo em uma só lona

 
Rafil Nurmukhametov:

O processador carrega bem, na figura anterior você pode ver a posição aberta, a moldura ao redor do preço é de cor magenta, a posição é em menos, na figura abaixo a posição é em mais


Que tal simplesmente limitar a taxa de atualização - não mais do que 10 atualizações por segundo? Os atrasos levarão a um painel comercial frisado, não?

Eu posso ver a indicação do estado da posição - parece confortável!

 
Aleksey Vyazmikin:

Que tal simplesmente limitar a taxa de atualização a não mais do que 10 vezes por segundo? A frenagem provocará o congelamento do painel comercial - não?

...

Não sei exatamente como é a implementação do Rafil, mas se as células forem redesenhadas separadamente de todo o kanvas, isso resolveria o problema de carga.

Para fazer isso:

1. Cada célula deve ser uma etiqueta retangular independente com texto no topo, com suas próprias coordenadas e dimensões na matriz.

2. Em um evento de mudança de valor, seu retângulo (fundo) é redesenhado primeiro, e depois o texto. A área de redesenho é dezenas de vezes menor que a área de toda a tela e, portanto, a carga cairá em dezenas de por cento.

 
Реter Konow:

Não sei exatamente como funciona a implementação do Rafil, mas se as células forem redesenhadas separadamente de toda a tela, isto resolverá o problema de carga.

Para fazer isso:

1. Cada célula deve ser uma etiqueta retangular separada com texto no topo, com suas próprias coordenadas e dimensões na matriz.

2. Em um evento de mudança de valor, seu retângulo (fundo) é redesenhado primeiro, e depois o texto. A área de redesenhamento é dezenas de vezes menor do que a área de toda a tela e, portanto, a carga será reduzida em dezenas de por cento.

A essência do vidro é que quando o preço se move, ele tem que ser redesenhado como um todo, mas a parte esquerda da visualização - sim, pode haver opções, mas eu acho que há um objeto de agrupamento (velas?) desenhado separadamente e ele é redesenhado somente quando novas informações chegam.

 
Aleksey Vyazmikin:

A essência do vidro é que quando o preço se move tem que ser redesenhado como um todo, mas a parte esquerda da visualização - sim, pode haver opções, mas eu acho que há um objeto de agrupamento separado (vela?) desenhado e ele é redesenhado somente quando novas informações chegam.

Não necessariamente. Os preços no mercado não estão mudando de uma só vez e algumas células periodicamente ficam ociosas. Não há sentido em redesenhar a tela inteira.

O mesmo se aplica à parte esquerda. Embora, de qualquer forma, não haja ali nenhuma carga pesada. Se apenas na rolagem do gráfico e na barra atual. Mas não é muito.

 
Реter Konow:

Não necessariamente. Os preços não mudam todos de uma só vez e algumas células ocasionalmente estão ociosas. Não há sentido em redesenhar a tela inteira.

Não é necessário, mas o preço se move e consequentemente o valor nas células muda - de que outra forma? Outra coisa é se você mudar as coordenadas do retângulo com o preço, mas eu acho que é o mesmo desenho dentro do kanvas.

 
Aleksey Vyazmikin:

Não necessariamente, mas o preço se move, o que significa que o valor nas células muda - de que outra forma? Outra coisa é se você mudar as coordenadas do retângulo com o preço, mas eu acho que isto também é um desenho dentro da tela.

O preço se move, o vidro é centralizado e é necessário um novo desenho. Ninguém está contestando isso. É sobre a área do redesenho.

Muitas células são ociosas e não mudam de valor em cada evento da xícara. Por exemplo - às vezes os valores-limite mudam apenas em algumas células, enquanto o preço e os volumes em outras células permanecem inalterados. Neste caso, é um desperdício de recursos redesenhar a tela inteira. É necessário controlar as mudanças nas células e desenhá-las individualmente no caso de chegada de um novo valor.

Esta abordagem simples irá reduzir a carga muitas vezes.

Além disso, você pode reduzir a freqüência de saída de valores para as células.

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

O preço se move, o vidro é centralizado e um redesenho é necessário. Ninguém está argumentando isso. É sobre a área do redesenho.

Muitas células são ociosas e não mudam de valor em cada evento da xícara. Por exemplo - às vezes os valores-limite mudam apenas em algumas células, enquanto o preço e os volumes em outras células permanecem inalterados. Neste caso, é um desperdício de recursos redesenhar a tela inteira. É necessário controlar as mudanças nas células e desenhá-las individualmente no caso de chegada de um novo valor.

Esta abordagem simples irá reduzir a carga muitas vezes.

Além disso, você pode reduzir a freqüência de saída de valores para as células.

Sim, eu entendo sua idéia, mas as informações sobre mudanças de preço e volume podem muitas vezes (suposição) vir em sincronia na abertura do mercado.

Lembro-me que você queria fazer seu próprio copo - algum resultado?

 
Aleksey Vyazmikin:

Sim, eu entendo sua idéia, mas as informações sobre mudanças de preço e volume podem muitas vezes vir em sincronia na abertura do mercado.

Lembro-me que você queria fazer seu próprio copo de mercado - algum resultado?

Ontem eu fiz um exemplo do vidro de mercado com células redesenhadas independentemente da tela de toda a janela- https://www.mql5.com/ru/forum/333652/page4.

Descobri que um redesenho separado das células mantém a carga dentro de 20% (o vídeo mostra mais por causa da gravação do vídeo), SEMPRE se TODAS as células forem redesenhadas a 40 fps. A dinâmica normal do secador com esta abordagem irá carregar 5-10% aproximadamente.

A carga é alta somente se for redesenhada uma grande área (~500*500 px) a alta taxa sem pausas (~40+ fps). Qualquer atraso ou redução da área de redesenhamento reduz a carga em um fator de dois.

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