Boa tarde,
alguém já trabalhou com esta biblioteca para fazer gráficos de linha?
não estou conseguindo criar a linha do array selecionado
estou usando como base esta documentação
https://www.mql5.com/pt/docs/standardlibrary/canvasgraphics/clinechart
Mas sem sucesso ainda
Posta seu código para tentarmos ver onde está o erro, pode ser apenas algum erro de digitação, no próprio link que você passou tem um exemplo.
//+------------------------------------------------------------------+ //| forum.mq5 | //| Copyright 2021, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2021, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" #property indicator_chart_window #property indicator_buffers 0 #property indicator_plots 0 #include <Canvas\Charts\LineChart.mqh> CLineChart Chart; double ya[]; MqlRates rates[]; input datetime init = D'2021.09.22 00:00:00';//inicio input datetime end = D'2021.09.22 23:00:00';//fim //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int OnInit() { //--- if(!Chart.CreateBitmapLabel("SampleHistogrammChart",10,10,600,450)) { Print("Erro: ",GetLastError()); return(-1); } else { Chart.SeriesAdd(ya,"Last"); } EventSetTimer(2); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- CopyRates(_Symbol,_Period,init,end,rates); //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnTimer(void) { int size = ArraySize(rates); Print("Size: ", size); ArrayResize(ya,size); for(int i=0;i<size;i++) { ya[i] = rates[i].close; } Chart.SeriesUpdate(0,ya); } void OnDeinit(const int reason) { Chart.Destroy(); } //+------------------------------------------------------------------+
Fiz um mais resumido, que está com o mesmo problema não consigo plotar os dados nem atualiza-los
não entendi bem os exemplos da documentação
Fiz um mais resumido, que está com o mesmo problema não consigo plotar os dados nem atualiza-los
não entendi bem os exemplos da documentação
Chart.VScaleMax(6000);
E como estava olhando o dolar, fez uma linha aparecer, porém quando adicionei o:Chart.VScaleMin(4000);
Ferrou tudo de novo, não sei se é bug no cálculo da escala ou se tem algum segredo pra usar essa classe.
O seu código teoricamente funciona, eu adicionei:
E como estava olhando o dolar, fez uma linha aparecer, porém quando adicionei o:
Ferrou tudo de novo, não sei se é bug no cálculo da escala ou se tem algum segredo pra usar essa classe.
Cara é bem complicada essa biblioteca será que ela não usa uma auto escala igual a Cgraphic?
Aparentemente ela tem, ela herda da classe CChartCanvas e o cálculo de escala é feito na linha 841.
Teria tirar um tempo pra debugar pra ver se ta com bug nos cálculos.
Deve ser algum bug na escala mesmo, quando vc define um minimo ele parece pegar os valores da linha e adicionar + o valor minimo
Eu uso o grupo de objetos de gráficos científicos , veja um exemplo de plot do preço de fechamento das ultimas 100 barras.
//+------------------------------------------------------------------+ //| T001.mq5 | //| Copyright 2021, Lethan Corp. | //| https://www.mql5.com/pt/users/14134597 | //+------------------------------------------------------------------+ #property copyright "Copyright 2021, Lethan Corp." #property link "https://www.mql5.com/pt/users/14134597" #property version "1.00" #property indicator_chart_window #property indicator_buffers 0 #property indicator_plots 0 #include <Graphics\Graphic.mqh> CGraphic m_graphic; CCurve *m_plot; /+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int m_width = (int)ChartGetInteger(0, CHART_WIDTH_IN_PIXELS); int m_height = (int)ChartGetInteger(0, CHART_HEIGHT_IN_PIXELS); //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int OnInit() { //--- ResetLastError(); int width = (int)ChartGetInteger(0, CHART_WIDTH_IN_PIXELS)-800; int height = (int)ChartGetInteger(0, CHART_HEIGHT_IN_PIXELS)-550; if(!m_graphic.Create(0,"Close",0,20,20,500,200)) { Print("Error creating chart: ",GetLastError()); return(INIT_FAILED); } //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { int total = 100; double temp_close[]; while(total>0) { ArrayResize(temp_close, ArraySize(temp_close)+1); temp_close[ArraySize(temp_close)-1] = close[(rates_total-1)-total--]; } m_graphic.CurveRemoveByName("Close"); m_plot = m_graphic.CurveAdd(temp_close, clrBlueViolet, CURVE_LINES, "Close"); m_graphic.ScaleX(100); m_graphic.CurvePlotAll(); m_graphic.Update(); Sleep(1000); //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { m_graphic.CurveRemoveByName("Close"); m_graphic.Destroy(); } //+------------------------------------------------------------------+
- www.mql5.com
Eu uso o grupo de objetos de gráficos científicos , veja um exemplo de plot do preço de fechamento das ultimas 100 barras.
então o primeiro usei esse, consegui fazer oq estava precisando, porém queria fazer aparecerem uns círculos no gráfico com diferença de tamanho e cor , ai vi oq complicava nessa biblioteca que quando vc usa o scatter vc define um estilo para cada curva e eu precisava diferenciar cor e tamanho
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Boa tarde,
alguém já trabalhou com esta biblioteca para fazer gráficos de linha?
não estou conseguindo criar a linha do array selecionado
estou usando como base esta documentação
https://www.mql5.com/pt/docs/standardlibrary/canvasgraphics/clinechart
Mas sem sucesso ainda