Minha abordagem. O núcleo é o motor. - página 125

 
Реter Konow:

Portanto, eles são redesenhados exatamente como você disse.

E a carga sobre o processador vem da animação:

Há uma reinicialização constante dos valores na matriz de píxeis. A cada 16 milissegundos. Isto carrega o processador em até 40%.

Eu estava tentando descobrir o que é exatamente a carga. Pensei que estava economizando um recurso ou lendo-o. Acontece que foi a reinicialização da matriz no circuito de desenho.


Também se verificou que uma chamada constante de ObjectSetInteger(0, "objeto MT",OBJPROP_SELECTED,1); (a cada 16 ms) também carrega o processador. Em cerca de 10%.

Uso esta chamada para dizer a outro EA para ler o recurso com dados de animação.

No total, ele recebe +~50% de carga de CPU durante a animação.

Desculpe, não percebi que não se trata mais da lista de negócios em aberto. Acho que as 2-3 páginas do fio se foram.
 
Vladimir:
Desculpe, não percebi que não se trata mais da lista de negócios em aberto. Acho que 2-3 páginas do fio.

Não, está tudo bem. Acabei de mencionar a carga da CPU porque vou refazer a comunicação entre a EA e o motor, o que significa que a tabela de comércio aberto também levará os dados de forma diferente.

 
Por que você precisa de 64 quadros por segundo (16ms), 32 quadros por segundo é suficiente para o olho.
 
Nikolai Semko:
Por que fazer o periris 64 quadros por segundo (16 ms), pois o olho é suficiente 32 quadros por segundo.

Boa pergunta. Na verdade, o temporizador não funciona sem problemas. Há saltos. 16,32,16,16...

Se você usar 32, os saltos são de 64 ms. E isto é perceptível. Além disso, várias outras coisas também sobrecarregam e retardam o desenho. Por exemplo, a fila de eventos OnChartEvent().

Acho que isso afeta a qualidade da animação. Eu tentei usar 25 ms. Depois 16, e chegou à conclusão de que 16 transmite melhor um movimento suave.

Posteriormente motor skolnuyu com animação 16 ms e 32 ms e você verá por si mesmo. Embora, talvez seja ok....

 
Реter Konow:

Boa pergunta. Na verdade, o temporizador não funciona sem problemas. Há saltos. 16,32,16,16...

Se você usar 32, os saltos são de 64 ms. E isto é perceptível. Além disso, várias outras coisas também sobrecarregam e retardam o desenho. Por exemplo, a fila de eventos OnChartEvent().

Acho que isso afeta a qualidade da animação. Eu tentei usar 25 ms. Depois 16, e chegou à conclusão de que 16 transmite melhor um movimento suave.

Posteriormente motor skolnuyu com animação 16 ms e 32 ms e você verá por si mesmo. Embora, talvez seja ok....

É que não são realmente 16ms, mas 1000/64=15,625ms. É por isso que é melhor definir 30 ms em vez de 32 ms, então haverá menos saltos. ou seja, se você colocar uma pausa entre quadros de 33 ms, então a pausa real será 15,625×3=46,875 ms.
E você tem que lembrar que a MT tem seu próprio manipulador interno de atualização de gráficos, portanto o ChartRedraw funcionará de forma assíncrona e não há garantia de que a MT irá lidar com todos eles.

 
Nikolai Semko:
Não são realmente 16ms, mas 1000/64=15,625ms. É por isso que é melhor definir 30 ms em vez de 32 ms, então haverá menos saltos. ou seja, se você colocar uma pausa entre quadros de 33 ms, então a pausa real será 15,625×3=46,875 ms.
E você tem que lembrar que a MT tem seu próprio manipulador interno de atualização de gráficos, portanto o ChartRedraw funcionará de forma assíncrona e não há garantia de que a MT irá lidar com todos eles.

Por quê? Simples, interessante.

 
Алексей Тарабанов:

Por quê? Simples, eu me pergunto.

Acabo de chegar a estas conclusões após muita experimentação e tentativa e erro científico. Se alguém tiver alguma experiência que possa desmentir minhas afirmações, eu ficaria muito grato.
 
Nikolai Semko:
É que não são realmente 16ms, mas 1000/64=15,625ms. É por isso que é melhor definir 30 ms em vez de 32 ms, então haverá menos saltos. ou seja, se você colocar uma pausa entre quadros de 33 ms, então a pausa real será 15,625×3=46,875 ms.
E não devemos esquecer que a MT tem seu próprio manipulador interno de atualização de gráficos, portanto o ChartRedraw funcionará de forma assíncrona e não há garantia de que a MT irá lidar com todos eles.

OK, vou levar isso em consideração.

A redução da freqüência do temporizador certamente reduzirá a carga no processador. Se isso não degradar a qualidade da animação, ótimo. A carga da CPU pode ser reduzida em até 30%, mas ainda assim será.

Você terá que aturar isso.

É certo que, se o desenho distribuído entre os diferentes fios (por exemplo, parte da animação desenha o Expert Advisor, e parte do motor), então a carga seria quase removida. Temos que pensar...

 

Infelizmente, minha suposição não foi confirmada.

Agora eu fiz uma experiência - coloquei um EA em dois gráficos. O Expert Advisor carrega o processador em 50%.

Descobri que mesmo quando se trabalha com gráficos diferentes, a carga de CPU é somada e a carga total de CPU do lado da MT é superior a 90%.

Portanto, mesmo a divisão da tabela entre diferentes Expert Advisors não ajudará. A carga está se somando!

 
Реter Konow:

Infelizmente, minha suposição não foi confirmada.

Agora eu fiz uma experiência - coloquei um EA em dois gráficos. O Expert Advisor carrega o processador em 50%.

Descobri que mesmo quando se trabalha com gráficos diferentes, a carga de CPU é somada e a carga total de CPU do lado da MT é superior a 90%.

Portanto, mesmo a divisão da tabela entre diferentes Expert Advisors não ajudará. A carga está se somando!

Se for MT4, então sim.
Como eu entendo, o MT5 suporta multi-core e multi-tarefas em contraste com o MT4.
Razão: