PDA

View Full Version : OBJ_CHART Objeto Chart.



jssuser
15-03-2019, 02:05 PM
Observação

Coordenadas do ponto de ancoragem são em pixels. Você também pode selecionar uma ancoragem do bitmap no canto a partir do enumerador ENUM_BASE_CORNER.

Símbolo, período e escala podem ser selecionados para o objeto Chart. Escala de preço e modo de exibição de data também pode ser habilitado/desabilitado.

Exemplo

O seguinte script cria e move o objeto Chart no gráfico. Funções especiais têm sido desenvolvidas para criar e alterar as propriedades do objeto gráfico. Você pode utilizar estas funções "as is" em seus próprios aplicativos.



//--- descrição
#property description "Script cria objeto \"Chart\"."
//--- janela de exibição dos parâmetros de entrada durante inicialização do script
#property script_show_inputs
//--- entrada de parâmetros do script
input string InpName="Chart"; // Nome do objeto
input string InpSymbol="EURUSD"; // Símbolo
input ENUM_TIMEFRAMES InpPeriod=PERIOD_H1; // Período
input ENUM_BASE_CORNER InpCorner=CORNER_LEFT_UPPER; // Canto de ancoragem
input int InpScale=2; // Escala
input bool InpDateScale=true; // Exibição da escala de tempo
input bool InpPriceScale=true; // Exibição da escala de preço
input color InpColor=clrRed; // Cor da borda quando destacada
input ENUM_LINE_STYLE InpStyle=STYLE_DASHDOTDOT; // Estilo da linha quando destacada
input int InpPointWidth=1; // Tamanho do ponto para movimento
input bool InpBack=false; // Objeto de Fundo
input bool InpSelection=true; // Destaque para mover
input bool InpHidden=true; // Ocultar na lista de objeto
input long InpZOrder=0; // Prioridade para clique do mouse
//+------------------------------------------------------------------+
//| Criando objeto Chart |
//+------------------------------------------------------------------+
bool ObjectChartCreate(const long chart_ID=0, // ID do gráfico
const string name="Chart", // nome do objeto
const int sub_window=0, // índice da sub-janela
const string symbol="EURUSD", // símbolo
const ENUM_TIMEFRAMES period=PERIOD_H1, // período
const int x=0, // coordenada X
const int y=0, // coordenada Y
const int width=300, // largura
const int height=200, // altura
const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // canto de ancoragem
const int scale=2, // escala
const bool date_scale=true, // exibição escala de tempo
const bool price_scale=true, // exibição escala de preço
const color clr=clrRed, // a cor da borda quando destacada
const ENUM_LINE_STYLE style=STYLE_SOLID, // estilo da linha quando destacada
const int point_width=1, // mover tamanho do ponto
const bool back=false, // no fundo
const bool selection=false, // destaque para mover
const bool hidden=true, // ocultar na lista de objetos
const long z_order=0) // prioridade para clicar no mouse
{
//--- redefine o valor de erro
ResetLastError();
//--- criar objeto Chart
if(!ObjectCreate(chart_ID,name,OBJ_CHART,sub_windo w,0,0))
{
Print(__FUNCTION__,
": falha ao criar objeto \"Chart\"! Código de erro = ",GetLastError());
return(false);
}
//--- definir coordenadas do objeto
ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x );
ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y );
//--- definir tamanho do objeto
ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width );
ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,heigh t);
//--- determinar o canto do gráfico onde as coordenadas do ponto são definidas
ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corn er);
//--- definir o símbolo
ObjectSetString(chart_ID,name,OBJPROP_SYMBOL,symbo l);
//--- definir o período
ObjectSetInteger(chart_ID,name,OBJPROP_PERIOD,peri od);
//--- definir a escala
ObjectSetInteger(chart_ID,name,OBJPROP_CHART_SCALE ,scale);
//--- exibir (true) ou ocultar (false) a escala de tempo
ObjectSetInteger(chart_ID,name,OBJPROP_DATE_SCALE, date_scale);
//--- exibir (true) ou ocultar (false) a escala de preço
ObjectSetInteger(chart_ID,name,OBJPROP_PRICE_SCALE ,price_scale);
//--- definir a cor da borda quando o modo de destaque do objeto é habilitado
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir o estilo de linha quando o modo de destaque do objeto é habilitado
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style );
//--- definir o tamanho do ponto de ancoragem para movimentar o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,point _width);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- Habilitar (true) ou desabilitar (false) o modo de movimento da etiqueta pelo mouse
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE, selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,se lection);
//--- ocultar (true) ou exibir (false) o nome do objeto gráfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidd en);
//--- definir a prioridade para receber o evento com um clique do mouse no gráfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_or der);
//--- sucesso na execução
return(true);
}
//+------------------------------------------------------------------+
//| Definir o símbolo e período de tempo do objeto Chart |
//+------------------------------------------------------------------+
bool ObjectChartSetSymbolAndPeriod(const long chart_ID=0, // ID do gráfico (não objeto de um Gráfico)
const string name="Chart", // nome do objeto
const string symbol="EURUSD", // símbolo
const ENUM_TIMEFRAMES period=PERIOD_H1) // período de tempo
{
//--- redefine o valor de erro
ResetLastError();
//--- definir símbolo e período de tempo do objeto Chart
if(!ObjectSetString(chart_ID,name,OBJPROP_SYMBOL,s ymbol))
{
Print(__FUNCTION__,
": falha para definir o símbolo do objeto \"Chart\"! Código de erro = ",GetLastError());
return(false);
}
if(!ObjectSetInteger(chart_ID,name,OBJPROP_PERIOD, period))
{
Print(__FUNCTION__,
": falha para definir o símbolo do objeto \"Chart\"! Código de erro = ",GetLastError());
return(false);
}
//--- sucesso na execução
return(true);
}
//+------------------------------------------------------------------+
//| Mover objeto Chart |
//+------------------------------------------------------------------+
bool ObjectChartMove(const long chart_ID=0, // ID do gráfico (não objeto de um Gráfico)
const string name="Chart", // nome do objeto
const int x=0, // coordenada X
const int y=0) // coordenada Y
{
//--- redefine o valor de erro
ResetLastError();
//--- mover o objeto
if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTAN CE,x))
{
Print(__FUNCTION__,
": falha ao mover coordenada X do objeto \"Chart\"! Código de erro = ",GetLastError());
return(false);
}
if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTAN CE,y))
{
Print(__FUNCTION__,
": falha ao mover coordenada Y do objeto \"Chart\"! Código de erro = ",GetLastError());
return(false);
}
//--- sucesso na execução
return(true);
}
//+------------------------------------------------------------------+
//| Alterar o tamanho do objeto Chart |
//+------------------------------------------------------------------+
bool ObjectChartChangeSize(const long chart_ID=0, // ID do gráfico (não objeto de um Gráfico)
const string name="Chart", // nome do objeto
const int width=300, // largura
const int height=200) // altura
{
//--- redefine o valor de erro
ResetLastError();
//--- alterar o tamanho do objeto
if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,w idth))
{
Print(__FUNCTION__,
": falha ao alterar a largura do objeto \"Chart\" ! Código de erro = ",GetLastError());
return(false);
}
if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,h eight))
{
Print(__FUNCTION__,
": falha ao alterar a altura do objeto \"Chart\" ! Código de erro = ",GetLastError());
return(false);
}
//--- sucesso na execução
return(true);
}
//+------------------------------------------------------------------+
//| Retorno do ID do objeto Chart |
//+------------------------------------------------------------------+
long ObjectChartGetID(const long chart_ID=0, // ID do gráfico (não objeto de um Gráfico)
const string name="Chart") // nome do objeto
{
//--- preparar a variável para obter o ID do objeto Chart
long id=-1;
//--- redefine o valor de erro
ResetLastError();
//--- obter ID
if(!ObjectGetInteger(chart_ID,name,OBJPROP_CHART_I D,0,id))
{
Print(__FUNCTION__,
": falha ao obter o ID do objeto \"Chart\"! Código de erro = ",GetLastError());
}
//--- retorno do resultado
return(id);
}
//+------------------------------------------------------------------+
//| Deletar o objeto Chart |
//+------------------------------------------------------------------+
bool ObjectChartDelete(const long chart_ID=0, // ID do gráfico (não objeto de um Gráfico)
const string name="Chart") // nome do objeto
{
//--- redefine o valor de erro
ResetLastError();
//--- excluir o botão
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao deletar objeto \"Chart\"! Código de erro = ",GetLastError());
return(false);
}
//--- sucesso na execução
return(true);
}
//+------------------------------------------------------------------+
//| Programa Script da função start (iniciar) |
//+------------------------------------------------------------------+
void OnStart()
{
//--- obter o número de símbolos na Observação do Mercado
int symbols=SymbolsTotal(true);
//--- verificar se o símbolo com um nome especifico está presente na lista de símbolo
bool exist=false;
for(int i=0;i<symbols;i++)
if(InpSymbol==SymbolName(i,true))
{
exist=true;
break;
}
if(!exist)
{
Print("Erro! ",InpSymbol," símbolo não está presente na \"Observação do Mercado\"!");
return;
}
//--- verificar a validade dos parâmetros de entrada
if(InpScale<0 || InpScale>5)
{
Print("Erro! Valores incorretos dos parâmetros de entrada!");
return;
}

//--- tamanho da janela do gráfico
long x_distance;
long y_distance;
//--- definir tamanho da janela
if(!ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0,x_di stance))
{
Print("Falha ao obter a largura do gráfico! Código de erro = ",GetLastError());
return;
}
if(!ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0,y_d istance))
{
Print("Falha ao obter a altura do gráfico! Código de erro = ",GetLastError());
return;
}
//--- definir as coordenadas do objeto gráfico e seu tamanho
int x=(int)x_distance/16;
int y=(int)y_distance/16;
int x_size=(int)x_distance*7/16;
int y_size=(int)y_distance*7/16;
//--- criar objeto Chart
if(!ObjectChartCreate(0,InpName,0,InpSymbol,InpPer iod,x,y,x_size,y_size,InpCorner,InpScale,InpDateSc ale,
InpPriceScale,InpColor,InpStyle,InpPointWidth,InpB ack,InpSelection,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o gráfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- estender objeto Chart
int steps=(int)MathMin(x_distance*7/16,y_distance*7/16);
for(int i=0;i<steps;i++)
{
//--- redimensionar
x_size+=1;
y_size+=1;
if(!ObjectChartChangeSize(0,InpName,x_size,y_size) )
return;
//--- verificar se o funcionamento do script foi desativado a força
if(IsStopped())
return;
//--- redesenhar o gráfico e esperar por 0.01 segundos
ChartRedraw();
Sleep(10);
}
//--- meio segundo de atraso
Sleep(500);
//--- alterar período de tempo do gráfico
if(!ObjectChartSetSymbolAndPeriod(0,InpName,InpSym bol,PERIOD_M1))
return;
ChartRedraw();
//--- três segundos de atraso
Sleep(3000);
//--- excluir o objeto
ObjectChartDelete(0,InpName);
ChartRedraw();
//--- esperar por um segundo
Sleep(1000);
//---
}