Ainda assim, precisarei da variável "st" não só em Alerta, mas também para cálculos, e ao compilar o aviso "possível perda de dados devido à conversão do tipo" sai.
Presumo que isto se deve a um número de 10 dígitos, enquanto que o valor máximo em int é 2 147 483 647, eu tenho actualmente 1 380 758 400. Talvez faça sentido usar muito tempo, e provavelmente o Conselheiro Especialista consumirá muitos recursos nesta parte?
Quero desenhar sobre tela. Ter uma imagem na tela redesenhada no OnInit, OnTimer, OnTick e no onChartEvent. Declaro CCanvas canvas em variáveis globais e chamo canvas.methods onde eu quiser. Mas o compilador queixa-se da variável estática não resolvida 'CCanvas::m_default_colors' (o que é que isso tem a ver com cores?)
o código é assim
#include <Canvas\Canvas.mqh>
Tela de CCanvas;
int OnInit() { //CCanvas canvas; se eu o declarar aqui, desenha mas então como é que eu o redesenho no OnTick?
Quero recorrer à tela em Expert Advisor. Quero que a imagem na tela seja redesenhada no OnInit, OnTimer, OnTick e no onChartEvent. Declaro CCanvas canvas em variáveis globais e chamo canvas.methods onde eu quiser. Mas o compilador queixa-se da declaração global não resolvida
...
Como se negoceia com o compilador? Há um exemplo com tela na EA?
Bem, você não é um principiante! Publique o código correctamente!
Bem, você não é um principiante! Publique o código correctamente!
O código está aqui mesmo. Mas é muito pior para investigar. E também não funciona. Erro não resolvido variável estática 'CCanvas::m_default_colors' ProbeGraph.mq5 21 9
E um amontoado de mandados sobre variáveis de altura e largura sobrepostas. Tanto quanto sei, o compilador não quer chamar o construtor da classe CCanvas nas variáveis globais, mas quer chamar o construtor no OnInit. E depois como me referir a uma instância da classe fora do OnInit, não compreendo.
Também. antes, o corpo da função de Desenho estava dentro do InInit, mas o próprio Desenho não estava. Tudo funcionou, mas dentro do OnInit. Já comecei a girar aqui, tentando passar uma referência a uma instância da classe para a função de Desenho, porque as variáveis globais não funcionam.
Em geral, o código está a ser escrito, o problema da criação de uma instância global da classe CCanvas.
//+------------------------------------------------------------------+//| ProbeGraph.mq5 |//| Copyright 2013, MetaQuotes Software Corp. |//| http://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2013, MetaQuotes Software Corp."#property link"http://www.mql5.com"#property version"1.00"#include <Canvas\Canvas.mqh>
int heigth=500;
int width=500;
int Xcentr=round(width/2);
int Ycentr=round(width/2);
int Rmin=25;
int Rmax=round(heigth/2-1);
#define ArrayS 100000double arrayopen[ArrayS];
CCanvas canvas;
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
//CCanvas canvas;
canvas.CreateBitmapLabel("ProbeGraph",0,0,width,heigth,COLOR_FORMAT_ARGB_RAW);
//Draw(canvas);//--- create timerEventSetTimer(60);
//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
//--- destroy timerEventKillTimer();
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
//---//canvas.Update();
}
//+------------------------------------------------------------------+//| Timer function |//+------------------------------------------------------------------+voidOnTimer()
{
//---
}
//+------------------------------------------------------------------+//| ChartEvent function |//+------------------------------------------------------------------+voidOnChartEvent(constint id,
constlong &lparam,
constdouble &dparam,
conststring &sparam)
{
//---
}
//+------------------------------------------------------------------+int ChartVisibleBars(constlong chart_ID=0)
{
//--- подготовим переменную для получения значения свойстваlong result=-1;
//--- сбросим значение ошибкиResetLastError();
//--- получим значение свойстваif(!ChartGetInteger(chart_ID,CHART_VISIBLE_BARS,0,result))
{
//--- выведем сообщение об ошибке в журнал "Эксперты"Print(__FUNCTION__+", Error Code = ",GetLastError());
}
//--- вернем значение свойства графикаreturn((int)result);
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+void Draw(CCanvas *canvas)
{
ArrayInitialize(arrayopen,0);
double r;
double A, Amin=0, Amax=2*3.1415;
int x,y, xprev=0, yprev=0;
//canvas.Erase(ColorToARGB(clrRed, 115));
canvas.Circle(Xcentr,Ycentr,Rmin,ColorToARGB(clrBlue, 115));
canvas.Circle(Xcentr,Ycentr,Rmax,ColorToARGB(clrBlue, 115));
int Nbars=CopyOpen(Symbol(),Period(),TimeCurrent(),ChartVisibleBars(0),arrayopen); Print("Nbars=",Nbars);
double KursMin=1000000,KursMax=0;
for(int i=0; i<Nbars; i++)
{
if(KursMin>arrayopen[i]) KursMin=arrayopen[i];
if(KursMax<arrayopen[i]) KursMax=arrayopen[i];
};
Print("KursMin=",KursMin); Print("KurMax=",KursMax);
for(int i=0; i<Nbars; i++)
{
if((KursMax-KursMin)>0) r=Rmin+(Rmax-Rmin)*(arrayopen[i]-KursMin)/(KursMax-KursMin);
if(Nbars>0) A=Amin+(Amax-Amin)*i/(Nbars);
x=round(Xcentr-r*MathSin(A));
y=round(Ycentr+r*MathCos(A));
canvas.PixelSetAA(x,y,ColorToARGB(clrGreen,155));
if(xprev>0 && yprev>0) canvas.Line(xprev,yprev,x,y,ColorToARGB(clrBlue,155));
xprev=x; yprev=y;
};
canvas.Update();
}
//+------------------------------------------------------------------+
Ainda assim, precisarei da variável "st" não só em Alerta, mas também para cálculos, e ao compilar o aviso "possível perda de dados devido à conversão do tipo" sai.
Presumo que isto se deve a um número de 10 dígitos, enquanto que o valor máximo em int é 2 147 483 647, eu tenho actualmente 1 380 758 400. Talvez faça sentido usar muito tempo, e provavelmente o Conselheiro Especialista consumirá muitos recursos nesta parte?
Não compreende o princípio da conversão do tipo? É assim tão simples:
Quero desenhar sobre tela. Ter uma imagem na tela redesenhada no OnInit, OnTimer, OnTick e no onChartEvent. Declaro CCanvas canvas em variáveis globais e chamo canvas.methods onde eu quiser. Mas o compilador queixa-se da variável estática não resolvida 'CCanvas::m_default_colors' (o que é que isso tem a ver com cores?)
o código é assim
#include <Canvas\Canvas.mqh>
Tela de CCanvas;
int OnInit()
{
//CCanvas canvas; se eu o declarar aqui, desenha mas então como é que eu o redesenho no OnTick?
canvas.CreateBitmapLabel("ProbeGraph", 0, 0, width ,heigth, COLOR_FORMAT_ARGB_RAW);
canvas.Circle(Xcentr,Ycentr,Ycentr,Rmin,ColorToARGB(clrBlue, 115)); canvas.Update();
}
nulo OnTick()
Como é que negoceio com o compilador? Há um exemplo com tela em perito?{
canvas.Circle(Xcentr,Ycentr,Ycentr,Rmin,ColorToARGB(clrBlue, 115)); canvas.Update();
}
Quero recorrer à tela em Expert Advisor. Quero que a imagem na tela seja redesenhada no OnInit, OnTimer, OnTick e no onChartEvent. Declaro CCanvas canvas em variáveis globais e chamo canvas.methods onde eu quiser. Mas o compilador queixa-se da declaração global não resolvida
...
Como se negoceia com o compilador? Há um exemplo com tela na EA?Bem, você não é um principiante! Publique o código correctamente!
Bem, você não é um principiante! Publique o código correctamente!
O código está aqui mesmo. Mas é muito pior para investigar. E também não funciona. Erro não resolvido variável estática 'CCanvas::m_default_colors' ProbeGraph.mq5 21 9
E um amontoado de mandados sobre variáveis de altura e largura sobrepostas. Tanto quanto sei, o compilador não quer chamar o construtor da classe CCanvas nas variáveis globais, mas quer chamar o construtor no OnInit. E depois como me referir a uma instância da classe fora do OnInit, não compreendo.
Também. antes, o corpo da função de Desenho estava dentro do InInit, mas o próprio Desenho não estava. Tudo funcionou, mas dentro do OnInit. Já comecei a girar aqui, tentando passar uma referência a uma instância da classe para a função de Desenho, porque as variáveis globais não funcionam.
Em geral, o código está a ser escrito, o problema da criação de uma instância global da classe CCanvas.
Uma coisa que não consigo entender: se o compilador jura, porque é que os erros não são corrigidos? А?
Uma coisa que não consigo entender: se o compilador jura, porque é que os erros não são corrigidos? А?
Cópia completa do código sugerido. O erro é o mesmo que a variável estática não resolvida 'CCanvas::m_default_colors' prob1.mq5 21 9
Não tenho quaisquer erros. A construção é a mais recente.
Copiou o código sugerido na íntegra. O erro é o mesmo que a variável estática não resolvida 'CCanvas::m_default_colors' prob1.mq5 21 9