![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Você pode inserir um arquivo como uma matriz e, em seguida, acessar essa matriz.
Exemplo em anexo
Sim, a propósito, isso funciona. Eu não sabia dessa possibilidade. Obrigado!
Mas o tamanho do arquivo mq4 ou mqh será 5 vezes maior do que o próprio arquivo png. Mas essa é uma opção bastante funcional, pois não afeta o tamanho do arquivo ex4 em si. (ele será o mesmo do arquivo ex5).
Peça aos desenvolvedores que insiram o PNG aqui.
Tenho certeza de que eles concordarão.
Duvido que quaisquer desejos e solicitações sejam implementados para o MT4, especialmente quando já foi anunciado que o suporte ao MT4 será encerrado em breve.
PNGs externos resolvidos, carregamento, dimensionamento e transparência funcionam. Mas...
É realista compilar um PNG dentro de um arquivo?
A funcionalidade padrão ...
#resource "\\Files\\123.png"
string nam_img = "::Files\\123.png"
... gera um erro de compilação
Não cheguei a analisar o fato de o software funcionar com um arquivo externo, mas como fazer com que todo o produto final seja um único arquivo?
Caso contrário, o sentido prático desse recurso se perderá. Não tentei fazer isso no MT5. No MT4, há um erro de conexão.
P.S. Presumo que, teoricamente, seja possível escrever um script que converta PNG em código e nós o colocaremos, digamos, no MQH e trabalharemos com eles em um contêiner. Mas não consigo escrever esse script. As matrizes de imagens são uma floresta cega para mim.
Além do que Alexander sugeriu (por meio da inserção da matriz uchar[]), há também um método de muleta por meio de pseudo BMP, sobre o qual já falei
Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação
O Canvas é legal!
Nikolai Semko, 2023.09.25 17:09
Infelizmente, na MQL4 não há possibilidade de anexar um recurso como uma matriz. Mas todo o resto funciona.Você pode escrever um script que execute essa conversão de png para bmp (o tamanho da pseudo-imagem desse arquivo será igual em largura ao tamanho do próprio arquivo png e 1 pixel de altura).
Mas você pode fazer isso com outro algoritmo: Converta o PNG com transparência em um BMP real com transparência e anexe-o por meio de um recurso. O tamanho do arquivo ex4 será um pouco maior do que o tamanho do arquivo png, porque no ex4 o recurso do arquivo bmp é armazenado em formato compactado. Eu verifiquei que o aumento do tamanho do ex4 com bmp será de 10 a 30% maior do que o do ex4 com a mesma imagem no formato png.
Pessoalmente, eu preferiria a variante sugerida por Slavsky. Colocar uma matriz uchar separada em um arquivo mqh separado, que conterá o próprio arquivo png e, em seguida, inseri-lo no código por meio de um include, de modo que a matriz gigante não atrapalhe o código.
Além disso, a vantagem desse método é que você não precisa colocar nenhum arquivo gráfico na sandbox MQL4, como no caso dos recursos.
Solicite aos desenvolvedores que insiram um PNG aqui.
Tenho certeza de que eles concordarão.
Vamos adicioná-lo à MQL5.
Você pode inserir um arquivo como uma matriz e, em seguida, acessar essa matriz.
Exemplo em anexo
Incrível, há quanto tempo esse menu "Insert" está no ME? :O
viver e aprender...
Vamos adicioná-lo à MQL5.
O mercado mostra que todos os produtos são duplicados para ambas as plataformas. Muito provavelmente, eles não usarão a variante não multiplataforma, mas permanecerão no BMP, infelizmente.
Você pode anexar qualquer arquivo em MQL5 mesmo agora.
Esse anexo criará uma matriz estática com dados, não um recurso. No segundo caso, ele parece estar disponível em outros EX4/5.Converta PNG com transparência em BMP real com transparência e anexe-o via recurso.
Essa opção não funciona no MT4, porque o BMP com canal alfa é anexado, mas não é exibido.
O mercado mostra que todos os produtos são duplicados em ambas as plataformas. Provavelmente, não usaremos a variante que não é de plataforma cruzada e, infelizmente, continuaremos usando o BMP.
Acho que o PNG já se tornou multiplataforma. Ele já funciona com arquivos externos. Exemplos acima de Nikolay.
Você pode inserir um arquivo como uma matriz e, em seguida, acessar essa matriz.
De fato, isso acontece. Fiquei diretamente surpreso.
Resta tentar realizar no Canvas todas as coisas com emborrachamento, transparência e pronto - um pequeno milagre mq4 está pronto.
É claro que isso é feito para várias plataformas. Porque no MT4 - BMP, e no MT5 - PNG. Não é bom. Tudo deveria ser PNG.
Resta tentar implementar no Canvas toda a parte emborrachada e transparente e pronto - um pequeno milagre mq4 está pronto.
Portanto, tudo já está pronto. Você pode fazer um teste de exemplo da biblioteca PNG. Apenas a linha com o recurso
altere-a para a linha
#include <PNG\iconspng.mqh>
onde, no arquivo iconspng.mqh, inserimos a matriz png_data[].
Só é necessário lembrar que, no MT4, é importante enviar todos os cálculos dispendiosos de OnChartEvent para o cronômetro, caso contrário, haverá um atraso terrível. Pura besteira da MQL4.
Agora vou baixar uma versão sem atraso.
Estou prestes a carregar uma versão sem atrasos.
Sim, ele não apresenta atraso nem mesmo se a CPU estiver no modo de "melhor desempenho".
Incrível, há quanto tempo existe esse menu "Inserir" no ME? :O
viver e aprender...
Entre meus arquivos, onde experimentei essa inserção de arquivo, encontrei um arquivo criado em novembro de 2019. Eu estava interessado nele ainda antes. Infelizmente, não encontrei o script em que o arquivo de imagem foi salvo a partir dessa matriz.
Entre meus arquivos, onde experimentei essa inserção de arquivo, encontrei um arquivo criado em novembro de 2019. Eu estava interessado nele ainda antes. Infelizmente, não encontrei o script em que o arquivo de imagem foi salvo a partir dessa matriz.