Discussão do artigo "Visualize isto! Biblioteca gráfica em linguagem MQL5 como equivalente a plot de R" - página 2

 
-Aleks-:

É possível fazer duas ou mais escalas no gráfico - semelhante a uma régua, em que as divisões são dadas como centímetros e polegadas, com os valores fornecidos somente se o ponto foi usado para traçar o gráfico?

Será muito fácil adicionar uma nova marcação no contexto de sua tarefa usando o método MarksToAxisAdd.

#include <Graphics\Graphic.mqh>
//+------------------------------------------------------------------+
//| Função de início do programa de script|
//+------------------------------------------------------------------+
void OnStart()
  {
   double x[]={-11,-11,11,11};
   double y[]={-10,10,-10,10};
//--- gráfico
   CGraphic graph;
   graph.HistoryNameWidth(80);
   graph.Create(0,"Graph",0,30,30,830,430);
//--- Pontos
   CCurve *curve=graph.CurveAdd(x,y,CURVE_LINES);
   graph.CurvePlot(0);
//--- adicionar marcas ao eixo X
   graph.MarksToAxisAdd(x,8,MARK_INTERNAL,0);
   graph.Update();
   Sleep(1000);
  }‌

P.S. Lembre-se de que o método MarksToAxisAdd não cria novos objetos. Ou seja, ao redesenhar o gráfico usando o método Redraw, essa marcação será perdida.

P.P.S. Se você precisar não apenas adicionar novas serifas, mas também assiná-las, a tarefa será mais complicada. Será necessário escrever cada serifa manualmente usando o método TextAdd.

 
Roman Konopelko:

Adicionar uma nova marcação no contexto de sua tarefa será muito fácil usando o método MarksToAxisAdd.

#include <Graphics\Graphic.mqh>
//+------------------------------------------------------------------+
//| Função de início do programa de script|
//+------------------------------------------------------------------+
void OnStart()
  {
   double x[]={-11,-11,11,11};
   double y[]={-10,10,-10,10};
//--- gráfico
   CGraphic graph;
   graph.HistoryNameWidth(80);
   graph.Create(0,"Graph",0,30,30,830,430);
//--- Pontos
   CCurve *curve=graph.CurveAdd(x,y,CURVE_LINES);
   graph.CurvePlot(0);
//--- adicionar marcas ao eixo X
   graph.MarksToAxisAdd(x,8,MARK_INTERNAL,0);
   graph.Update();
   Sleep(1000);
  }‌

P.S. Observe que o método MarksToAxisAdd não cria novos objetos. Ou seja, ao redesenhar o gráfico usando o método Redraw, essa marcação será perdida.

P.P.S. Se você precisar não apenas adicionar novas serifas, mas também assiná-las, a tarefa será mais complicada. Será necessário escrever cada serifa manualmente usando o método TextAdd.

Obrigado pela resposta.

É necessário que os entalhes sejam paralelos - o objetivo é ver dois valores de um ponto - portanto, precisamos de assinaturas de pontos. Não há planos para fazer o trabalho com o gráfico como com o gráfico, ou seja, ao apontar na janela de navegação para obter os valores do gráfico por escalas?

 
-Aleks-:

Obrigado pela resposta.

Preciso que os entalhes sejam paralelos - o objetivo é ver dois valores de um ponto - portanto, preciso das assinaturas dos pontos. Você está planejando trabalhar com um gráfico como se fosse um gráfico, ou seja, ao apontar para a janela de navegação, obter os valores do gráfico por escalas?

Como parte da biblioteca de gráficos, essa funcionalidade ainda não está planejada. Mas, no mesmo tópico sobre a biblioteca de gráficos, já encontrei uma implementação personalizada da funcionalidade de que você está falando).

 
Roman Konopelko:

Essa funcionalidade não foi planejada como parte da biblioteca Graphics. Mas, no mesmo tópico da biblioteca Graphics, já vi uma implementação personalizada da funcionalidade de que você está falando).

Obrigado pelo link. É uma pena que não tenha sido planejada - acho que ela é extremamente útil para o trabalho real com gráficos.

Tenho uma pergunta para a qual você provavelmente sabe a resposta, já que passou muito tempo trabalhando com gráficos, e receio ter inventado uma bicicleta novamente: existe um método de plotagem de um gráfico que sobreponha tortas de dados de várias camadas na forma de uma matriz? Humanamente (na execução física), é assim: pegamos um copo, diferenciamos em células, em cada índice dependente de célula x de y, fazemos a normalização dos indicadores e pintamos dependendo do indicador das células no copo com um gradiente de uma cor, depois o próximo indicador com a mesma matriz, mas com outros valores, também normalizamos e pintamos, mas com um vetor diferente. O resultado da análise será uma paleta, que se revelou - supõe-se que, pela tonalidade da cor e sua capacidade de transmitir luz, é possível identificar padrões de influência de um indicador sobre outro. (se é que existe algo assim, esse é o meu know-how :)) Há algo semelhante no terminal, mas há um gráfico de extremos, que não é o mesmo, mas talvez tenha inspirado minha ideia.

 
-Aleks-:

Obrigado pelo link. É uma pena que ele não tenha sido planejado - acho que é extremamente útil para o trabalho real com gráficos.

Tenho uma pergunta para a qual você provavelmente sabe a resposta, já que passou muito tempo trabalhando com gráficos, e receio ter inventado uma bicicleta novamente: existe um método de criar um gráfico que sobreponha tortas de dados de várias camadas na forma de uma matriz? Humanamente (na execução física), é assim: pegamos um copo, diferenciamos em células, em cada índice dependente de célula x de y, fazemos a normalização dos indicadores e pintamos dependendo do indicador das células no copo com um gradiente de uma cor, depois o próximo indicador com a mesma matriz, mas com outros valores, também normalizamos e pintamos, mas com um vetor diferente. O resultado da análise será uma paleta, que se revelou - supõe-se que, pela tonalidade da cor e sua capacidade de transmitir luz, é possível identificar padrões de influência de um indicador sobre outro. (se é que existe algo assim, esse é o meu know-how :)) Há algo semelhante no Terminal, mas ele faz gráficos por extremos, o que não é a mesma coisa, mas pode ter inspirado minha ideia.

Provavelmente entendi mal, mas o que você está descrevendo para mim está mais associado aos métodos clássicos de agrupamento do aprendizado de máquina. Em especial, parece algo como os mapas de Kohonen.
 
Roman Konopelko:
Talvez eu tenha entendido mal, mas o que você está descrevendo está mais associado aos métodos clássicos de agrupamento do aprendizado de máquina. Em particular, parece algo como mapas de Kohonen.

Os mapas de Kohonen não são exatamente assim, é um princípio diferente... Eu só estava pensando que essa abordagem ajudaria o aprendizado de máquina... De qualquer forma, ou eu estou pensando na direção certa ou ainda não chegou lá e precisa ser feito para avaliar. Obrigado.

 
Um pequeno pedido, se não for difícil, você pode adicionar a possibilidade de desenhar candlesticks ou barras no OHLC? Gosto muito dessas telas e gostaria de poder criar gráficos completos com elas
 
Maxim Dmitrievsky:
Um pequeno pedido, se não for difícil, você pode adicionar a possibilidade de desenhar candlesticks ou barras no OHLC? Gosto muito dessas telas e gostaria de poder desenhar gráficos completos nelas
Talvez você precise apenas de DRAW_COLOR_CANDLES?
 
Rashid Umarov:
Talvez você só precise do DRAW_COLOR_CANDLES?


Não, apenas que, sem indicadores, você poderia exibir um gráfico adicional com informações sobre distribuições (sem problemas com isso), e seria bom poder exibir uma parte do gráfico de outro TF, digamos, ou outras informações na forma de barras, por meio da mesma biblioteca de gráficos. É apenas conveniente e rápido trabalhar com ele, é claro, você pode gerar todos os quatro tipos de preços com linhas, mas não parece bom.

 
Maxim Dmitrievsky:


Não, exatamente porque, sem indicadores, seria possível exibir um gráfico adicional com informações sobre distribuições (não há problemas com isso), e seria bom poder exibir um pedaço de gráfico de outro TF, por exemplo, ou outras informações na forma de barras, por meio da mesma biblioteca de gráficos. É conveniente e rápido trabalhar com ele. É claro que você pode exibir todos os quatro tipos de preços em linhas, mas isso não parece muito bom.

Boa tarde!

O modo CustomPlotFunction é implementado na biblioteca para fins semelhantes, o exemplo de uso implementa aproximadamente o que você está interessado.

P.S. Mais detalhes sobre isso estão escritos no fórum .