Discussão do artigo "Como criar um painel de informações para exibir dados em indicadores e Expert Advisors" - página 2
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á.
Então.
uma variável de ponteiro para um futuro objeto novo e criado dinamicamente da classe é declarada e imediatamente inicializada com o valor NULL.
Uma instância simples de uma classe é declarada da seguinte forma:
Mas, nesse caso, não é possível declarar e criar uma instância dessa forma - a classe não tem um construtor sem parâmetros formais.
Portanto, ao declarar uma instância dessa forma, é necessário especificar todos os parâmetros necessários do objeto da classe, que devem ser passados para o construtor da classe:
------------------------
No exemplo de trabalho com a classe, primeiro um ponteiro vazio para o objeto futuro é criado no indicador e, em seguida, em OnInit(), o objeto do painel é criado, onde o ponteiro para o objeto criado é gravado na variável do ponteiro:
Em seguida, em OnDeinit(), o objeto é excluído da memória por esse ponteiro:
Se você simplesmente criasse um novo objeto por meio do operador new sem gravar um ponteiro para o objeto criado em uma variável, não seria possível excluí-lo posteriormente, o que resultaria em um vazamento de memória.
Portanto, em resumo, no exemplo do artigo
Se a instância necessária da classe (dashboard CDashboard) tivesse sido criada imediatamente, não seriam necessários ponteiros para ela - ela teria sido acessada da mesma forma usando o operador "point". E não haveria necessidade de excluí-lo quando o trabalho estivesse concluído - o subsistema do terminal faz isso sozinho. Mas essa seria a única instância da classe no programa.
A criação dinâmica permite que você crie novos objetos da classe necessária em tempo real e faça referência a eles por meio de um ponteiro. É por isso que a criação dinâmica de um objeto de classe foi usada no exemplo. Simplificado, sem cobrir alguns pontos.
Obrigado pela resposta abrangente! Portanto, para cada objeto, seu próprio construtor, em outro caso, objeto com argumentos solicitados da classe, em qualquer estágio, você pode criar objetos diferentes! (Nus fica um pouco mais claro).
Na verdade, é interessante criar um painel de informações, pois isso é uma consequência do DPI do monitor, no meu caso 168. Comment(); é muito pequeno!
Há o TerminalInfoInteger(TERMINAL_SCREEN_DPI) que quero criar levando em conta a resolução... e quero criar por grupo de cores, por conveniência.
Talvez você tenha essa solução? Seu código é bom, legível... Eu, por outro lado, é longo, incompreensível e, como resultado, tenho que reescrever tudo várias vezes! Obrigado por seu apoio!
Obrigado pela resposta abrangente! Assim, cada objeto tem seu próprio construtor; no outro caso, o objeto com os argumentos solicitados da classe, em qualquer estágio, você pode criar objetos diferentes! (Nous ficou um pouco mais claro).
Na verdade, o interesse em criar um painel de informações é uma consequência do monitor DPI, no meu caso 168. Comment(); é muito pequeno!
Há o TerminalInfoInteger(TERMINAL_SCREEN_DPI) que quero criar levando em conta a resolução... e quero criar por grupo de cores, por conveniência.
Talvez você tenha essa solução? Seu código é bom, legível... Eu, por outro lado, é longo, incompreensível e, como resultado, tenho que reescrever tudo várias vezes! Obrigado por seu apoio!
A solução está nos exemplos da ajuda:
Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação.
Galeria de UIs escritas em MQL
Artyom Trishkin, 2024.05.31 10:33 AM
Aqui(TERMINAL_SCREEN_DPI):
Exemplo de cálculo do fator de escala:
Quando usado dessa forma, um recurso gráfico terá o mesmo tamanho a olho nu em monitores com resoluções diferentes. Ao mesmo tempo, os tamanhos dos elementos de controle (botões, janelas de diálogo, etc.) corresponderão às configurações de personalização.
Infelizmente, não tenho um monitor 4K, então não posso verificar e, pelo mesmo motivo, ainda não inseri esse recálculo na biblioteca - não é sério fazer isso aleatoriamente, sem verificar.
Infelizmente, não tenho um monitor 4K, então não posso verificar e, pelo mesmo motivo, ainda não inseri esse recálculo na biblioteca - não é sério fazer isso aleatoriamente, sem verificar.
Artem, oi! Aqui está a construção levando em conta o dpi.... Mas, na verdade, você pode seguir outro caminho. Digamos que você defina o tamanho do cabeçalho, calcule o tamanho do painel, a altura da linha e a altura do texto com base no tamanho do cabeçalho. Você especifica dois parâmetros... e qualquer que seja o dpi. Ou há algum problema com isso? Não tenho certeza. Qual é a sua opinião sobre essa solução?
Artem oi! Aqui está uma compilação baseada em dpi..... Mas, basicamente, você pode seguir outro caminho. Digamos que você defina o tamanho do cabeçalho, calcule o tamanho da altura da linha do painel e a altura do texto com base no tamanho do cabeçalho. Você especifica dois parâmetros... e qualquer que seja o dpi. Ou há algum problema com isso? Não tenho certeza. Qual é a sua opinião sobre essa solução?
Boa ideia sobre o painel. Mas notei que o painel cai espontaneamente para a parte inferior do gráfico quando se alterna para ele a partir de outro gráfico. Exemplo:
Boa ideia sobre o painel. Mas notei que o painel cai espontaneamente para a parte inferior do gráfico quando se alterna para ele a partir de outro gráfico. Exemplo:
Fenômeno interessante. Terei que dar uma olhada nisso em meu tempo livre. O motivo mais provável é o redimensionamento do gráfico inativo.