photo
+ Responder ao Tópico
Resultados de 1 a 1 de 1

Thread: OBJ_CHART Objeto Chart.

  1. #1 Fechar a publicação
    Senior Member jssuser's Avatar jssuser's Avatar
    Data de afiliação
    Aug 2018
    Postagens
    1,503
    Obrigado
    209
    Agradecimentos 787 Tempos em 476 Postagens
    AssinarAssinar
    subscritar: 0

    OBJ_CHART Objeto Chart.

    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);
    //---
    }
    Attached Images Attached Images  

    Though trading on financial markets involves high risk, it can still generate extra income in case you apply the right approach. By choosing a reliable broker such as InstaForex you get access to the international financial markets and open your way towards financial independence. You can sign up here.


  2. The Following User Says Thank You to jssuser For This Useful Post:

    Não registrado (1 )

+ Responder ao Tópico

Permissões de postagens

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts