![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
Na classe CGraphic, eu substituí o tipo de cor por uint em todos os lugares, como você pediu.
Além disso, acrescentei novos métodos à classe CCanvas, que permitem desenhar primitivos com espessura especificada:
Em linha com a inovação do CCanvas, eu ampliei as propriedades do CCurve:
Ao desenhar uma curva com linhas, você pode agora especificar a espessura das linhas e o estilo de suas extremidades.
Isso é simplesmente fantástico.
A manipulação de estrias (interpolação com curvas de Bézier) foi revisada. Sua implementação foi transferida da classe CGraphics diretamente para o CCanvas, o que permite a construção de estrias fora da biblioteca gráfica.
Além disso, foi adicionado um algoritmo para renderizar spline fechado.
Como resultado, a classe CCanvas tem agora dois novos métodos públicos.
Estes métodos permitem desenhar estrias em um determinado estilo e com uma determinada espessura.
Como as curvas de Bezier descrevem círculos e elipses de forma bastante precisa, não há necessidade óbvia de aumentar a classe CCanvas com novos métodos para tornar estes primitivos com uma determinada espessura.
O exemplo de aproximação de elipse por curvas Bézier baseadas no método PolygoneSmooth:
Resultado:
Outro passo possível para a versatilidade da biblioteca de gráficos: um modo de desenho de curvas personalizado CURVE_CUSTOM.
Este modo eliminará a necessidade de herdar a classe CGraphic e sobrecarregar os métodos de plotagem a fim de traçar uma curva diferente do que as ferramentas padrão da biblioteca permitem.
Para implementar este modo CURVE_CUSTOM novas propriedades serão adicionadas à classe CCurve.
Ela se baseia em um novo ponteiro para a função PlotFucntion.
Esta abordagem abre novas possibilidades para o desenho de parcelas.
Vamos implementar o desenho de candelabros na biblioteca CGraphics como exemplo:
1. Vamos criar uma classe de contêineres na qual todos os dados de uma única vela serão armazenados.
Como a classe CCandle é descendente da classe CObject, todos os castiçais que queremos desenhar, podemos escrevê-los sequencialmente no objeto da classe CArrayObj. Esta matriz entrará em nosso método de desenho personalizado como o parâmetro cbdata. Como resultado, o método de desenho do castiçal será o seguinte.
3. Para simplificar, todos os castiçais serão gerados de forma aleatória. E assim geramos seqüencialmente 10 castiçais e preenchemos o objeto da classe CArrayObj com eles. Depois criamos o objeto CGraphics e adicionamos uma curva a ele, enquanto especificamos que ele será desenhado usando nossa função PlotCandles. Também precisamos mudar os valores máximos e mínimos do eixo y, para que nossas velas sejam totalmente visíveis.
Como resultado, obtemos o seguinte gráfico:
@Roman Konopelko
há um pequeno erro na função CGraphic::SetDefaultParameters
As cores devem ser inicializadas com a opacidade levada em conta.
@Roman Konopelko
há um pequeno erro na função CGraphic::SetDefaultParameters
As cores devem ser inicializadas com a opacidade levada em conta.
Este exemplo causou o congelamento do computador. O que fiz: depois de colocar o indicador no gráfico no editor, joguei com diferentes combinações de linhas 87 e 88 (quando uma de cada vez, quando juntas)
Repetiu a conquista duas vezes. Eu não registrei a seqüência de ações. A terceira vez é trivial, tenho medo de verificar.
Adicionado: construir 1607 x64
Este exemplo causou o congelamento do computador. O que fiz: depois de colocar o indicador no gráfico no editor, joguei com diferentes combinações de linhas 87 e 88 (quando uma de cada vez, quando juntas)
Repetiu a conquista duas vezes. Eu não registrei a seqüência de ações. A terceira vez é trivial, tenho medo de verificar.
Adicionado: construir 1607 x64
Repetimos o recorde hoje - computadores mortos pendurados, conseguiram ver o consumo de RAM aumentar de 2GB para 5,5GB. Parece ter conseguido fechar o cronograma, mas o computador está pendurado há cinco minutos.
Desta vez coloquei um limite para o tamanho da matriz - não mais de 300 elementos. Como você pode ver, isso não ajudou 🤔
o que diz o debug?
o que diz o debug?
Jbug não entendeu, eu fiz isto: pairou um indicador e não comentou/comentou uma ou duas linhas e compilou. Acabou escrevendo a partir de um tablet, o laptop saiu.
O percevejo não conseguiu, eu fiz isto: passei o mouse sobre o indicador e comentei/comentei uma ou duas linhas e compilei. Acabou escrevendo a partir de um tablet, o laptop saiu.
Assim, o laptop depois de um reinício duro voltou à vida, mas não quero conduzir mais experiências destrutivas - há vários Expert Advisors rodando no laptop, então não há desejo de pegar um congelamento por uma hora inteira.