Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Olá a todos, eu gostaria de aprofundar meu conhecimento sobre Tela
Eu nem sei por onde começar. Neste momento estou imaginando que a tela é uma fórmula logarítmica complicada e coisas assim.
Você pode me dar um exemplo de como fazer um botão como o que está abaixo na tela? Preciso de algum código para entendê-lo.
Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos
Fazendo um projeto de crowdsourced em Tela
Nikolai Semko, 2017.05.24 02:20
Eis o que saiu.
O botão pode ser exibido atrás do fundo e em primeiro plano, definido para bloquear ou não o clique.
No arquivo de exemplo CanvasButton.mq5 é possível arrastar o botão com o mouse. Para fazer isso, basta segurar Ctrl para mover o botão azul, e Shift para mover o botão vermelho.
Como a classe GButton é descendente da classe CCanvas, o exemplo demonstra a capacidade de usar as funções da classe CCanvas no exemplo CircleWu (Isto é implementado no OnInit). Assim, é possível escrever texto no botão usando as funções da classe CCanvas.
Esta classe, é claro, não finge estar limpa. Os gráficos não brilham com perfeição e o 3D é muito convencional; as sombras não são implementadas, a velocidade de execução não é otimizada. E o mais provável é que haja muitas arestas ásperas e falta de vários controles. Portanto, não julgue severamente.
Se você passar um pouco mais de tempo, é claro que isso pode ser feito:
Eu só estava tentando... poderia-se dizer - definir a direção.
O arquivo Canvas.mqh difere do original somente no fato de que a matriz m_pixels é definida como pública.
Nikolay, é claro, é um respeito ao seu grande entusiasmo em experimentar com Tela. E eu estudei os exemplos de código com não menos prazer.
Infelizmente, a Tela em sua implementação atual é puramente algorítmica ligada à CPU para preencher a matriz de bitmap com primitivos gráficos. Isto é, através de loops com enumeração de elementos de matriz e é só isso... Enquanto isso, foi há 21 anos.
As experiências são certamente boas, mas a implementação para fins práticos deve ser não apenas bela, mas também eficaz. Pois certamente posso ignorá-lo sentado em algum PC top de linha de 8 núcleos, mas como regra geral a principal massa de usuários tem PCs de classe média. E qualquer GUI em tela cheia com visualização de dados do mercado, mesmo que seja muito conveniente e bonita, não será popular, se ela carregar a CPU até 75%. Isto é um fato. É por isso, e não porque eles simplesmente não tinham mais nada a fazer - as implementações de lona em todos os principais navegadores trouxeram aceleração de hardware.
Chegando ao núcleo - na MQL5 deveria haver algum invólucro para Direct2D (e DirectWrite) - seria uma verdadeira bomba, abrindo o caminho para a implementação eficiente e acelerada por hardware de muitas tarefas práticas no campo da GUI e visualização de dados. É claro, pode-se dizer que já existe o DirectX. Mas apenas sua parte Direct3D é representada, ou seja, projeções 3D, shaders e outros atributos do 3D e ainda é um nicho bastante estreito para uso prático. Sim, claro que você pode, através de algumas projeções de ajuste e outras manipulações e tesselações para conseguir renderizar gráficos 2D e através do Direct3D - mas não significa nem mais nem menos criar sua própria implementação do Direct2D sobre o Direct3D. Isto não faria nenhum sentido desde que o Direct2D foi implementado há muito tempo.Então, aqui vai um pensamento...
Nikolay, é claro, respeita seu grande entusiasmo em experimentar com Tela. E eu estudei os exemplos de código com não menos prazer.
Infelizmente, a Tela em sua implementação atual não é nada mais do que algoritmos vinculados a CPU para preencher a matriz de bitmap com primitivos gráficos. Isto é, através de loops com busca de elementos de matriz e é só isso... Enquanto isso, foi há 21 anos.
As experiências são certamente boas, mas a implementação para fins práticos deve ser não apenas bela, mas também eficaz. Pois certamente posso ignorá-lo sentado em algum PC top de linha de 8 núcleos, mas como regra geral a principal massa de usuários tem PCs de classe média. E qualquer GUI em tela cheia com visualização de dados do mercado, mesmo que seja muito conveniente e bonita, não será popular, se ela carregar a CPU até 75%. Isto é um fato. É por isso - e não porque eles simplesmente não tinham mais nada a fazer - que a aceleração de hardware foi introduzida nas implementações de Tela em todos os principais navegadores.
Na verdade, chegar ao ponto - na MQL5 seria algum invólucro para Direct2D (e DirectWrite) - seria uma verdadeira bomba, abrindo o caminho para a implementação eficiente e acelerada por hardware de muitas tarefas práticas no campo da GUI e visualização de dados. É claro, pode-se dizer que já existe o DirectX. Mas apenas sua parte Direct3D é representada, ou seja, projeções 3D, shaders e outros atributos do 3D e ainda é um nicho bastante estreito para uso prático. Sim, é claro que você pode através de algumas projeções de ajuste e outras manipulações e tesselações conseguir renderizar gráficos 2D e através do Direct3D - mas isso significa nem mais nem menos criar sua própria implementação do Direct2D sobre o Direct3D. Isto não faria nenhum sentido desde que o Direct2D foi implementado há muito tempo.Aqui vai uma reflexão...
Obrigado pelas amáveis palavras.
Na verdade, MQ são bons neste aspecto e cuidaram dos gráficos e ferramentas de computação usando GPUs e não apenas CPUs.
Refiro-me ao OpenCL e DirectX.
Aqui estão os exemplos comparando a implementação da mesma tarefa gráfica (8 centros de gravidade) em três variantes - CPU, OpenCL(GPU) e DirectX(GPU):
1.CPU -14 fps. (roteiro Swirl2.mq5)
2. OpenCL - 162 quadros por segundo (requer drivers OpenCL instalados em seu computador) (Swirl2_OCL.mq5 script)
3. DirectX - 37 quadros por segundo (script Swirl2_GPU.mq5)
portanto, não é tão melancólico.
Se você precisa de desempenho máximo, você pode usar também a placa gráfica.
Devo observar que estes testes foram feitos em um laptop bastante fraco com uma placa gráficaIntel® HD Graphics 620 fraca.
Embora o uso de uma placa gráfica dê um aumento de desempenho muito decente, concordo com Renat que mesmo usando uma CPU para saída gráfica cobre mais de 99% de todas as tarefas gráficas na área de tarefas MQL5.
Desde que minha estrutura seja gerada em menos de 10 milissegundos, não estou particularmente nervoso com a GPU (embora a tentação esteja lá às vezes, ainda bem que há espaço para manobras).
E em 10 milissegundos eu poderia produzir, por exemplo, uma coisa assim com sombras, antialiasing e transparência:
Os códigos SZY para GPU foram baixadosdeste tópico, muito obrigado@Rorschach e@Serhii Shevchuk por isso.
Pessoal, alguém fez algum redimensionamento de recursos gráficos usando a interpolação em Tela?
Eu dei um exemplo do códigoaqui. Mas o código está longe de ser perfeito. Agora seria bem diferente.
Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos
A lona é legal!
Nikolai Semko, 2018.03.24 04:13
Raster Scale Scale Scale Demo
Há um arquivo BMP bastante grande no arquivo Ex5 como um recurso.
Eu dei um exemplo do códigoaqui. Mas o código está longe de ser perfeito. Eu o teria feito de forma bem diferente agora.
Estou curioso em saber como você faria isso agora. É do meu maior interesse :)
Eu dei um exemplo do códigoaqui. Mas o código está longe de ser perfeito. Eu faria tudo diferente agora.
É de uma beleza indescritível :)
OpenCL:https://www.mql5.com/ru/forum/162864
DirectX:Restante 3D como padrão
Só me pergunto como você faria isso agora. No meu melhor interesse :)